-diff -urN tcpdump-3.4.orig/Makefile.in tcpdump-3.4/Makefile.in
---- tcpdump-3.4.orig/Makefile.in Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/Makefile.in Sat Jul 3 19:03:02 1999
-@@ -41,8 +41,8 @@
-
- CC = @CC@
- PROG = tcpdump
--CCOPT = @V_CCOPT@
--INCLS = -I. @V_INCLS@
-+CCOPT = @V_CCOPT@ -DINET6=1
-+INCLS = -I/usr/include/pcap @V_INCLS@
- DEFS = @DEFS@ -DHAVE_FDDI
-
- # Standard CFLAGS
-@@ -73,7 +73,7 @@
- print-snmp.c print-sunrpc.c print-tcp.c print-tftp.c print-tr.c \
- print-udp.c print-wb.c addrtoname.c bpf_dump.c gmt2local.c \
- machdep.c parsenfsfh.c util.c savestr.c setsignal.c \
-- print-smb.c smbutil.c
-+ print-smb.c smbutil.c print-ipv6.c print-icmpv6.c
- LOCALSRC =
- GENSRC = version.c
-
-diff -urN tcpdump-3.4.orig/addrtoname.c tcpdump-3.4/addrtoname.c
---- tcpdump-3.4.orig/addrtoname.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/addrtoname.c Sat Jul 3 17:58:06 1999
-@@ -62,7 +62,7 @@
- #include <stdlib.h>
- #include <unistd.h>
-
--#ifdef INET6
-+#if defined(INET6) && __GLIBC__ < 2
- #include <netinet6/in6.h>
- #endif /* INET6 */
-
-diff -urN tcpdump-3.4.orig/linux-include/netinet/ip_icmp.h tcpdump-3.4/linux-include/netinet/ip_icmp.h
---- tcpdump-3.4.orig/linux-include/netinet/ip_icmp.h Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/linux-include/netinet/ip_icmp.h Sat Jul 3 19:12:53 1999
-@@ -33,6 +33,7 @@
- * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93
- */
-
-+#ifndef _NO_INCLUDE_LOCAL
- /*
- * Interface Control Message Protocol Definitions.
- * Per RFC 792, September 1981.
-@@ -157,4 +158,5 @@
- void icmp_reflect __P((struct mbuf *));
- void icmp_send __P((struct mbuf *, struct mbuf *));
- int icmp_sysctl __P((int *, u_int, void *, size_t *, void *, size_t));
-+#endif
- #endif
-diff -urN tcpdump-3.4.orig/print-atalk.c tcpdump-3.4/print-atalk.c
---- tcpdump-3.4.orig/print-atalk.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-atalk.c Sat Jul 3 17:58:06 1999
-@@ -39,12 +39,15 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/if_ether.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <stdio.h>
- #include <stdlib.h>
-diff -urN tcpdump-3.4.orig/print-atm.c tcpdump-3.4/print-atm.c
---- tcpdump-3.4.orig/print-atm.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-atm.c Sat Jul 3 17:58:06 1999
-@@ -37,11 +37,14 @@
- #include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <stdio.h>
- #include <pcap.h>
-diff -urN tcpdump-3.4.orig/print-ax25.c tcpdump-3.4/print-ax25.c
---- tcpdump-3.4.orig/print-ax25.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-ax25.c Sat Jul 3 17:58:06 1999
-@@ -26,7 +26,10 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+#endif
-
- #include <stdio.h>
-
-diff -urN tcpdump-3.4.orig/print-domain.c tcpdump-3.4/print-domain.c
---- tcpdump-3.4.orig/print-domain.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-domain.c Sat Jul 3 17:58:06 1999
-@@ -38,11 +38,14 @@
- #include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #ifdef NOERROR
- #undef NOERROR /* Solaris sucks */
-diff -urN tcpdump-3.4.orig/print-dvmrp.c tcpdump-3.4/print-dvmrp.c
---- tcpdump-3.4.orig/print-dvmrp.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-dvmrp.c Sat Jul 3 17:58:06 1999
-@@ -31,11 +31,14 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <stdio.h>
- #include <string.h>
-diff -urN tcpdump-3.4.orig/print-ether.c tcpdump-3.4/print-ether.c
---- tcpdump-3.4.orig/print-ether.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-ether.c Sat Jul 3 17:58:06 1999
-@@ -42,11 +42,14 @@
- #include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #if defined(__GLIBC__) && __GLIBC__ >= 2
- #include <linux/sockios.h>
-diff -urN tcpdump-3.4.orig/print-icmp.c tcpdump-3.4/print-icmp.c
---- tcpdump-3.4.orig/print-icmp.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-icmp.c Sat Jul 3 17:58:06 1999
-@@ -34,16 +34,21 @@
- #endif
- #include <net/if.h>
-
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#else
-+# define __FAVOR_BSD
-+#endif
-+
- #include <netinet/in.h>
- #include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
- #include <netinet/ip_icmp.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-
- #include <stdio.h>
- #include <string.h>
-diff -urN tcpdump-3.4.orig/print-icmpv6.c tcpdump-3.4/print-icmpv6.c
---- tcpdump-3.4.orig/print-icmpv6.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-icmpv6.c Sat Jul 3 19:31:02 1999
-@@ -107,30 +107,42 @@
- #include <sys/types.h>
- #include <sys/socket.h>
-
--#include <net/if.h>
--
- #include <netinet/in.h>
--#include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_icmp.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
--
--#include <netinet6/ipv6.h>
--#include <netinet6/in6.h>
--#include <netinet6/ipv6_var.h>
--#include <netinet6/ipv6_icmp.h>
--#include <stdio.h>
-
--#include <string.h>
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-+
-+#include <netdb.h>
-+
-+#if __GLIBC__ >= 2
-+# include <netinet/ip6.h>
-+# include <netinet/icmp6.h>
-+# include <netinet/ip_icmp.h>
-+#else
-+# include <netinet6/in6.h>
-+# include <netinet6/ipv6.h>
-+#endif
-
-+#include <stdio.h>
-+#ifdef __STDC__
-+#include <stdlib.h>
-+#endif
-+#include <unistd.h>
-+
- #include "interface.h"
- #include "addrtoname.h"
-
-+#define __u8 u_int8_t
-+#define __u16 u_int16_t
-+#define __u32 u_int32_t
-+
- char *ipv6addr_string(struct in6_addr *);
-
- struct na_hdr
-@@ -360,7 +372,11 @@
- void
- icmpv6_print(register const u_char *bp, int length)
- {
-+#if __GLIBC__ >= 2
-+ register const struct icmp6_hdr *dp;
-+#else
- register const struct ipv6_icmp *dp;
-+#endif
- register char *str;
- register const struct ipv6 *oip;
- register const struct udphdr *ouh;
-@@ -376,6 +392,47 @@
-
- str = buf;
- *str = '\0';
-+
-+/* Translation from NRL to Glibc defines */
-+#if __GLIBC__ >= 2
-+# define ICMPV6_MINLEN ICMP_MINLEN
-+# define ICMPV6_ECHOREPLY ICMP6_ECHO_REPLY
-+# define ICMPV6_ECHO ICMP6_ECHO_REQUEST
-+# define ICMPV6_TOOBIG ICMP6_PACKET_TOO_BIG
-+/* Destination unreachable */
-+# define ICMPV6_UNREACH ICMP6_DST_UNREACH
-+# define ICMPV6_UNREACH_NOROUTE ICMP6_DST_UNREACH_NOROUTE
-+# define ICMPV6_UNREACH_ADMIN ICMP6_DST_UNREACH_ADMIN
-+# define ICMPV6_UNREACH_NOTNEIGHBOR ICMP6_DST_UNREACH_NOTNEIGHBOR
-+# define ICMPV6_UNREACH_ADDRESS ICMP6_DST_UNREACH_ADDR
-+# define ICMPV6_UNREACH_PORT ICMP6_DST_UNREACH_NOPORT
-+/* Membership */
-+# define ICMPV6_GRPQUERY ICMP6_MEMBERSHIP_QUERY
-+# define ICMPV6_GRPREPORT ICMP6_MEMBERSHIP_REPORT
-+# define ICMPV6_GRPTERM ICMP6_MEMBERSHIP_REDUCTION
-+/* Time exceeded */
-+# define ICMPV6_TIMXCEED ICMP6_TIME_EXCEEDED
-+# define ICMPV6_TIMXCEED_INTRANS ICMP6_TIME_EXCEED_TRANSIT
-+# define ICMPV6_TIMXCEED_REASS ICMP6_TIME_EXCEED_REASSEMBLY
-+/* Parameter problems */
-+# define ICMPV6_PARAMPROB ICMP6_PARAM_PROB
-+# define ICMPV6_PARAMPROB_PROB ICMP6_PARAMPROB_HEADER
-+# define ICMPV6_PARAMPROB_NEXTHDR ICMP6_PARAMPROB_NEXTHEADER
-+# define ICMPV6_PARAMPROB_BADOPT ICMP6_PARAMPROB_OPTION
-+/* Neighbor discovery */
-+# define ICMPV6_ROUTERSOL ND_ROUTER_SOLICIT
-+# define ICMPV6_ROUTERADV ND_ROUTER_ADVERT
-+# define ICMPV6_NEIGHBORSOL ND_NEIGHBOR_SOLICIT
-+# define ICMPV6_NEIGHBORADV ND_NEIGHBOR_ADVERT
-+# define ICMPV6_REDIRECT ND_REDIRECT
-+
-+# define icmp_type icmp6_type
-+# define icmp_code icmp6_code
-+# define icmp_nexthopmtu icmp6_mtu
-+# define icmp_grpdelay icmp6_maxdelay
-+# define icmp_paramptr icmp6_pptr
-+#endif
-+
-
- if (left < ICMPV6_MINLEN)
- goto trunc;
-diff -urN tcpdump-3.4.orig/print-igrp.c tcpdump-3.4/print-igrp.c
---- tcpdump-3.4.orig/print-igrp.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-igrp.c Sat Jul 3 17:58:06 1999
-@@ -33,9 +33,13 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <errno.h>
- #include <stdio.h>
-diff -urN tcpdump-3.4.orig/print-ip.c tcpdump-3.4/print-ip.c
---- tcpdump-3.4.orig/print-ip.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-ip.c Sat Jul 3 17:58:06 1999
-@@ -36,11 +36,14 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #ifdef HAVE_MALLOC_H
- #include <malloc.h>
-diff -urN tcpdump-3.4.orig/print-ipv6.c tcpdump-3.4/print-ipv6.c
---- tcpdump-3.4.orig/print-ipv6.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-ipv6.c Sat Jul 3 19:02:24 1999
-@@ -111,16 +111,23 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <netdb.h>
--#include <netinet6/in6.h>
-
--#include <netinet6/ipv6.h>
-+#if __GLIBC__ >= 2
-+# include <netinet/ip6.h>
-+#else
-+# include <netinet6/in6.h>
-+# include <netinet6/ipv6.h>
-+#endif
-
- #include <stdio.h>
- #ifdef __STDC__
-@@ -162,7 +169,7 @@
- printf(" Pad%d", optlen);
- break;
- case 194:
-- printf(" Jumbo %d", ntohl(*(__u32*)optptr));
-+ printf(" Jumbo %d", ntohl(*(u_int32_t*)optptr));
- if (optlen != 6)
- printf(" <len %d is wrong>", optlen);
- break;
-@@ -193,7 +200,14 @@
- printf(" } ");
- }
-
-+#if __GLIBC__ >= 2
-+static void frag_print(struct ip6_frag *ip)
-+# define frag_reserved ip6f_reserved
-+# define frag_id ip6f_ident
-+# define frag_bitsoffset ip6f_offlg
-+#else
- static void frag_print(struct ipv6_fraghdr *ip)
-+#endif
- {
- u_int16_t bitoffset;
- printf(" frag[");
-@@ -206,7 +220,15 @@
- printf(" id=%u] ", ntohl(ip->frag_id));
- }
-
-+#if __GLIBC__ >= 2
-+static void route_print(struct ip6_rthdr0 *ip)
-+#define i6sr_type ip6r0_type
-+#define i6sr_numaddrs ip6r0_len
-+#define i6sr_left ip6r0_segleft
-+#define i6sr_reserved ip6r0_reserved
-+#else
- static void route_print(struct ipv6_srcroute0 *ip)
-+#endif
- {
- printf("rthdr%d ", ip->i6sr_type);
- if (ip->i6sr_type == 0) {
-@@ -216,7 +238,7 @@
- while (n > 0) {
- if (n == ip->i6sr_left)
- printf ("|> ");
-- if (htonl(1<<i)&*(__u32*)&ip->i6sr_reserved)
-+ if (htonl(1<<i)&*(u_int32_t*)&ip->i6sr_reserved)
- printf("!");
- printf("%s ", ipv6addr_string(a));
- a++;
-@@ -224,7 +246,7 @@
- n--;
- }
- if (i>0) {
-- if (htonl(1<<i)&*(__u32*)&ip->i6sr_reserved)
-+ if (htonl(1<<i)&*(u_int32_t*)&ip->i6sr_reserved)
- printf("! ");
- }
- }
-@@ -264,7 +286,11 @@
- void ipv6_print (register const u_char *bp, register int length)
- {
- char buf[80];
-+#if __GLIBC__ >= 2
-+ register const struct ip6_hdr *ip;
-+#else
- register const struct ipv6 *ip;
-+#endif
- u_int8_t nhdr;
- int first = 1, len=0;
- char *cp;
-@@ -272,12 +298,21 @@
- struct hostent *name;
- int is_fragment = 0;
-
-- ip= (const struct ipv6 *) bp;
-+#if __GLIBC__ >= 2
-+ ip= (const struct ip6_hdr *) bp;
-+ if (bp + sizeof(struct ip6_hdr) > snapend) {
-+#else
-+ ip= (const struct ipv6_hdr *) bp;
- if (bp + sizeof(struct ipv6) > snapend) {
-+#endif
- printf("[|ipv6]");
- return;
- }
-+#if __GLIBC__ >= 2
-+ if (length < sizeof(struct ip6_hdr)){
-+#else
- if (length < sizeof(struct ipv6)){
-+#endif
- if (partial_frame)
- (void)printf("truncated-ipv6 %d", length);
- else
-@@ -285,7 +320,11 @@
- return;
- }
-
-+#if __GLIBC__ >= 2
-+ len = sizeof(struct ip6_hdr) + ntohs(ip->ip6_plen);
-+#else
- len = sizeof(struct ipv6) + ntohs(ip->ipv6_length);
-+#endif
-
- if (length < len) {
- if (!partial_frame) {
-@@ -295,13 +334,24 @@
- }
- length = len;
-
-+#if __GLIBC__ >= 2
-+ len = sizeof(struct ip6_hdr);
-+
-+ printf(" %s > %s ", ipv6addr_string(&(ip->ip6_src)),
-+ ipv6addr_string(&(ip->ip6_dst)));
-+#else
- len = sizeof(struct ipv6);
-
- printf("%s > %s ", ipv6addr_string(&(ip->ipv6_src)),
- ipv6addr_string(&(ip->ipv6_dst)));
-+#endif
-
- if (vflag) {
-+#if __GLIBC__ >= 2
-+ p = ntohl(ip->ip6_flow);
-+#else
- p = ntohl(ip->ipv6_versfl);
-+#endif
- printf(" (");
- if ((p>>28) != 6)
- printf("v%d, ", p>>28); /* version */
-@@ -318,20 +368,40 @@
- }
- if (p&0x00fffff)
- printf("fl 0x%05x, ", p&0x00fffff); /* flow label */
-+#if __GLIBC__ >= 2
-+ printf("len %d, ", ntohs(ip->ip6_plen)); /* payload length */
-+ printf("hop %d) ", ip->ip6_hlim);
-+#else
- printf("len %d, ", ntohs(ip->ipv6_length)); /* payload length */
- printf("hop %d) ", ip->ipv6_hoplimit);
-+#endif
- }
--
-+
-+#if __GLIBC__ >= 2
-+ nhdr = ip->ip6_nxt;
-+#else
- nhdr = ip->ipv6_nexthdr;
-+#endif
- cp = (char *)(ip + 1);
-
-+#if __GLIBC__ >= 2
-+ while (( nhdr != IPPROTO_NONE) && (nhdr != IPPROTO_TCP) &&
-+ (nhdr != IPPROTO_UDP) && (nhdr != IPPROTO_ICMPV6) &&
-+ (nhdr != IPPROTO_IPIP) && (nhdr != IPPROTO_IPV6) &&
-+ (nhdr != IPPROTO_RSVP)) {
-+#else
- while ((nhdr!=NEXTHDR_NONE)&&(nhdr!=NEXTHDR_TCP)&&(nhdr!=NEXTHDR_UDP)
- &&(nhdr!=NEXTHDR_ICMPV6)&&(nhdr!=NEXTHDR_IPV4)&&
- (nhdr!=NEXTHDR_IPV6) && (nhdr!=IPPROTO_RSVP) &&
- (nhdr!=IPPROTO_PIM)) {
-+#endif
- switch (nhdr) {
-
-+#if __GLIBC__ >= 2
-+ case IPPROTO_HOPOPTS:
-+#else
- case NEXTHDR_HOP: /* hop by hop (0)*/
-+#endif
- len += (cp[1]+1)<<3;
- if (bp+len <= snapend)
- hop_print(cp);
-@@ -340,66 +410,140 @@
- nhdr = cp[0];
- cp += (cp[1]+1)<<3;
- break;
--
-+#if __GLIBC__ >= 2
-+ case IPPROTO_ROUTING:
-+ len += sizeof (struct ip6_rthdr0 );
-+#else
- case NEXTHDR_ROUTING: /* routing header (43)*/
- len += sizeof (struct ipv6_srcroute0 );
-+#endif
- if (bp+len<=snapend && vflag)
-+#if __GLIBC__ >= 2
-+ route_print((struct ipv6_rthdr0 *)cp);
-+#else
- route_print((struct ipv6_srcroute0 *)cp);
-+#endif
- else
- printf(" route-hdr");
- nhdr = cp[0];
- cp += (cp[1]+1)<<3;
- break;
--
-+#if __GLIBC__ >= 2
-+ case IPPROTO_FRAGMENT:
-+ len += sizeof (struct ip6_frag);
-+#else
- case NEXTHDR_FRAGMENT: /* fragment header (44)*/
- len += sizeof (struct ipv6_fraghdr);
-+#endif
- if (bp+len <= snapend && vflag)
-+#if __GLIBC__ >= 2
-+ frag_print((struct ipv6_frag *)cp);
-+#else
- frag_print((struct ipv6_fraghdr *)cp);
-+#endif
- else
- printf(" frag ");
-- if (!((((struct ipv6_fraghdr *)cp)->frag_bitsoffset) & htons(0xfff8))) {
-+#if __GLIBC__ >= 2
-+ if (!((((struct ip6_frag *)cp)->ip6f_offlg) & htons(IP6F_OFF_MASK))) {
-+#else
-+ /* IP6_OFFMASK as defined in netinet/ipv6.h doesn't
-+ care about endianess */
-+ if (!((((struct ipv6_fraghdr *)cp)->frag_bitsoffset) & htons(IP6_OFFMASK))) {
-+#endif
- nhdr = cp[0];
- cp += 8;
- is_fragment = 1;
- break;
- }
-+#if __GLIBC__ >= 2
-+ nhdr = ((struct ip6_frag *) cp)->ip6f_nxt;
-+#else
- nhdr = ((struct ipv6_fraghdr *) cp)->frag_nexthdr;
-+#endif
- printf("nhdr=");
- switch (nhdr) {
-+#if __GLIBC__ >= 2
-+ case IPPROTO_HOPOPTS:
-+#else
- case NEXTHDR_HOP:
-+#endif
- printf("hop");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_IGMP:
-+#else
- case NEXTHDR_IGMP:
-+#endif
- printf("igmp");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_TCP:
-+#else
- case NEXTHDR_TCP:
-+#endif
- printf("tcp");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_UDP:
-+#else
- case NEXTHDR_UDP:
-+#endif
- printf("udp");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_IPV6:
-+#else
- case NEXTHDR_IPV6:
-+#endif
- printf("ipv6");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_ROUTING:
-+#else
- case NEXTHDR_ROUTING:
-+#endif
- printf("routing");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_FRAGMENT:
-+#else
- case NEXTHDR_FRAGMENT:
-+#endif
- printf("frag");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_ESP:
-+#else
- case NEXTHDR_ESP:
-+#endif
- printf("esp");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_AH:
-+#else
- case NEXTHDR_AH:
-+#endif
- printf("auth");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_ICMPV6:
-+#else
- case NEXTHDR_ICMPV6:
-+#endif
- printf("icmpv6");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_NONE:
-+#else
- case NEXTHDR_NONE:
-+#endif
- printf("no next");
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_DSTOPTS:
-+#else
- case NEXTHDR_DEST:
-+#endif
- printf("dest");
- break;
- default:
-@@ -407,7 +551,11 @@
- }
- return;
-
-+#if __GLIBC__ >= 2
-+ case IPPROTO_ESP:
-+#else
- case NEXTHDR_ESP: /* encapsulation header (50)*/
-+#endif
- len += sizeof(u_int32_t);
- #ifdef IPSEC
- if (bp + len <= snapend && vflag) {
-@@ -415,10 +563,14 @@
- printf(" ");
- } else
- #endif
-- printf(" esp spi=%08x", *(__u32*)cp);
-+ printf(" esp spi=%08x", *(u_int32_t*)cp);
- return;
-
-+#if __GLIBC__ >= 2
-+ case IPPROTO_AH:
-+#else
- case NEXTHDR_AH: /* authentication header (51)*/
-+#endif
- #ifdef IPSEC
- len += sizeof(struct ipsec_ah) + sizeof(u_int32_t) * ((struct ipsec_ah *)cp)->ah_datalen;
- if (bp+len <= snapend && vflag) {
-@@ -430,13 +582,17 @@
- cp += ((struct ipsec_ah *)cp)->ah_datalen * sizeof (u_int32_t)+ sizeof(struct ipsec_ah);
- #else
- len += (cp[1] + 2)<<2;
-- printf(" ah spi=%08x", *(__u32*)(cp+4));
-+ printf(" ah spi=%08x", *(u_int32_t*)(cp+4));
- nhdr = cp[0];
- cp += (cp[1]+2)<<2;
- #endif
- break;
-
-+#if __GLIBC__ >= 2
-+ case IPPROTO_DSTOPTS:
-+#else
- case NEXTHDR_DEST: /* destination options header (60)*/
-+#endif
- len += (cp[1]+1)<<3;
- if (bp + len <= snapend && vflag)
- dest_print(cp);
-@@ -457,27 +613,53 @@
- if (is_fragment)
- partial_frame++;
- switch (nhdr) {
-+#if __GLIBC__ >= 2
-+ case IPPROTO_TCP:
-+#else
- case NEXTHDR_TCP:
-+#endif
- tcp_print(cp, len, (const u_char *)ip);
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_UDP:
-+#else
- case NEXTHDR_UDP:
-+#endif
- udp_print(cp, len, (const u_char *)ip);
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_ICMPV6:
-+#else
- case NEXTHDR_ICMPV6:
-+#endif
- icmpv6_print(cp, len);
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_IPIP:
-+#else
- case NEXTHDR_IPV4:
-+#endif
- printf(": v4-in-v6");
- ip_print(cp, len);
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_IPV6:
-+#else
- case NEXTHDR_IPV6:
-+#endif
- printf(": v6-in-v6");
- ipv6_print(cp, len);
- break;
-+#if __GLIBC__ >= 2
-+ case IPPROTO_RSVP:
-+#else
- case IPPROTO_RSVP:
-+#endif
- printf(" RSVP ");
-+#ifdef RSVP_TCPDUMP
- ntoh_rsvp_packet(cp, len);
- rsvp_print_pkt(cp, len);
-+#endif
- break;
- case IPPROTO_PIM:
- printf(" PIMv2 ");
-diff -urN tcpdump-3.4.orig/print-ipx.c tcpdump-3.4/print-ipx.c
---- tcpdump-3.4.orig/print-ipx.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-ipx.c Sat Jul 3 17:58:06 1999
-@@ -34,11 +34,14 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #ifdef __STDC__
- #include <stdlib.h>
-diff -urN tcpdump-3.4.orig/print-krb.c tcpdump-3.4/print-krb.c
---- tcpdump-3.4.orig/print-krb.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-krb.c Sat Jul 3 17:58:06 1999
-@@ -33,9 +33,13 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <ctype.h>
- #include <errno.h>
-diff -urN tcpdump-3.4.orig/print-nfs.c tcpdump-3.4/print-nfs.c
---- tcpdump-3.4.orig/print-nfs.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-nfs.c Sat Jul 3 17:58:06 1999
-@@ -38,7 +38,12 @@
- #include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <rpc/rpc.h>
-
-diff -urN tcpdump-3.4.orig/print-null.c tcpdump-3.4/print-null.c
---- tcpdump-3.4.orig/print-null.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-null.c Sat Jul 3 17:58:06 1999
-@@ -45,11 +45,14 @@
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
- #include <netinet/if_ether.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <pcap.h>
- #include <stdio.h>
-diff -urN tcpdump-3.4.orig/print-ospf.c tcpdump-3.4/print-ospf.c
---- tcpdump-3.4.orig/print-ospf.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-ospf.c Sat Jul 3 17:58:06 1999
-@@ -33,7 +33,12 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <ctype.h>
- #include <stdio.h>
-diff -urN tcpdump-3.4.orig/print-pim.c tcpdump-3.4/print-pim.c
---- tcpdump-3.4.orig/print-pim.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-pim.c Sat Jul 3 18:49:27 1999
-@@ -31,11 +31,14 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <stdio.h>
- #include <stdlib.h>
-@@ -43,6 +46,10 @@
-
- #include "interface.h"
- #include "addrtoname.h"
-+
-+#define __u32 u_int32_t
-+#define __u16 u_int16_t
-+#define __u8 u_int8_t
-
- void
- pim_print(register const u_char *bp, register u_int len)
-diff -urN tcpdump-3.4.orig/print-raw.c tcpdump-3.4/print-raw.c
---- tcpdump-3.4.orig/print-raw.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-raw.c Sat Jul 3 17:58:06 1999
-@@ -40,11 +40,14 @@
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
- #include <netinet/if_ether.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <pcap.h>
- #include <stdio.h>
-diff -urN tcpdump-3.4.orig/print-rip.c tcpdump-3.4/print-rip.c
---- tcpdump-3.4.orig/print-rip.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-rip.c Sat Jul 3 17:58:06 1999
-@@ -31,9 +31,13 @@
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <stdio.h>
-
-diff -urN tcpdump-3.4.orig/print-sl.c tcpdump-3.4/print-sl.c
---- tcpdump-3.4.orig/print-sl.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-sl.c Sat Jul 3 17:58:06 1999
-@@ -35,7 +35,7 @@
- #include <sys/timeb.h>
- #include <sys/file.h>
- #include <sys/ioctl.h>
--#include <sys/mbuf.h>
-+#include "./sys/mbuf.h"
- #include <sys/socket.h>
-
- #if __STDC__
-@@ -47,14 +47,17 @@
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
- #include <netinet/if_ether.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-
--#include <net/slcompress.h>
--#include <net/slip.h>
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-+
-+#include "./net/slcompress.h"
-+#include "./net/slip.h"
-
- #include <ctype.h>
- #include <netdb.h>
-diff -urN tcpdump-3.4.orig/print-sunrpc.c tcpdump-3.4/print-sunrpc.c
---- tcpdump-3.4.orig/print-sunrpc.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-sunrpc.c Sat Jul 3 17:58:06 1999
-@@ -43,7 +43,12 @@
- #include <netinet/if_ether.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <rpc/rpc.h>
- #ifdef HAVE_RPC_RPCENT_H
-diff -urN tcpdump-3.4.orig/print-tcp.c tcpdump-3.4/print-tcp.c
---- tcpdump-3.4.orig/print-tcp.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-tcp.c Sat Jul 3 17:58:06 1999
-@@ -32,20 +32,31 @@
- #include <sys/param.h>
- #include <sys/time.h>
-
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#else
-+# define __FAVOR_BSD
-+#endif
-+
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-
- #ifdef HAVE_MEMORY_H
- #include <memory.h>
- #endif
- #include <stdio.h>
-+
- #ifdef INET6
--#include <netinet6/in6.h>
--#include <netinet6/ipv6.h>
-+# if __GLIBC__ >= 2
-+# include <netinet/ip6.h>
-+# else
-+# include <netinet6/in6.h>
-+# include <netinet6/ipv6.h>
-+# endif
- #endif /* INET6 */
-
- #include <stdlib.h>
-diff -urN tcpdump-3.4.orig/print-tr.c tcpdump-3.4/print-tr.c
---- tcpdump-3.4.orig/print-tr.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-tr.c Sat Jul 3 17:58:06 1999
-@@ -33,16 +33,20 @@
- #endif
- #include <net/if.h>
-
-+#include <asm/types.h>
- #include <netinet/in.h>
- #include <netinet/if_tr.h>
- #include <netinet/if_ether.h> /* just to get ETHERMTU */
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
- #include <netinet/tcp.h>
--#include <netinet/tcpip.h>
-+
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-
- #include <stdio.h>
- #include <pcap.h>
-diff -urN tcpdump-3.4.orig/print-udp.c tcpdump-3.4/print-udp.c
---- tcpdump-3.4.orig/print-udp.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/print-udp.c Sat Jul 3 17:58:06 1999
-@@ -33,15 +33,26 @@
- #include <sys/time.h>
- #include <sys/socket.h>
-
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#else
-+# define __FAVOR_BSD
-+#endif
-+
- #include <netinet/in.h>
- #include <netinet/in_systm.h>
- #include <netinet/ip.h>
--#include <netinet/ip_var.h>
- #include <netinet/udp.h>
--#include <netinet/udp_var.h>
-+
- #ifdef INET6
--#include <netinet6/in6.h>
--#include <netinet6/ipv6.h>
-+# if __GLIBC__ >= 2
-+# include <netinet/ip6.h>
-+# else
-+# include <netinet6/in6.h>
-+# include <netinet6/ipv6.h>
-+# endif
- #endif
-
- #ifdef NOERROR
-diff -urN tcpdump-3.4.orig/tcpdump.c tcpdump-3.4/tcpdump.c
---- tcpdump-3.4.orig/tcpdump.c Sat Jul 3 17:50:45 1999
-+++ tcpdump-3.4/tcpdump.c Sat Jul 3 17:58:06 1999
-@@ -104,8 +104,8 @@
- static struct printer printers[] = {
- { ether_if_print, DLT_EN10MB },
- { tr_if_print, DLT_IEEE802 },
-- { sl_if_print, DLT_SLIP },
-- { sl_bsdos_if_print, DLT_SLIP_BSDOS },
-+/* { sl_if_print, DLT_SLIP }, */
-+/* { sl_bsdos_if_print, DLT_SLIP_BSDOS }, */
- { ppp_if_print, DLT_PPP },
- { ppp_bsdos_if_print, DLT_PPP_BSDOS },
- { fddi_if_print, DLT_FDDI },
-diff -urN tcpdump-3.4.orig/xxx tcpdump-3.4/xxx
---- tcpdump-3.4.orig/xxx Thu Jan 1 01:00:00 1970
-+++ tcpdump-3.4/xxx Sat Jul 3 17:58:06 1999
-@@ -0,0 +1,6 @@
-+#if ! __GLIBC__ >= 2
-+# include <netinet/ip_var.h>
-+# include <netinet/udp_var.h>
-+# include <netinet/tcpip.h>
-+#endif
-+