]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-someip.c
CMake: Fix the comment about versions. [skip ci]
[tcpdump] / print-someip.c
index 7d40602d413482bca2fbbeae5c3adaa4b06b6ae9..d21219aeadfba0e87e6bf07fc92b51feb616e5d6 100644 (file)
 
 /* \summary: Autosar SOME/IP Protocol printer */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include "netdissect-stdinc.h"
 #include "netdissect.h"
 #include "extract.h"
-#include "udp.h"
 
 /*
  * SOMEIP Header (R19-11)
@@ -77,7 +74,7 @@ static const struct tok return_code_values[] = {
 };
 
 void
-someip_print(netdissect_options *ndo, const u_char *bp, u_int len)
+someip_print(netdissect_options *ndo, const u_char *bp, const u_int len)
 {
     uint32_t message_id;
     uint16_t service_id;
@@ -93,10 +90,10 @@ someip_print(netdissect_options *ndo, const u_char *bp, u_int len)
     uint8_t return_code;
 
     ndo->ndo_protocol = "someip";
+    nd_print_protocol_caps(ndo);
 
     if (len < 16) {
-        nd_print_trunc(ndo);
-        return;
+        goto invalid;
     }
 
     message_id = GET_BE_U_4(bp);
@@ -104,33 +101,39 @@ someip_print(netdissect_options *ndo, const u_char *bp, u_int len)
     event_flag = (message_id & 0x00008000) >> 15;
     method_or_event_id = message_id & 0x00007FFF;
     bp += 4;
+    ND_PRINT(", service %u, %s %u",
+             service_id, event_flag ? "event" : "method", method_or_event_id);
 
     message_len = GET_BE_U_4(bp);
     bp += 4;
+    ND_PRINT(", len %u", message_len);
 
     request_id = GET_BE_U_4(bp);
     client_id = request_id >> 16;
     session_id = request_id & 0x0000FFFF;
     bp += 4;
+    ND_PRINT(", client %u, session %u", client_id, session_id);
 
     protocol_version = GET_U_1(bp);
     bp += 1;
+    ND_PRINT(", pver %u", protocol_version);
 
     interface_version = GET_U_1(bp);
     bp += 1;
+    ND_PRINT(", iver %u", interface_version);
 
     message_type = GET_U_1(bp);
     bp += 1;
+    ND_PRINT(", msgtype %s",
+             tok2str(message_type_values, "Unknown", message_type));
 
     return_code = GET_U_1(bp);
     bp += 1;
-
-    ND_PRINT("SOMEIP, service %u, %s %u, len %u, client %u, session %u, "
-            "pver %u, iver %u, msgtype %s, retcode %s\n",
-            service_id, event_flag ? "event" : "method", method_or_event_id,
-            message_len, client_id, session_id, protocol_version,
-            interface_version,
-            tok2str(message_type_values, "Unknown", message_type),
+    ND_PRINT(", retcode %s\n",
             tok2str(return_code_values, "Unknown", return_code));
+
     return;
+
+invalid:
+    nd_print_invalid(ndo);
 }