]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-ripng.c
Revert partially the commit 21b1273
[tcpdump] / print-ripng.c
index a253655ef3319f5a2b8b0847f2955a516cf55faa..e030c000cdce74939e4be3b2bddb0b39dfddbbec 100644 (file)
@@ -65,7 +65,7 @@
 #define        RIP6_RESPONSE   2
 
 struct netinfo6 {
-       struct in6_addr rip6_dest;
+       nd_ipv6         rip6_dest;
        nd_uint16_t     rip6_tag;
        nd_uint8_t      rip6_plen;
        nd_uint8_t      rip6_metric;
@@ -85,13 +85,11 @@ struct      rip6 {
 
 #define        HOPCNT_INFINITY6        16
 
-#if !defined(IN6_IS_ADDR_UNSPECIFIED) && !defined(_MSC_VER) /* MSVC inline */
-static int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *addr)
+static int ND_IN6_IS_ADDR_UNSPECIFIED(const nd_ipv6 *addr)
 {
-    static const struct in6_addr in6addr_any;        /* :: */
-    return (memcmp(addr, &in6addr_any, sizeof(*addr)) == 0);
+    static const nd_ipv6 in6addr_any_val = { 0 };        /* :: */
+    return (memcmp(addr, &in6addr_any_val, sizeof(*addr)) == 0);
 }
-#endif
 
 static int
 rip6_entry_print(netdissect_options *ndo, const struct netinfo6 *ni, u_int metric)
@@ -99,8 +97,9 @@ rip6_entry_print(netdissect_options *ndo, const struct netinfo6 *ni, u_int metri
        int l;
        uint16_t tag;
 
-       l = ND_PRINT("%s/%u", ip6addr_string(ndo, &ni->rip6_dest), EXTRACT_U_1(ni->rip6_plen));
-       tag = EXTRACT_BE_U_2(ni->rip6_tag);
+       l = ND_PRINT("%s/%u", GET_IP6ADDR_STRING(ni->rip6_dest),
+                    GET_U_1(ni->rip6_plen));
+       tag = GET_BE_U_2(ni->rip6_tag);
        if (tag)
                l += ND_PRINT(" [%u]", tag);
        if (metric)
@@ -117,8 +116,8 @@ ripng_print(netdissect_options *ndo, const u_char *dat, unsigned int length)
        unsigned int length_left;
        u_int j;
 
-       ND_TCHECK_1(rp->rip6_cmd);
-       cmd = EXTRACT_U_1(rp->rip6_cmd);
+       ndo->ndo_protocol = "ripng";
+       cmd = GET_U_1(rp->rip6_cmd);
        switch (cmd) {
 
        case RIP6_REQUEST:
@@ -129,8 +128,8 @@ ripng_print(netdissect_options *ndo, const u_char *dat, unsigned int length)
                j = length_left / sizeof(*ni);
                if (j == 1) {
                        ND_TCHECK_SIZE(rp->rip6_nets);
-                       if (EXTRACT_U_1(rp->rip6_nets->rip6_metric) == HOPCNT_INFINITY6
-                           &&  IN6_IS_ADDR_UNSPECIFIED(&rp->rip6_nets->rip6_dest)) {
+                       if (GET_U_1(rp->rip6_nets->rip6_metric) == HOPCNT_INFINITY6
+                           && ND_IN6_IS_ADDR_UNSPECIFIED(&rp->rip6_nets->rip6_dest)) {
                                ND_PRINT(" ripng-req dump");
                                break;
                        }
@@ -168,7 +167,7 @@ ripng_print(netdissect_options *ndo, const u_char *dat, unsigned int length)
                                ND_PRINT("\n\t");
                        else
                                ND_PRINT(" ");
-                       rip6_entry_print(ndo, ni, EXTRACT_U_1(ni->rip6_metric));
+                       rip6_entry_print(ndo, ni, GET_U_1(ni->rip6_metric));
                }
                if (length_left != 0)
                        goto trunc;
@@ -177,12 +176,11 @@ ripng_print(netdissect_options *ndo, const u_char *dat, unsigned int length)
                ND_PRINT(" ripng-%u ?? %u", cmd, length);
                break;
        }
-       ND_TCHECK_1(rp->rip6_vers);
-       if (EXTRACT_U_1(rp->rip6_vers) != RIP6_VERSION)
-               ND_PRINT(" [vers %u]", EXTRACT_U_1(rp->rip6_vers));
+       if (GET_U_1(rp->rip6_vers) != RIP6_VERSION)
+               ND_PRINT(" [vers %u]", GET_U_1(rp->rip6_vers));
        return;
 
 trunc:
-       ND_PRINT("[|ripng]");
+       nd_print_trunc(ndo);
        return;
 }