* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.161 2001-06-18 08:52:52 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.162 2001-06-20 07:40:44 guy Exp $ (LBL)
*/
#ifndef tcpdump_interface_h
const u_char *);
extern void ppp_bsdos_if_print(u_char *, const struct pcap_pkthdr *,
const u_char *);
+extern void pppoe_if_print(u_char *, const struct pcap_pkthdr *,
+ const u_char *);
extern int vjc_print(register const char *, register u_int, u_short);
extern void raw_if_print(u_char *, const struct pcap_pkthdr *, const u_char *);
extern void rip_print(const u_char *, u_int);
#ifndef lint
static const char rcsid[] =
-"@(#) $Header: /tcpdump/master/tcpdump/print-pppoe.c,v 1.13 2001-06-15 07:24:51 itojun Exp $ (LBL)";
+"@(#) $Header: /tcpdump/master/tcpdump/print-pppoe.c,v 1.14 2001-06-20 07:40:44 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
#define PPPOE_HDRLEN 6
+void
+pppoe_if_print(u_char *user, const struct pcap_pkthdr *h,
+ register const u_char *p)
+{
+ register u_int length = h->len;
+ register u_int caplen = h->caplen;
+
+ ts_print(&h->ts);
+
+ /*
+ * Some printers want to get back at the link level addresses,
+ * and/or check that they're not walking off the end of the packet.
+ * Rather than pass them all the way down, we set these globals.
+ */
+ packetp = p;
+ snapend = p + caplen;
+
+ pppoe_print(p, length);
+}
+
void
pppoe_print(register const u_char *bp, u_int length)
{
- const struct ether_header *eh;
u_short pppoe_ver, pppoe_type, pppoe_code, pppoe_sessionid, pppoe_length;
const u_char *pppoe_packet, *pppoe_payload;
- eh = (struct ether_header *)packetp;
- pppoe_packet = packetp + ETHER_HDRLEN;
+ pppoe_packet = bp;
if (pppoe_packet > snapend) {
printf("[|pppoe]");
return;
pppoe_code = pppoe_packet[1];
pppoe_sessionid = EXTRACT_16BITS(pppoe_packet + 2);
pppoe_length = EXTRACT_16BITS(pppoe_packet + 4);
- pppoe_payload = pppoe_packet + 6;
+ pppoe_payload = pppoe_packet + PPPOE_HDRLEN;
if (snapend < pppoe_payload) {
printf(" truncated PPPoE");
"@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997\n\
The Regents of the University of California. All rights reserved.\n";
static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.163 2001-06-18 08:52:54 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.164 2001-06-20 07:40:45 guy Exp $ (LBL)";
#endif
/*
#ifdef DLT_PPP_SERIAL
{ ppp_hdlc_if_print, DLT_PPP_SERIAL },
#endif
+#ifdef DLT_PPP_ETHER
+ { pppoe_if_print, DLT_PPP_ETHER },
+#endif
#ifdef DLT_LINUX_SLL
{ sll_if_print, DLT_LINUX_SLL },
#endif