]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-mobility.c
change make check to work with POSIX shell
[tcpdump] / print-mobility.c
index 8cb32c18a0da8a89e757f44ffe45344c38b3fb5f..feb4c98fea36def9b941e53567704f9e68cd6ec4 100644 (file)
 
 #include <netdissect-stdinc.h>
 
-#include "ip6.h"
 #include "netdissect.h"
 #include "addrtoname.h"
 #include "extract.h"
 
+#include "ip6.h"
+
 static const char tstr[] = "[|MOBILITY]";
 
 /* Mobility header */
@@ -149,6 +150,7 @@ mobility_opt_print(netdissect_options *ndo,
                                goto trunc;
                        }
                        /* units of 4 secs */
+                       ND_TCHECK_16BITS(&bp[i+2]);
                        ND_PRINT((ndo, "(refresh: %u)",
                                EXTRACT_16BITS(&bp[i+2]) << 2));
                        break;
@@ -157,6 +159,7 @@ mobility_opt_print(netdissect_options *ndo,
                                ND_PRINT((ndo, "(altcoa: trunc)"));
                                goto trunc;
                        }
+                       ND_TCHECK_128BITS(&bp[i+2]);
                        ND_PRINT((ndo, "(alt-CoA: %s)", ip6addr_string(ndo, &bp[i+2])));
                        break;
                case IP6MOPT_NONCEID:
@@ -164,6 +167,8 @@ mobility_opt_print(netdissect_options *ndo,
                                ND_PRINT((ndo, "(ni: trunc)"));
                                goto trunc;
                        }
+                       ND_TCHECK_16BITS(&bp[i+2]);
+                       ND_TCHECK_16BITS(&bp[i+4]);
                        ND_PRINT((ndo, "(ni: ho=0x%04x co=0x%04x)",
                                EXTRACT_16BITS(&bp[i+2]),
                                EXTRACT_16BITS(&bp[i+4])));