]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-bootp.c
remove redundant ND_TCHECK, let GET_ routines handle checks
[tcpdump] / print-bootp.c
index 28aa27fb598a5f8b361f69c3c1792f191fd1887e..1ee979f5d2e02ff05c31d07c5c1a070cf59efeb9 100644 (file)
@@ -283,16 +283,13 @@ bootp_print(netdissect_options *ndo,
 
        ndo->ndo_protocol = "bootp";
        bp = (const struct bootp *)cp;
-       ND_TCHECK_1(bp->bp_op);
        bp_op = GET_U_1(bp->bp_op);
        ND_PRINT("BOOTP/DHCP, %s",
                  tok2str(bootp_op_values, "unknown (0x%02x)", bp_op));
 
-       ND_TCHECK_1(bp->bp_hlen);
        bp_htype = GET_U_1(bp->bp_htype);
        bp_hlen = GET_U_1(bp->bp_hlen);
        if (bp_htype == 1 && bp_hlen == 6 && bp_op == BOOTPREQUEST) {
-               ND_TCHECK_6(bp->bp_chaddr);
                ND_PRINT(" from %s", GET_ETHERADDR_STRING(bp->bp_chaddr));
        }
 
@@ -319,40 +316,33 @@ bootp_print(netdissect_options *ndo,
        if (GET_BE_U_2(bp->bp_secs))
                ND_PRINT(", secs %u", GET_BE_U_2(bp->bp_secs));
 
-       ND_TCHECK_2(bp->bp_flags);
        ND_PRINT(", Flags [%s]",
                  bittok2str(bootp_flag_values, "none", GET_BE_U_2(bp->bp_flags)));
        if (ndo->ndo_vflag > 1)
                ND_PRINT(" (0x%04x)", GET_BE_U_2(bp->bp_flags));
 
        /* Client's ip address */
-       ND_TCHECK_4(bp->bp_ciaddr);
        if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_ciaddr))
                ND_PRINT("\n\t  Client-IP %s", GET_IPADDR_STRING(bp->bp_ciaddr));
 
        /* 'your' ip address (bootp client) */
-       ND_TCHECK_4(bp->bp_yiaddr);
        if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_yiaddr))
                ND_PRINT("\n\t  Your-IP %s", GET_IPADDR_STRING(bp->bp_yiaddr));
 
        /* Server's ip address */
-       ND_TCHECK_4(bp->bp_siaddr);
        if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_siaddr))
                ND_PRINT("\n\t  Server-IP %s", GET_IPADDR_STRING(bp->bp_siaddr));
 
        /* Gateway's ip address */
-       ND_TCHECK_4(bp->bp_giaddr);
        if (GET_IPV4_TO_NETWORK_ORDER(bp->bp_giaddr))
                ND_PRINT("\n\t  Gateway-IP %s", GET_IPADDR_STRING(bp->bp_giaddr));
 
        /* Client's Ethernet address */
        if (bp_htype == 1 && bp_hlen == 6) {
-               ND_TCHECK_6(bp->bp_chaddr);
                ND_PRINT("\n\t  Client-Ethernet-Address %s", GET_ETHERADDR_STRING(bp->bp_chaddr));
        }
 
-       ND_TCHECK_1(bp->bp_sname);              /* check first char only */
-       if (GET_U_1(bp->bp_sname)) {
+       if (GET_U_1(bp->bp_sname)) {    /* get first char only */
                ND_PRINT("\n\t  sname \"");
                if (nd_printztn(ndo, bp->bp_sname, (u_int)sizeof(bp->bp_sname),
                                ndo->ndo_snapend) == 0) {
@@ -362,8 +352,7 @@ bootp_print(netdissect_options *ndo,
                }
                ND_PRINT("\"");
        }
-       ND_TCHECK_1(bp->bp_file);               /* check first char only */
-       if (GET_U_1(bp->bp_file)) {
+       if (GET_U_1(bp->bp_file)) {     /* get first char only */
                ND_PRINT("\n\t  file \"");
                if (nd_printztn(ndo, bp->bp_file, (u_int)sizeof(bp->bp_file),
                                ndo->ndo_snapend) == 0) {
@@ -605,19 +594,18 @@ rfc1048_print(netdissect_options *ndo,
                        continue;
                if (tag == TAG_END && ndo->ndo_vflag < 3)
                        return;
-               cp = tok2str(tag2str, "?T%u", tag);
+               cp = tok2str(tag2str, "?Unknown", tag);
                c = *cp++;
 
                if (tag == TAG_PAD || tag == TAG_END)
                        len = 0;
                else {
                        /* Get the length; check for truncation */
-                       ND_TCHECK_1(bp);
                        len = GET_U_1(bp);
                        bp++;
                }
 
-               ND_PRINT("\n\t    %s Option %u, length %u%s", cp, tag, len,
+               ND_PRINT("\n\t    %s (%u), length %u%s", cp, tag, len,
                          len > 0 ? ": " : "");
 
                if (tag == TAG_PAD && ndo->ndo_vflag > 2) {
@@ -643,15 +631,15 @@ rfc1048_print(netdissect_options *ndo,
                if (tag == TAG_PARM_REQUEST) {
                        idx = 0;
                        while (len > 0) {
-                               cp = tok2str(tag2str, "?Option %u",
-                                            GET_U_1(bp));
+                               uint8_t innertag = GET_U_1(bp);
                                bp++;
                                len--;
+                               cp = tok2str(tag2str, "?Unknown", innertag);
                                if (idx % 4 == 0)
                                        ND_PRINT("\n\t      ");
                                else
                                        ND_PRINT(", ");
-                               ND_PRINT("%s", cp + 1);
+                               ND_PRINT("%s (%u)", cp + 1, innertag);
                                idx++;
                        }
                        continue;