]> The Tcpdump Group git mirrors - tcpdump/commitdiff
fixes from Jamal Hadi Salim <[email protected]> for forces: SPARSE data (per RFC...
authorMichael Richardson <[email protected]>
Thu, 29 Mar 2012 14:08:35 +0000 (16:08 +0200)
committerMichael Richardson <[email protected]>
Thu, 29 Mar 2012 14:08:35 +0000 (16:08 +0200)
forces.h
print-forces.c

index ed497d41d7b1cd1c991e0f98bac71075c9f994c6..d41475f908aeadef0ed8be6a19dec31a4607b77d 100644 (file)
--- a/forces.h
+++ b/forces.h
@@ -308,7 +308,7 @@ static const struct optlv_h OPTLV_msg[F_OP_MAX + 1] = {
        /* F_OP_GET */ {ZERO_TTLV, 0, " Get", recpdoptlv_print},
        /* F_OP_GETPROP */ {ZERO_TTLV, 0, " GetProp", recpdoptlv_print},
        /* F_OP_GETRESP */
-           {TTLV_T2, B_FULLD | B_RESTV, " GetResp", recpdoptlv_print},
+           {TTLV_T2, B_FULLD | B_SPARD | B_RESTV, " GetResp", recpdoptlv_print},
        /* F_OP_GETPRESP */
            {TTLV_T2, B_FULLD | B_RESTV, " GetPropResp", recpdoptlv_print},
        /* F_OP_REPORT */
index 033580e51bc2ac8a6e0227d68d71d9743ab5c14b..8384875f34e95ba9e51b8ed0a2c56475a60be0f9 100644 (file)
@@ -113,24 +113,24 @@ sdatailv_print(register const u_char * pptr, register u_int len,
                printf("Error: BAD SPARSEDATA-TLV!\n");
                return -1;
        }
-       rlen = len - ILV_HDRL;
+       rlen = len;
        indent += 1;
        while (rlen != 0) {
+               char *ib = indent_pr(indent, 1);
+               register const u_char *tdp = (u_char *) ILV_DATA(ilv);
                TCHECK(*ilv);
                invilv = ilv_valid(ilv, rlen);
                if (invilv) {
-                       printf("Error: BAD ILV!\n");
-                       return -1;
-               }
-               if (vflag >= 3) {
-                       register const u_char *tdp = (u_char *) ILV_DATA(ilv);
-                       char *ib = indent_pr(indent, 1);
-                       printf("\n%s SPARSEDATA: type %x length %d\n", &ib[1],
-                              EXTRACT_32BITS(&ilv->type),
-                              EXTRACT_32BITS(&ilv->length));
                        printf("%s[", &ib[1]);
                        hex_print_with_offset(ib, tdp, rlen, 0);
                        printf("\n%s]\n", &ib[1]);
+                       return -1;
+               }
+               if (vflag >= 3) {
+                       int ilvl = EXTRACT_32BITS(&ilv->length);
+                       printf("\n%s ILV: type %x length %d\n", &ib[1],
+                              EXTRACT_32BITS(&ilv->type), ilvl);
+                       hex_print_with_offset("\t\t[", tdp, ilvl-ILV_HDRL, 0);
                }
 
                ilv = GO_NXT_ILV(ilv, rlen);
@@ -1016,7 +1016,7 @@ void forces_print(register const u_char * pptr, register u_int len)
        if (vflag >= 1) {
                printf("\n\tForCES Version %d len %uB flags 0x%08x ",
                       ForCES_V(fhdr), mlen, flg_raw);
-               printf("\n\tSrcID 0x%x(%s) DstID 0x%x(%s) Correlator 0x%" PRIu64,
+               printf("\n\tSrcID 0x%x(%s) DstID 0x%x(%s) Correlator 0x%lx",
                       ForCES_SID(fhdr), ForCES_node(ForCES_SID(fhdr)),
                       ForCES_DID(fhdr), ForCES_node(ForCES_DID(fhdr)),
                       EXTRACT_64BITS(fhdr->fm_cor));