]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-geonet.c
NTP: Use tstr for truncation indicator.
[tcpdump] / print-geonet.c
index 61441a0bf3b484961ec62f1562441cd75f5e9d98..9da89bfe81dc8b4e443cfe8ff3422e2cee7c1dce 100644 (file)
@@ -86,6 +86,8 @@ print_long_pos_vector(netdissect_options *ndo,
 {
        uint32_t lat, lon;
 
+       if (!ND_TTEST2(*bp, GEONET_ADDR_LEN))
+               return (-1);
        ND_PRINT((ndo, "GN_ADDR:%s ", linkaddr_string (ndo, bp, 0, GEONET_ADDR_LEN)));
 
        if (!ND_TTEST2(*(bp+12), 8))
@@ -103,7 +105,8 @@ print_long_pos_vector(netdissect_options *ndo,
  * to the geonet header of the packet.
  */
 void
-geonet_print(netdissect_options *ndo, const u_char *eth, const u_char *bp, u_int length)
+geonet_print(netdissect_options *ndo, const u_char *bp, u_int length,
+            const struct lladdr_info *src)
 {
        int version;
        int next_hdr;
@@ -115,13 +118,16 @@ geonet_print(netdissect_options *ndo, const u_char *eth, const u_char *bp, u_int
        const char *hdr_type_txt = "Unknown";
        int hdr_size = -1;
 
-       ND_PRINT((ndo, "GeoNet src:%s; ", etheraddr_string(ndo, eth+6)));
+       ND_PRINT((ndo, "GeoNet "));
+       if (src != NULL)
+               ND_PRINT((ndo, "src:%s", (src->addr_string)(ndo, src->addr)));
+       ND_PRINT((ndo, "; "));
 
        /* Process Common Header */
        if (length < 36)
                goto invalid;
 
-       ND_TCHECK2(*bp, 7);
+       ND_TCHECK2(*bp, 8);
        version = bp[0] >> 4;
        next_hdr = bp[0] & 0x0f;
        hdr_type = bp[1] >> 4;