]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-igrp.c
Use more the EXTRACT_U_1() macro (40/n)
[tcpdump] / print-igrp.c
index fbb313427c72026ce5795ec508fe9618e33c48a7..6cd4f69e8c6f600499970c8fae6e5e13f298af9b 100644 (file)
  * Initial contribution from Francis Dupont ([email protected])
  */
 
-#define NETDISSECT_REWORKED
+/* \summary: Interior Gateway Routing Protocol (IGRP) printer */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#include <tcpdump-stdinc.h>
+#include <netdissect-stdinc.h>
 
-#include "interface.h"
-#include "extract.h"                   /* must come after interface.h */
+#include "netdissect.h"
+#include "extract.h"
 
 /* Cisco IGRP definitions */
 
@@ -65,7 +66,7 @@ struct igrprte {
 #define IGRP_RTE_SIZE  14      /* don't believe sizeof ! */
 
 static void
-igrp_entry_print(netdissect_options *ndo, register struct igrprte *igr,
+igrp_entry_print(netdissect_options *ndo, register const struct igrprte *igr,
     register int is_interior, register int is_exterior)
 {
        register u_int delay, bandwidth;
@@ -81,12 +82,12 @@ igrp_entry_print(netdissect_options *ndo, register struct igrprte *igr,
                ND_PRINT((ndo, " %d.%d.%d.0", igr->igr_net[0],
                    igr->igr_net[1], igr->igr_net[2]));
 
-       delay = EXTRACT_24BITS(igr->igr_dly);
-       bandwidth = EXTRACT_24BITS(igr->igr_bw);
+       delay = EXTRACT_BE_U_3(igr->igr_dly);
+       bandwidth = EXTRACT_BE_U_3(igr->igr_bw);
        metric = bandwidth + delay;
        if (metric > 0xffffff)
                metric = 0xffffff;
-       mtu = EXTRACT_16BITS(igr->igr_mtu);
+       mtu = EXTRACT_BE_U_2(igr->igr_mtu);
 
        ND_PRINT((ndo, " d=%d b=%d r=%d l=%d M=%d mtu=%d in %d hops",
            10 * delay, bandwidth == 0 ? 0 : 10000000 / bandwidth,
@@ -103,25 +104,25 @@ static const struct tok op2str[] = {
 void
 igrp_print(netdissect_options *ndo, register const u_char *bp, u_int length)
 {
-       register struct igrphdr *hdr;
-       register u_char *cp;
+       register const struct igrphdr *hdr;
+       register const u_char *cp;
        u_int nint, nsys, next;
 
-       hdr = (struct igrphdr *)bp;
-       cp = (u_char *)(hdr + 1);
+       hdr = (const struct igrphdr *)bp;
+       cp = (const u_char *)(hdr + 1);
        ND_PRINT((ndo, "igrp:"));
 
        /* Header */
        ND_TCHECK(*hdr);
-       nint = EXTRACT_16BITS(&hdr->ig_ni);
-       nsys = EXTRACT_16BITS(&hdr->ig_ns);
-       next = EXTRACT_16BITS(&hdr->ig_nx);
+       nint = EXTRACT_BE_U_2(&hdr->ig_ni);
+       nsys = EXTRACT_BE_U_2(&hdr->ig_ns);
+       next = EXTRACT_BE_U_2(&hdr->ig_nx);
 
        ND_PRINT((ndo, " %s V%d edit=%d AS=%d (%d/%d/%d)",
            tok2str(op2str, "op-#%d", IGRP_OP(hdr->ig_vop)),
            IGRP_V(hdr->ig_vop),
            hdr->ig_ed,
-           EXTRACT_16BITS(&hdr->ig_as),
+           EXTRACT_BE_U_2(&hdr->ig_as),
            nint,
            nsys,
            next));
@@ -130,15 +131,15 @@ igrp_print(netdissect_options *ndo, register const u_char *bp, u_int length)
        while (length >= IGRP_RTE_SIZE) {
                if (nint > 0) {
                        ND_TCHECK2(*cp, IGRP_RTE_SIZE);
-                       igrp_entry_print(ndo, (struct igrprte *)cp, 1, 0);
+                       igrp_entry_print(ndo, (const struct igrprte *)cp, 1, 0);
                        --nint;
                } else if (nsys > 0) {
                        ND_TCHECK2(*cp, IGRP_RTE_SIZE);
-                       igrp_entry_print(ndo, (struct igrprte *)cp, 0, 0);
+                       igrp_entry_print(ndo, (const struct igrprte *)cp, 0, 0);
                        --nsys;
                } else if (next > 0) {
                        ND_TCHECK2(*cp, IGRP_RTE_SIZE);
-                       igrp_entry_print(ndo, (struct igrprte *)cp, 0, 1);
+                       igrp_entry_print(ndo, (const struct igrprte *)cp, 0, 1);
                        --next;
                } else {
                        ND_PRINT((ndo, " [extra bytes %d]", length));