985c90d102
This fixes the following 41 security problems: + CVE-2016-7922: buffer overflow in print-ah.c:ah_print(). + CVE-2016-7923: buffer overflow in print-arp.c:arp_print(). + CVE-2016-7924: buffer overflow in print-atm.c:oam_print(). + CVE-2016-7925: buffer overflow in print-sl.c:sl_if_print(). + CVE-2016-7926: buffer overflow in print-ether.c:ethertype_print(). + CVE-2016-7927: buffer overflow in print-802_11.c:ieee802_11_radio_print(). + CVE-2016-7928: buffer overflow in print-ipcomp.c:ipcomp_print(). + CVE-2016-7929: buffer overflow in print-juniper.c:juniper_parse_header(). + CVE-2016-7930: buffer overflow in print-llc.c:llc_print(). + CVE-2016-7931: buffer overflow in print-mpls.c:mpls_print(). + CVE-2016-7932: buffer overflow in print-pim.c:pimv2_check_checksum(). + CVE-2016-7933: buffer overflow in print-ppp.c:ppp_hdlc_if_print(). + CVE-2016-7934: buffer overflow in print-udp.c:rtcp_print(). + CVE-2016-7935: buffer overflow in print-udp.c:rtp_print(). + CVE-2016-7936: buffer overflow in print-udp.c:udp_print(). + CVE-2016-7937: buffer overflow in print-udp.c:vat_print(). + CVE-2016-7938: integer overflow in print-zeromq.c:zmtp1_print_frame(). + CVE-2016-7939: buffer overflow in print-gre.c, multiple functions. + CVE-2016-7940: buffer overflow in print-stp.c, multiple functions. + CVE-2016-7973: buffer overflow in print-atalk.c, multiple functions. + CVE-2016-7974: buffer overflow in print-ip.c, multiple functions. + CVE-2016-7975: buffer overflow in print-tcp.c:tcp_print(). + CVE-2016-7983: buffer overflow in print-bootp.c:bootp_print(). + CVE-2016-7984: buffer overflow in print-tftp.c:tftp_print(). + CVE-2016-7985: buffer overflow in print-calm-fast.c:calm_fast_print(). + CVE-2016-7986: buffer overflow in print-geonet.c, multiple functions. + CVE-2016-7992: buffer overflow in print-cip.c:cip_if_print(). + CVE-2016-7993: a bug in util-print.c:relts_print() could cause a buffer overflow in multiple protocol parsers (DNS, DVMRP, HSRP, IGMP, lightweight resolver protocol, PIM). + CVE-2016-8574: buffer overflow in print-fr.c:frf15_print(). + CVE-2016-8575: buffer overflow in print-fr.c:q933_print(). + CVE-2017-5202: buffer overflow in print-isoclns.c:clnp_print(). + CVE-2017-5203: buffer overflow in print-bootp.c:bootp_print(). + CVE-2017-5204: buffer overflow in print-ip6.c:ip6_print(). + CVE-2017-5205: buffer overflow in print-isakmp.c:ikev2_e_print(). + CVE-2017-5341: buffer overflow in print-otv.c:otv_print(). + CVE-2017-5342: a bug in multiple protocol parsers (Geneve, GRE, NSH, OTV, VXLAN and VXLAN GPE) could cause a buffer overflow in print-ether.c:ether_print(). + CVE-2017-5482: buffer overflow in print-fr.c:q933_print(). + CVE-2017-5483: buffer overflow in print-snmp.c:asn1_parse(). + CVE-2017-5484: buffer overflow in print-atm.c:sig_print(). + CVE-2017-5485: buffer overflow in addrtoname.c:lookup_nsap(). + CVE-2017-5486: buffer overflow in print-isoclns.c:clnp_print(). The size of the package is only incread very little: new size: 306430 tcpdump_4.9.0-1_mips_24kc.ipk 130324 tcpdump-mini_4.9.0-1_mips_24kc.ipk old size: 302782 tcpdump_4.8.1-1_mips_24kc.ipk 129033 tcpdump-mini_4.8.1-1_mips_24kc.ipk Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
876 lines
24 KiB
Diff
876 lines
24 KiB
Diff
--- a/Makefile.in
|
|
+++ b/Makefile.in
|
|
@@ -70,6 +70,82 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@
|
|
@rm -f $@
|
|
$(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
|
|
|
|
+ifdef TCPDUMP_MINI
|
|
+
|
|
+CSRC=\
|
|
+ tcpdump.c \
|
|
+ netdissect.c \
|
|
+ setsignal.c \
|
|
+ addrtoname.c \
|
|
+ addrtostr.c \
|
|
+ af.c \
|
|
+ ascii_strcasecmp.c \
|
|
+ checksum.c \
|
|
+ cpack.c \
|
|
+ gmpls.c \
|
|
+ gmt2local.c \
|
|
+ in_cksum.c \
|
|
+ ipproto.c \
|
|
+ l2vpn.c \
|
|
+ machdep.c \
|
|
+ nlpid.c \
|
|
+ oui.c \
|
|
+ parsenfsfh.c \
|
|
+ print.c \
|
|
+ print-802_11.c \
|
|
+ print-aodv.c \
|
|
+ print-arp.c \
|
|
+ print-ascii.c \
|
|
+ print-bootp.c \
|
|
+ print-dhcp6.c \
|
|
+ print-domain.c \
|
|
+ print-eap.c \
|
|
+ print-ether.c \
|
|
+ print-ftp.c \
|
|
+ print-gre.c \
|
|
+ print-http.c \
|
|
+ print-icmp.c \
|
|
+ print-icmp6.c \
|
|
+ print-igmp.c \
|
|
+ print-ip.c \
|
|
+ print-ip6.c \
|
|
+ print-ip6opts.c \
|
|
+ print-ipnet.c \
|
|
+ print-l2tp.c \
|
|
+ print-llc.c \
|
|
+ print-lldp.c \
|
|
+ print-loopback.c \
|
|
+ print-nfs.c \
|
|
+ print-ntp.c \
|
|
+ print-null.c \
|
|
+ print-olsr.c \
|
|
+ print-ospf.c \
|
|
+ print-ospf6.c \
|
|
+ print-ppp.c \
|
|
+ print-pppoe.c \
|
|
+ print-pptp.c \
|
|
+ print-radius.c \
|
|
+ print-raw.c \
|
|
+ print-rsvp.c \
|
|
+ print-rt6.c \
|
|
+ print-rtsp.c \
|
|
+ print-sip.c \
|
|
+ print-sll.c \
|
|
+ print-smtp.c \
|
|
+ print-snmp.c \
|
|
+ print-stp.c \
|
|
+ print-sunrpc.c \
|
|
+ print-syslog.c \
|
|
+ print-tcp.c \
|
|
+ print-telnet.c \
|
|
+ print-tftp.c \
|
|
+ print-udp.c \
|
|
+ signature.c \
|
|
+ strtoaddr.c \
|
|
+ util-print.c
|
|
+
|
|
+else
|
|
+
|
|
CSRC = setsignal.c tcpdump.c
|
|
|
|
LIBNETDISSECT_SRC=\
|
|
@@ -237,12 +313,16 @@ LIBNETDISSECT_SRC=\
|
|
strtoaddr.c \
|
|
util-print.c
|
|
|
|
+endif
|
|
+
|
|
LOCALSRC = @LOCALSRC@
|
|
GENSRC = version.c
|
|
LIBOBJS = @LIBOBJS@
|
|
|
|
+ifndef TCPDUMP_MINI
|
|
LIBNETDISSECT_OBJ=$(LIBNETDISSECT_SRC:.c=.o) ${LOCALSRC:.c=.o} ${LIBOBJS}
|
|
LIBNETDISSECT=libnetdissect.a
|
|
+endif
|
|
|
|
|
|
SRC = $(CSRC) $(GENSRC) $(LOCALSRC) $(LIBNETDISSECT_SRC)
|
|
@@ -373,10 +453,12 @@ $(PROG): $(OBJ) @V_PCAPDEP@
|
|
@rm -f $@
|
|
$(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
|
|
|
|
+ifndef TCPDUMP_MINI
|
|
$(LIBNETDISSECT): $(LIBNETDISSECT_OBJ)
|
|
@rm -f $@
|
|
$(AR) cr $@ $(LIBNETDISSECT_OBJ)
|
|
$(RANLIB) $@
|
|
+endif
|
|
|
|
datalinks.o: $(srcdir)/missing/datalinks.c
|
|
$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c
|
|
--- a/addrtoname.c
|
|
+++ b/addrtoname.c
|
|
@@ -566,8 +566,10 @@ linkaddr_string(netdissect_options *ndo,
|
|
if (type == LINKADDR_ETHER && len == ETHER_ADDR_LEN)
|
|
return (etheraddr_string(ndo, ep));
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
if (type == LINKADDR_FRELAY)
|
|
return (q922_string(ndo, ep, len));
|
|
+#endif
|
|
|
|
tp = lookup_bytestring(ndo, ep, len);
|
|
if (tp->e_name)
|
|
@@ -1202,6 +1204,7 @@ init_addrtoname(netdissect_options *ndo,
|
|
init_ipxsaparray(ndo);
|
|
}
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
const char *
|
|
dnaddr_string(netdissect_options *ndo, u_short dnaddr)
|
|
{
|
|
@@ -1221,6 +1224,7 @@ dnaddr_string(netdissect_options *ndo, u
|
|
|
|
return(tp->name);
|
|
}
|
|
+#endif
|
|
|
|
/* Return a zero'ed hnamemem struct and cuts down on calloc() overhead */
|
|
struct hnamemem *
|
|
--- a/print.c
|
|
+++ b/print.c
|
|
@@ -48,6 +48,7 @@ static const struct printer printers[] =
|
|
#ifdef DLT_IPNET
|
|
{ ipnet_if_print, DLT_IPNET },
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
#ifdef DLT_IEEE802_15_4
|
|
{ ieee802_15_4_if_print, DLT_IEEE802_15_4 },
|
|
#endif
|
|
@@ -57,12 +58,14 @@ static const struct printer printers[] =
|
|
#ifdef DLT_PPI
|
|
{ ppi_if_print, DLT_PPI },
|
|
#endif
|
|
+#endif
|
|
#ifdef DLT_NETANALYZER
|
|
{ netanalyzer_if_print, DLT_NETANALYZER },
|
|
#endif
|
|
#ifdef DLT_NETANALYZER_TRANSPARENT
|
|
{ netanalyzer_transparent_if_print, DLT_NETANALYZER_TRANSPARENT },
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
#if defined(DLT_NFLOG) && defined(HAVE_PCAP_NFLOG_H)
|
|
{ nflog_if_print, DLT_NFLOG},
|
|
#endif
|
|
@@ -75,10 +78,12 @@ static const struct printer printers[] =
|
|
#ifdef DLT_IP_OVER_FC
|
|
{ ipfc_if_print, DLT_IP_OVER_FC },
|
|
#endif
|
|
+#endif
|
|
{ null_if_print, DLT_NULL },
|
|
#ifdef DLT_LOOP
|
|
{ null_if_print, DLT_LOOP },
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
#ifdef DLT_APPLE_IP_OVER_IEEE1394
|
|
{ ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 },
|
|
#endif
|
|
@@ -92,7 +97,9 @@ static const struct printer printers[] =
|
|
#ifdef DLT_ARCNET_LINUX
|
|
{ arcnet_linux_if_print, DLT_ARCNET_LINUX },
|
|
#endif
|
|
+#endif
|
|
{ raw_if_print, DLT_RAW },
|
|
+#ifndef TCPDUMP_MINI
|
|
#ifdef DLT_IPV4
|
|
{ raw_if_print, DLT_IPV4 },
|
|
#endif
|
|
@@ -116,17 +123,21 @@ static const struct printer printers[] =
|
|
#ifdef DLT_HDLC
|
|
{ chdlc_if_print, DLT_HDLC },
|
|
#endif
|
|
+#endif
|
|
#ifdef DLT_PPP_ETHER
|
|
{ pppoe_if_print, DLT_PPP_ETHER },
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
#if defined(DLT_PFLOG) && defined(HAVE_NET_IF_PFLOG_H)
|
|
{ pflog_if_print, DLT_PFLOG },
|
|
#endif
|
|
{ token_if_print, DLT_IEEE802 },
|
|
{ fddi_if_print, DLT_FDDI },
|
|
+#endif
|
|
#ifdef DLT_LINUX_SLL
|
|
{ sll_if_print, DLT_LINUX_SLL },
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
#ifdef DLT_FR
|
|
{ fr_if_print, DLT_FR },
|
|
#endif
|
|
@@ -198,6 +209,7 @@ static const struct printer printers[] =
|
|
#ifdef DLT_PKTAP
|
|
{ pktap_if_print, DLT_PKTAP },
|
|
#endif
|
|
+#endif
|
|
#ifdef DLT_IEEE802_11_RADIO
|
|
{ ieee802_11_radio_if_print, DLT_IEEE802_11_RADIO },
|
|
#endif
|
|
@@ -214,12 +226,14 @@ static const struct printer printers[] =
|
|
#ifdef DLT_PPP_WITHDIRECTION
|
|
{ ppp_if_print, DLT_PPP_WITHDIRECTION },
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
#ifdef DLT_PPP_BSDOS
|
|
{ ppp_bsdos_if_print, DLT_PPP_BSDOS },
|
|
#endif
|
|
#ifdef DLT_PPP_SERIAL
|
|
{ ppp_hdlc_if_print, DLT_PPP_SERIAL },
|
|
#endif
|
|
+#endif
|
|
{ NULL, 0 },
|
|
};
|
|
|
|
--- a/print-ether.c
|
|
+++ b/print-ether.c
|
|
@@ -342,6 +342,7 @@ ethertype_print(netdissect_options *ndo,
|
|
arp_print(ndo, p, length, caplen);
|
|
return (1);
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case ETHERTYPE_DN:
|
|
decnet_print(ndo, p, length, caplen);
|
|
return (1);
|
|
@@ -368,6 +369,7 @@ ethertype_print(netdissect_options *ndo,
|
|
}
|
|
isoclns_print(ndo, p + 1, length - 1, caplen - 1);
|
|
return(1);
|
|
+#endif
|
|
|
|
case ETHERTYPE_PPPOED:
|
|
case ETHERTYPE_PPPOES:
|
|
@@ -380,9 +382,11 @@ ethertype_print(netdissect_options *ndo,
|
|
eap_print(ndo, p, length);
|
|
return (1);
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case ETHERTYPE_RRCP:
|
|
rrcp_print(ndo, p, length, src, dst);
|
|
return (1);
|
|
+#endif
|
|
|
|
case ETHERTYPE_PPP:
|
|
if (length) {
|
|
@@ -391,6 +395,7 @@ ethertype_print(netdissect_options *ndo,
|
|
}
|
|
return (1);
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case ETHERTYPE_MPCP:
|
|
mpcp_print(ndo, p, length);
|
|
return (1);
|
|
@@ -403,6 +408,7 @@ ethertype_print(netdissect_options *ndo,
|
|
case ETHERTYPE_CFM_OLD:
|
|
cfm_print(ndo, p, length);
|
|
return (1);
|
|
+#endif
|
|
|
|
case ETHERTYPE_LLDP:
|
|
lldp_print(ndo, p, length);
|
|
@@ -412,6 +418,7 @@ ethertype_print(netdissect_options *ndo,
|
|
loopback_print(ndo, p, length);
|
|
return (1);
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case ETHERTYPE_MPLS:
|
|
case ETHERTYPE_MPLS_MULTI:
|
|
mpls_print(ndo, p, length);
|
|
@@ -441,6 +448,7 @@ ethertype_print(netdissect_options *ndo,
|
|
case ETHERTYPE_MEDSA:
|
|
medsa_print(ndo, p, length, caplen, src, dst);
|
|
return (1);
|
|
+#endif
|
|
|
|
case ETHERTYPE_LAT:
|
|
case ETHERTYPE_SCA:
|
|
--- a/print-gre.c
|
|
+++ b/print-gre.c
|
|
@@ -216,6 +216,7 @@ gre_print_0(netdissect_options *ndo, con
|
|
case ETHERTYPE_IPV6:
|
|
ip6_print(ndo, bp, len);
|
|
break;
|
|
+#ifndef TCPDUMP_MINI
|
|
case ETHERTYPE_MPLS:
|
|
mpls_print(ndo, bp, len);
|
|
break;
|
|
@@ -231,6 +232,7 @@ gre_print_0(netdissect_options *ndo, con
|
|
case ETHERTYPE_TEB:
|
|
ether_print(ndo, bp, len, ndo->ndo_snapend - bp, NULL, NULL);
|
|
break;
|
|
+#endif
|
|
default:
|
|
ND_PRINT((ndo, "gre-proto-0x%x", prot));
|
|
}
|
|
--- a/print-igmp.c
|
|
+++ b/print-igmp.c
|
|
@@ -306,6 +306,7 @@ igmp_print(netdissect_options *ndo,
|
|
ND_TCHECK2(bp[4], 4);
|
|
ND_PRINT((ndo, "igmp leave %s", ipaddr_string(ndo, &bp[4])));
|
|
break;
|
|
+#ifndef TCPDUMP_MINI
|
|
case 0x13:
|
|
ND_PRINT((ndo, "igmp dvmrp"));
|
|
if (len < 8)
|
|
@@ -317,6 +318,7 @@ igmp_print(netdissect_options *ndo,
|
|
ND_PRINT((ndo, "igmp pimv1"));
|
|
pimv1_print(ndo, bp, len);
|
|
break;
|
|
+#endif
|
|
case 0x1e:
|
|
print_mresp(ndo, bp, len);
|
|
break;
|
|
--- a/print-ip6.c
|
|
+++ b/print-ip6.c
|
|
@@ -303,6 +303,7 @@ ip6_print(netdissect_options *ndo, const
|
|
return;
|
|
nh = *cp;
|
|
break;
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_FRAGMENT:
|
|
advance = frag6_print(ndo, cp, (const u_char *)ip6);
|
|
if (advance < 0 || ndo->ndo_snapend <= cp + advance)
|
|
@@ -324,16 +325,19 @@ ip6_print(netdissect_options *ndo, const
|
|
advance = mobility_print(ndo, cp, (const u_char *)ip6);
|
|
nh = *cp;
|
|
return;
|
|
+#endif
|
|
case IPPROTO_ROUTING:
|
|
advance = rt6_print(ndo, cp, (const u_char *)ip6);
|
|
nh = *cp;
|
|
break;
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_SCTP:
|
|
sctp_print(ndo, cp, (const u_char *)ip6, len);
|
|
return;
|
|
case IPPROTO_DCCP:
|
|
dccp_print(ndo, cp, (const u_char *)ip6, len);
|
|
return;
|
|
+#endif
|
|
case IPPROTO_TCP:
|
|
tcp_print(ndo, cp, len, (const u_char *)ip6, fragmented);
|
|
return;
|
|
@@ -343,6 +347,7 @@ ip6_print(netdissect_options *ndo, const
|
|
case IPPROTO_ICMPV6:
|
|
icmp6_print(ndo, cp, len, (const u_char *)ip6, fragmented);
|
|
return;
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_AH:
|
|
advance = ah_print(ndo, cp);
|
|
nh = *cp;
|
|
@@ -371,6 +376,7 @@ ip6_print(netdissect_options *ndo, const
|
|
case IPPROTO_PIM:
|
|
pim_print(ndo, cp, len, (const u_char *)ip6);
|
|
return;
|
|
+#endif
|
|
|
|
case IPPROTO_OSPF:
|
|
ospf6_print(ndo, cp, len);
|
|
@@ -384,9 +390,11 @@ ip6_print(netdissect_options *ndo, const
|
|
ip_print(ndo, cp, len);
|
|
return;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_PGM:
|
|
pgm_print(ndo, cp, len, (const u_char *)ip6);
|
|
return;
|
|
+#endif
|
|
|
|
case IPPROTO_GRE:
|
|
gre_print(ndo, cp, len);
|
|
--- a/print-ip.c
|
|
+++ b/print-ip.c
|
|
@@ -329,6 +329,7 @@ ip_print_demux(netdissect_options *ndo,
|
|
again:
|
|
switch (ipds->nh) {
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_AH:
|
|
if (!ND_TTEST(*ipds->cp)) {
|
|
ND_PRINT((ndo, "[|AH]"));
|
|
@@ -367,7 +368,9 @@ again:
|
|
*/
|
|
break;
|
|
}
|
|
+#endif
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_SCTP:
|
|
sctp_print(ndo, ipds->cp, (const u_char *)ipds->ip, ipds->len);
|
|
break;
|
|
@@ -375,6 +378,7 @@ again:
|
|
case IPPROTO_DCCP:
|
|
dccp_print(ndo, ipds->cp, (const u_char *)ipds->ip, ipds->len);
|
|
break;
|
|
+#endif
|
|
|
|
case IPPROTO_TCP:
|
|
/* pass on the MF bit plus the offset to detect fragments */
|
|
@@ -394,6 +398,7 @@ again:
|
|
ipds->off & (IP_MF|IP_OFFMASK));
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_PIGP:
|
|
/*
|
|
* XXX - the current IANA protocol number assignments
|
|
@@ -414,14 +419,17 @@ again:
|
|
case IPPROTO_EIGRP:
|
|
eigrp_print(ndo, ipds->cp, ipds->len);
|
|
break;
|
|
+#endif
|
|
|
|
case IPPROTO_ND:
|
|
ND_PRINT((ndo, " nd %d", ipds->len));
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_EGP:
|
|
egp_print(ndo, ipds->cp, ipds->len);
|
|
break;
|
|
+#endif
|
|
|
|
case IPPROTO_OSPF:
|
|
ospf_print(ndo, ipds->cp, ipds->len, (const u_char *)ipds->ip);
|
|
@@ -454,6 +462,7 @@ again:
|
|
gre_print(ndo, ipds->cp, ipds->len);
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case IPPROTO_MOBILE:
|
|
mobile_print(ndo, ipds->cp, ipds->len);
|
|
break;
|
|
@@ -482,6 +491,7 @@ again:
|
|
case IPPROTO_PGM:
|
|
pgm_print(ndo, ipds->cp, ipds->len, (const u_char *)ipds->ip);
|
|
break;
|
|
+#endif
|
|
|
|
default:
|
|
if (ndo->ndo_nflag==0 && (proto = getprotobynumber(ipds->nh)) != NULL)
|
|
--- a/print-llc.c
|
|
+++ b/print-llc.c
|
|
@@ -206,6 +206,7 @@ llc_print(netdissect_options *ndo, const
|
|
hdrlen = 4; /* DSAP, SSAP, 2-byte control field */
|
|
}
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
if (ssap_field == LLCSAP_GLOBAL && dsap_field == LLCSAP_GLOBAL) {
|
|
/*
|
|
* This is an Ethernet_802.3 IPX frame; it has an
|
|
@@ -228,6 +229,7 @@ llc_print(netdissect_options *ndo, const
|
|
ipx_print(ndo, p, length);
|
|
return (0); /* no LLC header */
|
|
}
|
|
+#endif
|
|
|
|
dsap = dsap_field & ~LLC_IG;
|
|
ssap = ssap_field & ~LLC_GSAP;
|
|
@@ -291,6 +293,7 @@ llc_print(netdissect_options *ndo, const
|
|
return (hdrlen);
|
|
}
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
if (ssap == LLCSAP_IPX && dsap == LLCSAP_IPX &&
|
|
control == LLC_UI) {
|
|
/*
|
|
@@ -304,6 +307,7 @@ llc_print(netdissect_options *ndo, const
|
|
ipx_print(ndo, p, length);
|
|
return (hdrlen);
|
|
}
|
|
+#endif
|
|
|
|
#ifdef ENABLE_SMB
|
|
if (ssap == LLCSAP_NETBEUI && dsap == LLCSAP_NETBEUI
|
|
@@ -322,11 +326,13 @@ llc_print(netdissect_options *ndo, const
|
|
return (hdrlen);
|
|
}
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
if (ssap == LLCSAP_ISONS && dsap == LLCSAP_ISONS
|
|
&& control == LLC_UI) {
|
|
isoclns_print(ndo, p, length, caplen);
|
|
return (hdrlen);
|
|
}
|
|
+#endif
|
|
|
|
if (!ndo->ndo_eflag) {
|
|
if (ssap == dsap) {
|
|
@@ -480,6 +486,7 @@ snap_print(netdissect_options *ndo, cons
|
|
|
|
case OUI_CISCO:
|
|
switch (et) {
|
|
+#ifndef TCPDUMP_MINI
|
|
case PID_CISCO_CDP:
|
|
cdp_print(ndo, p, length, caplen);
|
|
return (1);
|
|
@@ -492,6 +499,7 @@ snap_print(netdissect_options *ndo, cons
|
|
case PID_CISCO_VTP:
|
|
vtp_print(ndo, p, length);
|
|
return (1);
|
|
+#endif
|
|
case PID_CISCO_PVST:
|
|
case PID_CISCO_VLANBRIDGE:
|
|
stp_print(ndo, p, length);
|
|
@@ -504,6 +512,7 @@ snap_print(netdissect_options *ndo, cons
|
|
case OUI_RFC2684:
|
|
switch (et) {
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case PID_RFC2684_ETH_FCS:
|
|
case PID_RFC2684_ETH_NOFCS:
|
|
/*
|
|
@@ -565,6 +574,7 @@ snap_print(netdissect_options *ndo, cons
|
|
*/
|
|
fddi_print(ndo, p, length, caplen);
|
|
return (1);
|
|
+#endif
|
|
|
|
case PID_RFC2684_BPDU:
|
|
stp_print(ndo, p, length);
|
|
--- a/print-null.c
|
|
+++ b/print-null.c
|
|
@@ -116,6 +116,7 @@ null_if_print(netdissect_options *ndo, c
|
|
ip6_print(ndo, p, length);
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case BSD_AFNUM_ISO:
|
|
isoclns_print(ndo, p, length, caplen);
|
|
break;
|
|
@@ -127,6 +128,7 @@ null_if_print(netdissect_options *ndo, c
|
|
case BSD_AFNUM_IPX:
|
|
ipx_print(ndo, p, length);
|
|
break;
|
|
+#endif
|
|
|
|
default:
|
|
/* unknown AF_ value */
|
|
--- a/print-ppp.c
|
|
+++ b/print-ppp.c
|
|
@@ -1358,6 +1358,7 @@ trunc:
|
|
return 0;
|
|
}
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
static void
|
|
ppp_hdlc(netdissect_options *ndo,
|
|
const u_char *p, int length)
|
|
@@ -1436,6 +1437,7 @@ trunc:
|
|
free(b);
|
|
ND_PRINT((ndo, "[|ppp]"));
|
|
}
|
|
+#endif
|
|
|
|
|
|
/* PPP */
|
|
@@ -1443,10 +1445,12 @@ static void
|
|
handle_ppp(netdissect_options *ndo,
|
|
u_int proto, const u_char *p, int length)
|
|
{
|
|
+#ifndef TCPDUMP_MINI
|
|
if ((proto & 0xff00) == 0x7e00) { /* is this an escape code ? */
|
|
ppp_hdlc(ndo, p - 1, length);
|
|
return;
|
|
}
|
|
+#endif
|
|
|
|
switch (proto) {
|
|
case PPP_LCP: /* fall through */
|
|
@@ -1479,6 +1483,7 @@ handle_ppp(netdissect_options *ndo,
|
|
case PPP_IPV6:
|
|
ip6_print(ndo, p, length);
|
|
break;
|
|
+#ifndef TCPDUMP_MINI
|
|
case ETHERTYPE_IPX: /*XXX*/
|
|
case PPP_IPX:
|
|
ipx_print(ndo, p, length);
|
|
@@ -1490,6 +1495,7 @@ handle_ppp(netdissect_options *ndo,
|
|
case PPP_MPLS_MCAST:
|
|
mpls_print(ndo, p, length);
|
|
break;
|
|
+#endif
|
|
case PPP_COMP:
|
|
ND_PRINT((ndo, "compressed PPP data"));
|
|
break;
|
|
@@ -1630,6 +1636,7 @@ ppp_if_print(netdissect_options *ndo,
|
|
return (0);
|
|
}
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
/*
|
|
* PPP I/F printer to use if we know that RFC 1662-style PPP in HDLC-like
|
|
* framing, or Cisco PPP with HDLC framing as per section 4.3.1 of RFC 1547,
|
|
@@ -1857,6 +1864,7 @@ printx:
|
|
#endif /* __bsdi__ */
|
|
return (hdrlength);
|
|
}
|
|
+#endif
|
|
|
|
|
|
/*
|
|
--- a/print-sll.c
|
|
+++ b/print-sll.c
|
|
@@ -238,12 +238,14 @@ recurse:
|
|
*/
|
|
switch (ether_type) {
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case LINUX_SLL_P_802_3:
|
|
/*
|
|
* Ethernet_802.3 IPX frame.
|
|
*/
|
|
ipx_print(ndo, p, length);
|
|
break;
|
|
+#endif
|
|
|
|
case LINUX_SLL_P_802_2:
|
|
/*
|
|
--- a/print-tcp.c
|
|
+++ b/print-tcp.c
|
|
@@ -589,12 +589,14 @@ tcp_print(netdissect_options *ndo,
|
|
ND_PRINT((ndo, " %u", utoval));
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case TCPOPT_MPTCP:
|
|
datalen = len - 2;
|
|
LENCHECK(datalen);
|
|
if (!mptcp_print(ndo, cp-2, len, flags))
|
|
goto bad;
|
|
break;
|
|
+#endif
|
|
|
|
case TCPOPT_FASTOPEN:
|
|
datalen = len - 2;
|
|
@@ -670,6 +672,7 @@ tcp_print(netdissect_options *ndo,
|
|
return;
|
|
}
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
if (ndo->ndo_packettype) {
|
|
switch (ndo->ndo_packettype) {
|
|
case PT_ZMTP1:
|
|
@@ -681,28 +684,36 @@ tcp_print(netdissect_options *ndo,
|
|
}
|
|
return;
|
|
}
|
|
+#endif
|
|
|
|
if (IS_SRC_OR_DST_PORT(TELNET_PORT)) {
|
|
telnet_print(ndo, bp, length);
|
|
} else if (IS_SRC_OR_DST_PORT(SMTP_PORT)) {
|
|
ND_PRINT((ndo, ": "));
|
|
smtp_print(ndo, bp, length);
|
|
- } else if (IS_SRC_OR_DST_PORT(BGP_PORT))
|
|
+ }
|
|
+#ifndef TCPDUMP_MINI
|
|
+ else if (IS_SRC_OR_DST_PORT(BGP_PORT))
|
|
bgp_print(ndo, bp, length);
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(PPTP_PORT))
|
|
pptp_print(ndo, bp);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(REDIS_PORT))
|
|
resp_print(ndo, bp, length);
|
|
+#endif
|
|
#ifdef ENABLE_SMB
|
|
else if (IS_SRC_OR_DST_PORT(NETBIOS_SSN_PORT))
|
|
nbt_tcp_print(ndo, bp, length);
|
|
else if (IS_SRC_OR_DST_PORT(SMB_PORT))
|
|
smb_tcp_print(ndo, bp, length);
|
|
#endif
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(BEEP_PORT))
|
|
beep_print(ndo, bp, length);
|
|
else if (IS_SRC_OR_DST_PORT(OPENFLOW_PORT_OLD) || IS_SRC_OR_DST_PORT(OPENFLOW_PORT_IANA))
|
|
openflow_print(ndo, bp, length);
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(FTP_PORT)) {
|
|
ND_PRINT((ndo, ": "));
|
|
ftp_print(ndo, bp, length);
|
|
@@ -719,6 +730,7 @@ tcp_print(netdissect_options *ndo,
|
|
* XXX packet could be unaligned, it can go strange
|
|
*/
|
|
ns_print(ndo, bp + 2, length - 2, 0);
|
|
+#ifndef TCPDUMP_MINI
|
|
} else if (IS_SRC_OR_DST_PORT(MSDP_PORT)) {
|
|
msdp_print(ndo, bp, length);
|
|
} else if (IS_SRC_OR_DST_PORT(RPKI_RTR_PORT)) {
|
|
@@ -726,6 +738,7 @@ tcp_print(netdissect_options *ndo,
|
|
}
|
|
else if (length > 0 && (IS_SRC_OR_DST_PORT(LDP_PORT))) {
|
|
ldp_print(ndo, bp, length);
|
|
+#endif
|
|
}
|
|
else if ((IS_SRC_OR_DST_PORT(NFS_PORT)) &&
|
|
length >= 4 && ND_TTEST2(*bp, 4)) {
|
|
--- a/print-udp.c
|
|
+++ b/print-udp.c
|
|
@@ -430,10 +430,12 @@ udp_print(netdissect_options *ndo, regis
|
|
vat_print(ndo, (const void *)(up + 1), up);
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case PT_WB:
|
|
udpipaddr_print(ndo, ip, sport, dport);
|
|
wb_print(ndo, (const void *)(up + 1), length);
|
|
break;
|
|
+#endif
|
|
|
|
case PT_RPC:
|
|
rp = (const struct sunrpc_msg *)(up + 1);
|
|
@@ -462,10 +464,12 @@ udp_print(netdissect_options *ndo, regis
|
|
snmp_print(ndo, (const u_char *)(up + 1), length);
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case PT_CNFP:
|
|
udpipaddr_print(ndo, ip, sport, dport);
|
|
cnfp_print(ndo, cp);
|
|
break;
|
|
+#endif
|
|
|
|
case PT_TFTP:
|
|
udpipaddr_print(ndo, ip, sport, dport);
|
|
@@ -483,6 +487,7 @@ udp_print(netdissect_options *ndo, regis
|
|
radius_print(ndo, cp, length);
|
|
break;
|
|
|
|
+#ifndef TCPDUMP_MINI
|
|
case PT_VXLAN:
|
|
udpipaddr_print(ndo, ip, sport, dport);
|
|
vxlan_print(ndo, (const u_char *)(up + 1), length);
|
|
@@ -497,6 +502,7 @@ udp_print(netdissect_options *ndo, regis
|
|
udpipaddr_print(ndo, ip, sport, dport);
|
|
lmp_print(ndo, cp, length);
|
|
break;
|
|
+#endif
|
|
}
|
|
return;
|
|
}
|
|
@@ -574,31 +580,40 @@ udp_print(netdissect_options *ndo, regis
|
|
ns_print(ndo, (const u_char *)(up + 1), length, 0);
|
|
else if (IS_SRC_OR_DST_PORT(MULTICASTDNS_PORT))
|
|
ns_print(ndo, (const u_char *)(up + 1), length, 1);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(TIMED_PORT))
|
|
timed_print(ndo, (const u_char *)(up + 1));
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(TFTP_PORT))
|
|
tftp_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(BOOTPC_PORT) || IS_SRC_OR_DST_PORT(BOOTPS_PORT))
|
|
bootp_print(ndo, (const u_char *)(up + 1), length);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(RIP_PORT))
|
|
rip_print(ndo, (const u_char *)(up + 1), length);
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(AODV_PORT))
|
|
aodv_print(ndo, (const u_char *)(up + 1), length,
|
|
ip6 != NULL);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT))
|
|
isakmp_print(ndo, (const u_char *)(up + 1), length, bp2);
|
|
+
|
|
else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_NATT))
|
|
isakmp_rfc3948_print(ndo, (const u_char *)(up + 1), length, bp2);
|
|
#if 1 /*???*/
|
|
else if (IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER1) || IS_SRC_OR_DST_PORT(ISAKMP_PORT_USER2))
|
|
isakmp_print(ndo, (const u_char *)(up + 1), length, bp2);
|
|
#endif
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(SNMP_PORT) || IS_SRC_OR_DST_PORT(SNMPTRAP_PORT))
|
|
snmp_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(NTP_PORT))
|
|
ntp_print(ndo, (const u_char *)(up + 1), length);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(KERBEROS_PORT) || IS_SRC_OR_DST_PORT(KERBEROS_SEC_PORT))
|
|
krb_print(ndo, (const void *)(up + 1));
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(L2TP_PORT))
|
|
l2tp_print(ndo, (const u_char *)(up + 1), length);
|
|
#ifdef ENABLE_SMB
|
|
@@ -609,6 +624,7 @@ udp_print(netdissect_options *ndo, regis
|
|
#endif
|
|
else if (dport == VAT_PORT)
|
|
vat_print(ndo, (const void *)(up + 1), up);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(ZEPHYR_SRV_PORT) || IS_SRC_OR_DST_PORT(ZEPHYR_CLT_PORT))
|
|
zephyr_print(ndo, (const void *)(up + 1), length);
|
|
/*
|
|
@@ -621,8 +637,11 @@ udp_print(netdissect_options *ndo, regis
|
|
(const u_char *) ip);
|
|
else if (IS_SRC_OR_DST_PORT(RIPNG_PORT))
|
|
ripng_print(ndo, (const u_char *)(up + 1), length);
|
|
+#endif
|
|
+
|
|
else if (IS_SRC_OR_DST_PORT(DHCP6_SERV_PORT) || IS_SRC_OR_DST_PORT(DHCP6_CLI_PORT))
|
|
dhcp6_print(ndo, (const u_char *)(up + 1), length);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(AHCP_PORT))
|
|
ahcp_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(BABEL_PORT) || IS_SRC_OR_DST_PORT(BABEL_PORT_OLD))
|
|
@@ -636,6 +655,7 @@ udp_print(netdissect_options *ndo, regis
|
|
wb_print(ndo, (const void *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(CISCO_AUTORP_PORT))
|
|
cisco_autorp_print(ndo, (const void *)(up + 1), length);
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(RADIUS_PORT) ||
|
|
IS_SRC_OR_DST_PORT(RADIUS_NEW_PORT) ||
|
|
IS_SRC_OR_DST_PORT(RADIUS_ACCOUNTING_PORT) ||
|
|
@@ -643,15 +663,18 @@ udp_print(netdissect_options *ndo, regis
|
|
IS_SRC_OR_DST_PORT(RADIUS_CISCO_COA_PORT) ||
|
|
IS_SRC_OR_DST_PORT(RADIUS_COA_PORT) )
|
|
radius_print(ndo, (const u_char *)(up+1), length);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (dport == HSRP_PORT)
|
|
hsrp_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(LWRES_PORT))
|
|
lwres_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(LDP_PORT))
|
|
ldp_print(ndo, (const u_char *)(up + 1), length);
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(OLSR_PORT))
|
|
olsr_print(ndo, (const u_char *)(up + 1), length,
|
|
(IP_V(ip) == 6) ? 1 : 0);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(MPLS_LSP_PING_PORT))
|
|
lspping_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (dport == BFD_CONTROL_PORT ||
|
|
@@ -669,10 +692,12 @@ udp_print(netdissect_options *ndo, regis
|
|
lwapp_control_print(ndo, (const u_char *)(up + 1), length, 0);
|
|
else if (IS_SRC_OR_DST_PORT(LWAPP_DATA_PORT))
|
|
lwapp_data_print(ndo, (const u_char *)(up + 1), length);
|
|
+#endif
|
|
else if (IS_SRC_OR_DST_PORT(SIP_PORT))
|
|
sip_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(SYSLOG_PORT))
|
|
syslog_print(ndo, (const u_char *)(up + 1), length);
|
|
+#ifndef TCPDUMP_MINI
|
|
else if (IS_SRC_OR_DST_PORT(OTV_PORT))
|
|
otv_print(ndo, (const u_char *)(up + 1), length);
|
|
else if (IS_SRC_OR_DST_PORT(VXLAN_PORT))
|
|
@@ -689,7 +714,9 @@ udp_print(netdissect_options *ndo, regis
|
|
if (ndo->ndo_vflag)
|
|
ND_PRINT((ndo, "kip "));
|
|
llap_print(ndo, cp, length);
|
|
- } else {
|
|
+ }
|
|
+#endif
|
|
+ else {
|
|
if (ulen > length)
|
|
ND_PRINT((ndo, "UDP, bad length %u > %u",
|
|
ulen, length));
|