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