]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-vqp.c
Do the dump file Capsicum stuff in a common routine.
[tcpdump] / print-vqp.c
index 3245b33206d022824f3d7ebd57df2d3a02bea4b8..ce3572ac520898bb5fc5d281ae7f5b32a3334194 100644 (file)
  * Original code by Carles Kishimoto <[email protected]>
  */
 
+#define NETDISSECT_REWORKED
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
 #include <tcpdump-stdinc.h>
 
-#include "netdissect.h"
+#include "interface.h"
 #include "extract.h"
 #include "addrtoname.h"
 
  */
 
 struct vqp_common_header_t {
-    u_int8_t version;
-    u_int8_t msg_type;
-    u_int8_t error_code;
-    u_int8_t nitems;
-    u_int8_t sequence[4];
+    uint8_t version;
+    uint8_t msg_type;
+    uint8_t error_code;
+    uint8_t nitems;
+    uint8_t sequence[4];
 };
 
 struct vqp_obj_tlv_t {
-    u_int8_t obj_type[4];
-    u_int8_t obj_length[2];
+    uint8_t obj_type[4];
+    uint8_t obj_length[2];
 };
 
 #define VQP_OBJ_REQ_JOIN_PORT  0x01
@@ -103,10 +104,10 @@ vqp_print(netdissect_options *ndo, register const u_char *pptr, register u_int l
     const struct vqp_obj_tlv_t *vqp_obj_tlv;
 
     const u_char *tptr;
-    u_int16_t vqp_obj_len;
-    u_int32_t vqp_obj_type;
+    uint16_t vqp_obj_len;
+    uint32_t vqp_obj_type;
     int tlen;
-    u_int8_t nitems;
+    uint8_t nitems;
 
     tptr=pptr;
     tlen = len;
@@ -166,24 +167,23 @@ vqp_print(netdissect_options *ndo, register const u_char *pptr, register u_int l
         }
 
         /* did we capture enough for fully decoding the object ? */
-        if (!ND_TTEST2(*tptr, vqp_obj_len))
-            goto trunc;
+        ND_TCHECK2(*tptr, vqp_obj_len);
 
         switch(vqp_obj_type) {
        case VQP_OBJ_IP_ADDRESS:
-            ND_PRINT((ndo, "%s (0x%08x)", ipaddr_string(tptr), EXTRACT_32BITS(tptr)));
+            ND_PRINT((ndo, "%s (0x%08x)", ipaddr_string(ndo, tptr), EXTRACT_32BITS(tptr)));
             break;
             /* those objects have similar semantics - fall through */
         case VQP_OBJ_PORT_NAME:
        case VQP_OBJ_VLAN_NAME:
        case VQP_OBJ_VTP_DOMAIN:
        case VQP_OBJ_ETHERNET_PKT:
-            safeputs((const char *)tptr, vqp_obj_len);
+            safeputs(ndo, tptr, vqp_obj_len);
             break;
             /* those objects have similar semantics - fall through */
        case VQP_OBJ_MAC_ADDRESS:
        case VQP_OBJ_MAC_NULL:
-             ND_PRINT((ndo, "%s", etheraddr_string(tptr)));
+             ND_PRINT((ndo, "%s", etheraddr_string(ndo, tptr)));
               break;
         default:
             if (ndo->ndo_vflag <= 1)