Deleted Added
sdiff udiff text old ( 127675 ) new ( 146778 )
full compact
1/*
2 * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that: (1) source code distributions
7 * retain the above copyright notice and this paragraph in its entirety, (2)
8 * distributions including binary code include the above copyright notice and

--- 4 unchanged lines hidden (view full) ---

13 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
14 * the University nor the names of its contributors may be used to endorse
15 * or promote products derived from this software without specific prior
16 * written permission.
17 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 * $FreeBSD: head/contrib/tcpdump/print-ether.c 127675 2004-03-31 14:57:24Z bms $
22 */
23#ifndef lint
24static const char rcsid[] _U_ =
25 "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.82.2.3 2003/12/29 22:42:21 hannes Exp $ (LBL)";
26#endif
27
28#ifdef HAVE_CONFIG_H
29#include "config.h"
30#endif
31
32#include <tcpdump-stdinc.h>
33
34#include <stdio.h>
35#include <pcap.h>
36
37#include "interface.h"
38#include "addrtoname.h"
39#include "ethertype.h"
40
41#include "ether.h"
42
43const u_char *snapend;
44
45const struct tok ethertype_values[] = {
46 { ETHERTYPE_IP, "IPv4" },
47 { ETHERTYPE_MPLS, "MPLS unicast" },
48 { ETHERTYPE_MPLS_MULTI, "MPLS multicast" },
49 { ETHERTYPE_IPV6, "IPv6" },
50 { ETHERTYPE_8021Q, "802.1Q" },
51 { ETHERTYPE_VMAN, "VMAN" },
52 { ETHERTYPE_PUP, "PUP" },
53 { ETHERTYPE_ARP, "ARP"},

--- 12 unchanged lines hidden (view full) ---

66 { ETHERTYPE_VEXP, "VEXP" },
67 { ETHERTYPE_VPROD, "VPROD" },
68 { ETHERTYPE_ATALK, "Appletalk" },
69 { ETHERTYPE_AARP, "Appletalk ARP" },
70 { ETHERTYPE_IPX, "IPX" },
71 { ETHERTYPE_PPP, "PPP" },
72 { ETHERTYPE_PPPOED, "PPPoE D" },
73 { ETHERTYPE_PPPOES, "PPPoE S" },
74 { ETHERTYPE_LOOPBACK, "Loopback" },
75 { 0, NULL}
76};
77
78static inline void
79ether_hdr_print(register const u_char *bp, u_int length)
80{
81 register const struct ether_header *ep;
82 ep = (const struct ether_header *)bp;

--- 65 unchanged lines hidden (view full) ---

148 if (!xflag && !qflag)
149 default_print(p, caplen);
150 }
151}
152
153/*
154 * This is the top level routine of the printer. 'p' points
155 * to the ether header of the packet, 'h->ts' is the timestamp,
156 * 'h->length' is the length of the packet off the wire, and 'h->caplen'
157 * is the number of bytes actually captured.
158 */
159u_int
160ether_if_print(const struct pcap_pkthdr *h, const u_char *p)
161{
162 ether_print(p, h->len, h->caplen);
163
164 return (ETHER_HDRLEN);

--- 16 unchanged lines hidden (view full) ---

181 u_int length, u_int caplen, u_short *extracted_ether_type)
182{
183 recurse:
184 *extracted_ether_type = ether_type;
185
186 switch (ether_type) {
187
188 case ETHERTYPE_IP:
189 ip_print(p, length);
190 return (1);
191
192#ifdef INET6
193 case ETHERTYPE_IPV6:
194 ip6_print(p, length);
195 return (1);
196#endif /*INET6*/
197
198 case ETHERTYPE_ARP:
199 case ETHERTYPE_REVARP:
200 arp_print(p, length, caplen);
201 return (1);
202
203 case ETHERTYPE_DN:
204 decnet_print(p, length, caplen);
205 return (1);
206
207 case ETHERTYPE_ATALK:
208 if (vflag)

--- 36 unchanged lines hidden (view full) ---

245 ether_hdr_print(p - 18, length + 4);
246 }
247
248 if (!xflag && !qflag)
249 default_print(p - 18, caplen + 4);
250
251 return (1);
252
253 case ETHERTYPE_PPPOED:
254 case ETHERTYPE_PPPOES:
255 case ETHERTYPE_PPPOED2:
256 case ETHERTYPE_PPPOES2:
257 pppoe_print(p, length);
258 return (1);
259
260 case ETHERTYPE_PPP:
261 if (length) {
262 printf(": ");
263 ppp_print(p, length);
264 }
265 return (1);
266
267 case ETHERTYPE_LOOPBACK:

--- 8 unchanged lines hidden (view full) ---

276 case ETHERTYPE_SCA:
277 case ETHERTYPE_MOPRC:
278 case ETHERTYPE_MOPDL:
279 /* default_print for now */
280 default:
281 return (0);
282 }
283}