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));