ok? Index: interface.h =================================================================== RCS file: /cvs/src/usr.sbin/tcpdump/interface.h,v retrieving revision 1.79 diff -u -p -r1.79 interface.h --- interface.h 22 Oct 2018 16:12:45 -0000 1.79 +++ interface.h 4 Apr 2019 01:54:37 -0000 @@ -270,8 +270,7 @@ extern void ike_print(const u_char *, u_ extern void udpencap_print(const u_char *, u_int, const u_char *); extern void ah_print(const u_char *, u_int, const u_char *); extern void esp_print(const u_char *, u_int, const u_char *); -extern void cdp_print(const u_char *, u_int, u_int, const u_char *, - const u_char *); +extern void cdp_print(const u_char *, u_int, u_int, int); extern void stp_print(const u_char *, u_int); extern void radius_print(const u_char *, u_int); extern void lwres_print(const u_char *, u_int); Index: print-cdp.c =================================================================== RCS file: /cvs/src/usr.sbin/tcpdump/print-cdp.c,v retrieving revision 1.6 diff -u -p -r1.6 print-cdp.c --- print-cdp.c 29 Mar 2016 04:07:50 -0000 1.6 +++ print-cdp.c 4 Apr 2019 01:54:37 -0000 @@ -46,20 +46,17 @@ void cdp_print_prefixes(const u_char * p * Returns non-zero IFF it succeeds in printing the header */ void -cdp_print(const u_char *p, u_int length, u_int caplen, - const u_char *esrc, const u_char *edst) +cdp_print(const u_char *p, u_int length, u_int caplen, int i) { - int i; int type, len; /* Cisco Discovery Protocol */ - if (caplen < 12) { + if (caplen < i + 4) { printf("[|cdp]"); return; } - i=8; /* CDP data starts at offset 8 */ printf("CDP v%d, ttl=%ds", p[i], p[i+1]); i+=4; /* skip version, TTL and chksum */ Index: print-gre.c =================================================================== RCS file: /cvs/src/usr.sbin/tcpdump/print-gre.c,v retrieving revision 1.23 diff -u -p -r1.23 print-gre.c --- print-gre.c 2 Apr 2019 11:10:54 -0000 1.23 +++ print-gre.c 4 Apr 2019 01:54:37 -0000 @@ -268,6 +271,9 @@ gre_print_0(const u_char *p, u_int lengt break; case ERSPAN_II: gre_print_erspan2(p, length); + break; + case 0x2000: + cdp_print(p, length, l, 0); break; default: printf("unknown-proto-%04x", proto); Index: print-llc.c =================================================================== RCS file: /cvs/src/usr.sbin/tcpdump/print-llc.c,v retrieving revision 1.20 diff -u -p -r1.20 print-llc.c --- print-llc.c 16 Nov 2015 00:16:39 -0000 1.20 +++ print-llc.c 4 Apr 2019 01:54:37 -0000 @@ -100,7 +100,7 @@ llc_print(const u_char *p, u_int length, /* Cisco Discovery Protocol - SNAP & ether type 0x2000 */ if (llc.ethertype[0] == 0x20 && llc.ethertype[1] == 0x00) { - cdp_print(p, length, caplen, esrc, edst); + cdp_print(p, length, caplen, 8); return (1); } /* Shared Spanning Tree Protocol - SNAP & ether type 0x010b */ Index: print-ppp.c =================================================================== RCS file: /cvs/src/usr.sbin/tcpdump/print-ppp.c,v retrieving revision 1.32 diff -u -p -r1.32 print-ppp.c --- print-ppp.c 6 Feb 2018 03:41:58 -0000 1.32 +++ print-ppp.c 4 Apr 2019 01:54:37 -0000 @@ -390,6 +390,9 @@ ppp_print(const u_char *p, u_int length) case PPP_IPV6CP: handle_ipv6cp(p, l); break; + case PPP_CDP: + cdp_print(p, length, l, 0); + break; } }