]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-babel.c
Merge remote-tracking branch 'upstream/master'
[tcpdump] / print-babel.c
index e787f8b2fc8c4ae0f8c4d92dcaeef42d63ade073..5fd7c21fbc746c36d0c0b117dbbd6b52a3fb13d5 100644 (file)
@@ -81,6 +81,8 @@ babel_print(const u_char *cp, u_int length) {
 #define MESSAGE_UPDATE 8
 #define MESSAGE_REQUEST 9
 #define MESSAGE_MH_REQUEST 10
+#define MESSAGE_TSPC 11
+#define MESSAGE_HMAC 12
 
 static const char *
 format_id(const u_char *id)
@@ -199,7 +201,7 @@ babel_print_v2(const u_char *cp, u_int length) {
     i = 0;
     while(i < bodylen) {
         const u_char *message;
-        u_char type, len;
+        u_int type, len;
 
         message = cp + 4 + i;
         TCHECK2(*message, 2);
@@ -394,6 +396,29 @@ babel_print_v2(const u_char *cp, u_int length) {
             }
         }
             break;
+        case MESSAGE_TSPC :
+            if(!vflag)
+                printf(" tspc");
+            else {
+                printf("\n\tTS/PC ");
+                if(len < 6) goto corrupt;
+                printf("timestamp %u packetcounter %u", EXTRACT_32BITS (message + 4),
+                       EXTRACT_16BITS(message + 2));
+            }
+            break;
+        case MESSAGE_HMAC : {
+            if(!vflag)
+                printf(" hmac");
+            else {
+                unsigned j;
+                printf("\n\tHMAC ");
+                if(len < 18) goto corrupt;
+                printf("key-id %u digest-%u ", EXTRACT_16BITS(message + 2), len - 2);
+                for (j = 0; j < len - 2; j++)
+                    printf ("%02X", message[4 + j]);
+            }
+        }
+            break;
         default:
             if(!vflag)
                 printf(" unknown");