seeing the key-id in particular helped me debug a problem here.
ok?
Index: ospf.h
===================================================================
RCS file: /cvs/src/usr.sbin/tcpdump/ospf.h,v
retrieving revision 1.10
diff -u -p -r1.10 ospf.h
--- ospf.h 4 Aug 2010 16:47:01 -0000 1.10
+++ ospf.h 10 Apr 2019 22:27:29 -0000
@@ -220,6 +220,13 @@ struct ospfhdr {
} ospf_un ;
} ;
+struct ospf_md5_authdata {
+ uint16_t auth_md5_offset;
+ uint8_t auth_keyid;
+ uint8_t auth_len;
+ uint32_t auth_seq;
+};
+
#define ospf_hello ospf_un.un_hello
#define ospf_db ospf_un.un_db
#define ospf_lsr ospf_un.un_lsr
Index: print-ospf.c
===================================================================
RCS file: /cvs/src/usr.sbin/tcpdump/print-ospf.c,v
retrieving revision 1.20
diff -u -p -r1.20 print-ospf.c
--- print-ospf.c 16 Nov 2015 00:16:39 -0000 1.20
+++ print-ospf.c 10 Apr 2019 22:27:29 -0000
@@ -32,6 +32,7 @@
#include <ctype.h>
#include <stdio.h>
+#include <string.h>
#include "interface.h"
#include "addrtoname.h"
@@ -554,9 +555,20 @@ ospf_print(const u_char *bp, u_int lengt
printf("\"");
break;
- case OSPF_AUTH_MD5:
- printf(" auth MD5");
+ case OSPF_AUTH_MD5: {
+ struct ospf_md5_authdata auth;
+ memcpy(&auth, op->ospf_authdata, sizeof(auth));
+
+ printf(" auth MD5 key-id %u", auth.auth_keyid);
+ if (vflag)
+ printf(" seq %u", ntohl(auth.auth_seq));
+ if (vflag > 1) {
+ printf(" off %u len %u",
+ ntohs(auth.auth_md5_offset),
+ auth.auth_len);
+ }
break;
+ }
default:
printf(" ??authtype-%d??", ntohs(op->ospf_authtype));