1210284Sjmallett/*
2232812Sjmallett * Copyright (c) 1988-2002
3215990Sjmallett *	The Regents of the University of California.  All rights reserved.
4210284Sjmallett *
5210284Sjmallett * Redistribution and use in source and binary forms, with or without
6215990Sjmallett * modification, are permitted provided that: (1) source code distributions
7215990Sjmallett * retain the above copyright notice and this paragraph in its entirety, (2)
8215990Sjmallett * distributions including binary code include the above copyright notice and
9210284Sjmallett * this paragraph in its entirety in the documentation or other materials
10215990Sjmallett * provided with the distribution, and (3) all advertising materials mentioning
11215990Sjmallett * features or use of this software display the following acknowledgement:
12210284Sjmallett * ``This product includes software developed by the University of California,
13215990Sjmallett * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
14215990Sjmallett * the University nor the names of its contributors may be used to endorse
15215990Sjmallett * or promote products derived from this software without specific prior
16215990Sjmallett * written permission.
17215990Sjmallett * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
18232812Sjmallett * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
19215990Sjmallett * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20215990Sjmallett *
21215990Sjmallett * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.285 2008-08-16 11:36:20 hannes Exp $ (LBL)
22215990Sjmallett */
23215990Sjmallett
24215990Sjmallett#ifndef tcpdump_interface_h
25215990Sjmallett#define tcpdump_interface_h
26215990Sjmallett
27215990Sjmallett#ifdef HAVE_OS_PROTO_H
28215990Sjmallett#include "os-proto.h"
29232812Sjmallett#endif
30215990Sjmallett
31215990Sjmallett/* snprintf et al */
32215990Sjmallett
33215990Sjmallett#include <stdarg.h>
34215990Sjmallett
35215990Sjmallett#if HAVE_STDINT_H
36215990Sjmallett#include <stdint.h>
37215990Sjmallett#endif
38210284Sjmallett
39210284Sjmallett#if !defined(HAVE_SNPRINTF)
40210284Sjmallettint snprintf(char *, size_t, const char *, ...)
41210284Sjmallett     __attribute__((format(printf, 3, 4)));
42210284Sjmallett#endif
43210284Sjmallett
44210284Sjmallett#if !defined(HAVE_VSNPRINTF)
45215990Sjmallettint vsnprintf(char *, size_t, const char *, va_list)
46210284Sjmallett     __attribute__((format(printf, 3, 0)));
47210284Sjmallett#endif
48210284Sjmallett
49210284Sjmallett#ifndef HAVE_STRLCAT
50210284Sjmallettextern size_t strlcat(char *, const char *, size_t);
51210284Sjmallett#endif
52232812Sjmallett#ifndef HAVE_STRLCPY
53210284Sjmallettextern size_t strlcpy(char *, const char *, size_t);
54232812Sjmallett#endif
55232812Sjmallett
56232812Sjmallett#ifndef HAVE_STRDUP
57232812Sjmallettextern char *strdup(const char *);
58232812Sjmallett#endif
59232812Sjmallett
60232812Sjmallett#ifndef HAVE_STRSEP
61232812Sjmallettextern char *strsep(char **, const char *);
62232812Sjmallett#endif
63232812Sjmallett
64232812Sjmallett#define PT_VAT		1	/* Visual Audio Tool */
65232812Sjmallett#define PT_WB		2	/* distributed White Board */
66232812Sjmallett#define PT_RPC		3	/* Remote Procedure Call */
67232812Sjmallett#define PT_RTP		4	/* Real-Time Applications protocol */
68243587Sjmallett#define PT_RTCP		5	/* Real-Time Applications control protocol */
69210284Sjmallett#define PT_SNMP		6	/* Simple Network Management Protocol */
70210284Sjmallett#define PT_CNFP		7	/* Cisco NetFlow protocol */
71243587Sjmallett#define PT_TFTP		8	/* trivial file transfer protocol */
72210284Sjmallett#define PT_AODV		9	/* Ad-hoc On-demand Distance Vector Protocol */
73210284Sjmallett#define PT_CARP		10	/* Common Address Redundancy Protocol */
74210284Sjmallett#define PT_RADIUS	11	/* RADIUS authentication Protocol */
75232812Sjmallett#define PT_ZMTP1	12	/* ZeroMQ Message Transport Protocol 1.0 */
76232812Sjmallett#define PT_VXLAN	13	/* Virtual eXtensible Local Area Network */
77210284Sjmallett
78210284Sjmallett#ifndef min
79210284Sjmallett#define min(a,b) ((a)>(b)?(b):(a))
80210284Sjmallett#endif
81210284Sjmallett#ifndef max
82210284Sjmallett#define max(a,b) ((b)>(a)?(b):(a))
83210284Sjmallett#endif
84210284Sjmallett
85210284Sjmallett#define ESRC(ep) ((ep)->ether_shost)
86210284Sjmallett#define EDST(ep) ((ep)->ether_dhost)
87215990Sjmallett
88210284Sjmallett#ifndef NTOHL
89210284Sjmallett#define NTOHL(x)	(x) = ntohl(x)
90210284Sjmallett#define NTOHS(x)	(x) = ntohs(x)
91210284Sjmallett#define HTONL(x)	(x) = htonl(x)
92210284Sjmallett#define HTONS(x)	(x) = htons(x)
93210284Sjmallett#endif
94215990Sjmallett#endif
95215990Sjmallett
96210284Sjmallett#ifndef MIN
97210284Sjmallett#define MIN(a,b) ((a)<(b)?(a):(b))
98210284Sjmallett#endif
99210284Sjmallett
100210284Sjmallettextern char *program_name;	/* used to generate self-identifying messages */
101210284Sjmallett
102210284Sjmallettextern int32_t thiszone;	/* seconds offset from gmt to local time */
103210284Sjmallett
104210284Sjmallett/*
105210284Sjmallett * True if  "l" bytes of "var" were captured.
106210284Sjmallett *
107210284Sjmallett * The "snapend - (l) <= snapend" checks to make sure "l" isn't so large
108210284Sjmallett * that "snapend - (l)" underflows.
109210284Sjmallett *
110210284Sjmallett * The check is for <= rather than < because "l" might be 0.
111210284Sjmallett */
112210284Sjmallett#define TTEST2(var, l) (snapend - (l) <= snapend && \
113210284Sjmallett			(const u_char *)&(var) <= snapend - (l))
114210284Sjmallett
115210284Sjmallett/* True if "var" was captured */
116210284Sjmallett#define TTEST(var) TTEST2(var, sizeof(var))
117215990Sjmallett
118215990Sjmallett/* Bail if "l" bytes of "var" were not captured */
119215990Sjmallett#define TCHECK2(var, l) if (!TTEST2(var, l)) goto trunc
120215990Sjmallett
121215990Sjmallett/* Bail if "var" was not captured */
122210284Sjmallett#define TCHECK(var) TCHECK2(var, sizeof(var))
123215990Sjmallett
124215990Sjmallettextern void ts_print(const struct timeval *);
125215990Sjmallettextern void relts_print(int);
126215990Sjmallett
127215990Sjmallettextern int fn_print(const u_char *, const u_char *);
128215990Sjmallettextern int fn_printn(const u_char *, u_int, const u_char *);
129215990Sjmallettextern int fn_printzp(const u_char *, u_int, const u_char *);
130215990Sjmallettextern int mask2plen(u_int32_t);
131215990Sjmallettextern const char *tok2strary_internal(const char **, int, const char *, int);
132210284Sjmallett#define	tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i)
133210284Sjmallett
134215990Sjmallettextern const char *dnaddr_string(u_short);
135210284Sjmallett
136215990Sjmallettextern void error(const char *, ...)
137210284Sjmallett    __attribute__((noreturn, format (printf, 1, 2)));
138215990Sjmallettextern void warning(const char *, ...) __attribute__ ((format (printf, 1, 2)));
139210284Sjmallett
140210284Sjmallettextern char *read_infile(char *);
141210284Sjmallettextern char *copy_argv(char **);
142215990Sjmallett
143210284Sjmallettextern void safeputchar(int);
144210284Sjmallettextern void safeputs(const char *, int);
145210284Sjmallett
146210284Sjmallettextern const char *isonsap_string(const u_char *, register u_int);
147210284Sjmallettextern const char *protoid_string(const u_char *);
148210284Sjmallettextern const char *ipxsap_string(u_short);
149210284Sjmallettextern const char *dnname_string(u_short);
150210284Sjmallettextern const char *dnnum_string(u_short);
151210284Sjmallett
152210284Sjmallett/* checksum routines */
153210284Sjmallettextern void init_checksum(void);
154210284Sjmallettextern u_int16_t verify_crc10_cksum(u_int16_t, const u_char *, int);
155210284Sjmallettextern u_int16_t create_osi_cksum(const u_int8_t *, int, int);
156210284Sjmallett
157210284Sjmallett/* The printer routines. */
158210284Sjmallett
159210284Sjmallett#include <pcap.h>
160210284Sjmallett
161210284Sjmallettextern int print_unknown_data(const u_char *, const char *,int);
162210284Sjmallettextern void ascii_print(const u_char *, u_int);
163210284Sjmallettextern void hex_and_ascii_print_with_offset(const char *, const u_char *,
164210284Sjmallett	u_int, u_int);
165210284Sjmallettextern void hex_and_ascii_print(const char *, const u_char *, u_int);
166210284Sjmallettextern void hex_print_with_offset(const char *, const u_char *, u_int, u_int);
167210284Sjmallettextern void hex_print(const char *, const u_char *, u_int);
168210284Sjmallettextern void telnet_print(const u_char *, u_int);
169210284Sjmallettextern int llc_print(const u_char *, u_int, u_int, const u_char *,
170210284Sjmallett	const u_char *, u_short *);
171215990Sjmallettextern int snap_print(const u_char *, u_int, u_int, u_int);
172215990Sjmallettextern void aarp_print(const u_char *, u_int);
173215990Sjmallettextern void aodv_print(const u_char *, u_int, int);
174232812Sjmallettextern void atalk_print(const u_char *, u_int);
175215990Sjmallettextern void atm_print(u_int, u_int, u_int, const u_char *, u_int, u_int);
176215990Sjmallettextern u_int atm_if_print(const struct pcap_pkthdr *, const u_char *);
177215990Sjmallettextern u_int sunatm_if_print(const struct pcap_pkthdr *, const u_char *);
178215990Sjmallettextern int oam_print(const u_char *, u_int, u_int);
179215990Sjmallettextern void bootp_print(const u_char *, u_int);
180215990Sjmallettextern void bgp_print(const u_char *, int);
181215990Sjmallettextern void beep_print(const u_char *, u_int);
182215990Sjmallettextern void cnfp_print(const u_char *, const u_char *);
183215990Sjmallettextern void decnet_print(const u_char *, u_int, u_int);
184215990Sjmallettextern void default_print(const u_char *, u_int);
185215990Sjmallettextern void dvmrp_print(const u_char *, u_int);
186215990Sjmallettextern void egp_print(const u_char *, u_int);
187215990Sjmallettextern u_int enc_if_print(const struct pcap_pkthdr *, const u_char *);
188215990Sjmallettextern u_int pflog_if_print(const struct pcap_pkthdr *, const u_char *);
189215990Sjmallettextern void pfsync_ip_print(const u_char *, u_int);
190215990Sjmallettextern u_int arcnet_if_print(const struct pcap_pkthdr *, const u_char *);
191215990Sjmallettextern u_int arcnet_linux_if_print(const struct pcap_pkthdr *, const u_char *);
192215990Sjmallettextern u_int token_print(const u_char *, u_int, u_int);
193215990Sjmallettextern u_int token_if_print(const struct pcap_pkthdr *, const u_char *);
194232812Sjmallettextern void fddi_print(const u_char *, u_int, u_int);
195215990Sjmallettextern u_int fddi_if_print(const struct pcap_pkthdr *, const u_char *);
196215990Sjmallettextern u_int fr_if_print(const struct pcap_pkthdr *, const u_char *);
197215990Sjmallettextern u_int mfr_if_print(const struct pcap_pkthdr *, const u_char *);
198215990Sjmallettextern u_int fr_print(register const u_char *, u_int);
199232812Sjmallettextern u_int mfr_print(register const u_char *, u_int);
200232812Sjmallettextern char *q922_string(const u_char *);
201232812Sjmallettextern u_int ieee802_11_if_print(const struct pcap_pkthdr *, const u_char *);
202232812Sjmallettextern u_int ieee802_11_radio_if_print(const struct pcap_pkthdr *,
203232812Sjmallett	const u_char *);
204215990Sjmallettextern u_int ap1394_if_print(const struct pcap_pkthdr *, const u_char *);
205215990Sjmallettextern u_int ieee802_11_radio_avs_if_print(const struct pcap_pkthdr *,
206215990Sjmallett	const u_char *);
207215990Sjmallettextern void gre_print(const u_char *, u_int);
208210284Sjmallettextern void icmp_print(const u_char *, u_int, const u_char *, int);
209210284Sjmallettextern void igmp_print(const u_char *, u_int);
210210284Sjmallettextern void igrp_print(const u_char *, u_int, const u_char *);
211210284Sjmallettextern void ipN_print(const u_char *, u_int);
212210284Sjmallettextern u_int ipfc_if_print(const struct pcap_pkthdr *, const u_char *);
213210284Sjmallettextern void ipx_print(const u_char *, u_int);
214210284Sjmallettextern void isoclns_print(const u_char *, u_int, u_int);
215210284Sjmallettextern void krb_print(const u_char *);
216210284Sjmallettextern u_int llap_print(const u_char *, u_int);
217210284Sjmallettextern u_int ltalk_if_print(const struct pcap_pkthdr *, const u_char *);
218210284Sjmallettextern void msdp_print(const unsigned char *, u_int);
219210284Sjmallettextern void nfsreply_print(const u_char *, u_int, const u_char *);
220210284Sjmallettextern void nfsreq_print(const u_char *, u_int, const u_char *);
221210284Sjmallettextern void ns_print(const u_char *, u_int, int);
222210284Sjmallettextern const u_char * ns_nprint (register const u_char *, register const u_char *);
223210284Sjmallettextern void ntp_print(const u_char *, u_int);
224232812Sjmallettextern u_int null_if_print(const struct pcap_pkthdr *, const u_char *);
225232812Sjmallettextern void ospf_print(const u_char *, u_int, const u_char *);
226232812Sjmallettextern void olsr_print (const u_char *, u_int, int);
227210284Sjmallettextern void pimv1_print(const u_char *, u_int);
228210284Sjmallettextern void cisco_autorp_print(const u_char *, u_int);
229232812Sjmallettextern void rsvp_print(const u_char *, u_int);
230210284Sjmallettextern void ldp_print(const u_char *, u_int);
231210284Sjmallettextern void lldp_print(const u_char *, u_int);
232210284Sjmallettextern void rpki_rtr_print(const u_char *, u_int);
233210284Sjmallettextern void lmp_print(const u_char *, u_int);
234210284Sjmallettextern void lspping_print(const u_char *, u_int);
235210284Sjmallettextern void lwapp_control_print(const u_char *, u_int, int);
236210284Sjmallettextern void lwapp_data_print(const u_char *, u_int);
237210284Sjmallettextern void eigrp_print(const u_char *, u_int);
238210284Sjmallettextern void mobile_print(const u_char *, u_int);
239210284Sjmallettextern void pim_print(const u_char *, u_int, u_int);
240210284Sjmallettextern u_int pppoe_print(const u_char *, u_int);
241210284Sjmallettextern u_int ppp_print(register const u_char *, u_int);
242210284Sjmallettextern u_int ppp_if_print(const struct pcap_pkthdr *, const u_char *);
243210284Sjmallettextern u_int ppp_hdlc_if_print(const struct pcap_pkthdr *, const u_char *);
244210284Sjmallettextern u_int ppp_bsdos_if_print(const struct pcap_pkthdr *, const u_char *);
245210284Sjmallettextern u_int pppoe_if_print(const struct pcap_pkthdr *, const u_char *);
246210284Sjmallettextern u_int prism_if_print(const struct pcap_pkthdr *, const u_char *);
247215990Sjmallettextern void q933_print(const u_char *, u_int);
248210284Sjmallettextern int vjc_print(register const char *, u_short);
249210284Sjmallettextern void vqp_print(register const u_char *, register u_int);
250210284Sjmallettextern u_int raw_if_print(const struct pcap_pkthdr *, const u_char *);
251210284Sjmallettextern void rip_print(const u_char *, u_int);
252210284Sjmallettextern u_int sl_if_print(const struct pcap_pkthdr *, const u_char *);
253210284Sjmallettextern void lane_print(const u_char *, u_int, u_int);
254210284Sjmallettextern u_int lane_if_print(const struct pcap_pkthdr *, const u_char *);
255210284Sjmallettextern u_int cip_if_print(const struct pcap_pkthdr *, const u_char *);
256210284Sjmallettextern u_int sl_bsdos_if_print(const struct pcap_pkthdr *, const u_char *);
257210284Sjmallettextern u_int chdlc_if_print(const struct pcap_pkthdr *, const u_char *);
258210284Sjmallettextern u_int chdlc_print(register const u_char *, u_int);
259210284Sjmallettextern u_int juniper_atm1_print(const struct pcap_pkthdr *, const u_char *);
260210284Sjmallettextern u_int juniper_atm2_print(const struct pcap_pkthdr *, const u_char *);
261215990Sjmallettextern u_int juniper_mfr_print(const struct pcap_pkthdr *, register const u_char *);
262215990Sjmallettextern u_int juniper_mlfr_print(const struct pcap_pkthdr *, const u_char *);
263215990Sjmallettextern u_int juniper_mlppp_print(const struct pcap_pkthdr *, const u_char *);
264215990Sjmallettextern u_int juniper_pppoe_print(const struct pcap_pkthdr *, const u_char *);
265215990Sjmallettextern u_int juniper_pppoe_atm_print(const struct pcap_pkthdr *, const u_char *);
266215990Sjmallettextern u_int juniper_ggsn_print(const struct pcap_pkthdr *, const u_char *);
267215990Sjmallettextern u_int juniper_es_print(const struct pcap_pkthdr *, const u_char *);
268215990Sjmallettextern u_int juniper_monitor_print(const struct pcap_pkthdr *, const u_char *);
269215990Sjmallettextern u_int juniper_services_print(const struct pcap_pkthdr *, const u_char *);
270210284Sjmallettextern u_int juniper_ether_print(const struct pcap_pkthdr *, const u_char *);
271210284Sjmallettextern u_int juniper_ppp_print(const struct pcap_pkthdr *, const u_char *);
272210284Sjmallettextern u_int juniper_frelay_print(const struct pcap_pkthdr *, const u_char *);
273210284Sjmallettextern u_int juniper_chdlc_print(const struct pcap_pkthdr *, const u_char *);
274210284Sjmallettextern u_int sll_if_print(const struct pcap_pkthdr *, const u_char *);
275210284Sjmallettextern void snmp_print(const u_char *, u_int);
276210284Sjmallettextern void sunrpcrequest_print(const u_char *, u_int, const u_char *);
277210284Sjmallettextern u_int symantec_if_print(const struct pcap_pkthdr *, const u_char *);
278210284Sjmallettextern void tcp_print(const u_char *, u_int, const u_char *, int);
279210284Sjmallettextern void tftp_print(const u_char *, u_int);
280210284Sjmallettextern void timed_print(const u_char *);
281210284Sjmallettextern void udld_print(const u_char *, u_int);
282210284Sjmallettextern void udp_print(const u_char *, u_int, const u_char *, int);
283210284Sjmallettextern void vtp_print(const u_char *, u_int);
284215990Sjmallettextern void wb_print(const void *, u_int);
285210284Sjmallettextern int ah_print(register const u_char *);
286215990Sjmallettextern int ipcomp_print(register const u_char *, int *);
287215990Sjmallettextern void rx_print(register const u_char *, int, int, int, u_char *);
288210284Sjmallettextern void netbeui_print(u_short, const u_char *, int);
289210284Sjmallettextern void ipx_netbios_print(const u_char *, u_int);
290210284Sjmallettextern void nbt_tcp_print(const u_char *, int);
291210284Sjmallettextern void nbt_udp137_print(const u_char *, int);
292210284Sjmallettextern void nbt_udp138_print(const u_char *, int);
293210284Sjmallettextern void smb_tcp_print(const u_char *, int);
294210284Sjmallettextern char *smb_errstr(int, int);
295210284Sjmallettextern const char *nt_errstr(u_int32_t);
296210284Sjmallettextern void print_data(const unsigned char *, int);
297210284Sjmallettextern void l2tp_print(const u_char *, u_int);
298210284Sjmallettextern void vrrp_print(const u_char *, u_int, int);
299232812Sjmallettextern void carp_print(const u_char *, u_int, int);
300232812Sjmallettextern void slow_print(const u_char *, u_int);
301232812Sjmallettextern void sflow_print(const u_char *, u_int);
302210284Sjmallettextern void mpcp_print(const u_char *, u_int);
303210284Sjmallettextern void cfm_print(const u_char *, u_int);
304232812Sjmallettextern void pgm_print(const u_char *, u_int, const u_char *);
305210284Sjmallettextern void cdp_print(const u_char *, u_int, u_int);
306215990Sjmallettextern void dtp_print(const u_char *, u_int);
307210284Sjmallettextern void stp_print(const u_char *, u_int);
308210284Sjmallettextern void radius_print(const u_char *, u_int);
309210284Sjmallettextern void lwres_print(const u_char *, u_int);
310232812Sjmallettextern void pptp_print(const u_char *);
311210284Sjmallettextern void dccp_print(const u_char *, const u_char *, u_int);
312210284Sjmallettextern void sctp_print(const u_char *, const u_char *, u_int);
313210284Sjmallettextern void forces_print(const u_char *, u_int);
314210284Sjmallettextern void mpls_print(const u_char *, u_int);
315210284Sjmallettextern void mpls_lsp_ping_print(const u_char *, u_int);
316210284Sjmallettextern void zephyr_print(const u_char *, int);
317210284Sjmallettextern void zmtp1_print(const u_char *, u_int);
318210284Sjmallettextern void hsrp_print(const u_char *, u_int);
319210284Sjmallettextern void bfd_print(const u_char *, u_int, u_int);
320210284Sjmallettextern void sip_print(const u_char *, u_int);
321210284Sjmallettextern void syslog_print(const u_char *, u_int);
322210284Sjmallettextern u_int bt_if_print(const struct pcap_pkthdr *, const u_char *);
323210284Sjmallettextern u_int usb_linux_48_byte_print(const struct pcap_pkthdr *, const u_char *);
324210284Sjmallettextern u_int usb_linux_64_byte_print(const struct pcap_pkthdr *, const u_char *);
325210284Sjmallettextern void vxlan_print(const u_char *, u_int);
326210284Sjmallettextern void otv_print(const u_char *, u_int);
327210284Sjmallett
328210284Sjmallett
329210284Sjmallett#ifdef INET6
330210284Sjmallettextern void ip6_opt_print(const u_char *, int);
331210284Sjmallettextern int hbhopt_print(const u_char *);
332210284Sjmallettextern int dstopt_print(const u_char *);
333210284Sjmallettextern int frag6_print(const u_char *, const u_char *);
334210284Sjmallettextern int mobility_print(const u_char *, const u_char *);
335210284Sjmallettextern void ripng_print(const u_char *, unsigned int);
336210284Sjmallettextern int rt6_print(const u_char *, const u_char *);
337210284Sjmallettextern void ospf6_print(const u_char *, u_int);
338210284Sjmallettextern void dhcp6_print(const u_char *, u_int);
339210284Sjmallettextern void babel_print(const u_char *, u_int);
340210284Sjmallettextern int mask62plen(const u_char *);
341210284Sjmallett#endif /*INET6*/
342210284Sjmallett
343210284Sjmallettstruct cksum_vec {
344210284Sjmallett	const u_int8_t	*ptr;
345210284Sjmallett	int		len;
346210284Sjmallett};
347210284Sjmallettextern u_int16_t in_cksum(const struct cksum_vec *, int);
348210284Sjmallettextern u_int16_t in_cksum_shouldbe(u_int16_t, u_int16_t);
349210284Sjmallett
350215990Sjmallett#ifndef HAVE_BPF_DUMP
351210284Sjmallettstruct bpf_program;
352210284Sjmallett
353210284Sjmallettextern void bpf_dump(const struct bpf_program *, int);
354210284Sjmallett
355215990Sjmallett#endif
356215990Sjmallett
357210284Sjmallett#include "netdissect.h"
358210284Sjmallett
359210284Sjmallett/* forward compatibility */
360210284Sjmallett
361210284Sjmallett#ifndef NETDISSECT_REWORKED
362210284Sjmallettextern netdissect_options *gndo;
363210284Sjmallett
364210284Sjmallett#define bflag gndo->ndo_bflag
365210284Sjmallett#define eflag gndo->ndo_eflag
366210284Sjmallett#define fflag gndo->ndo_fflag
367210284Sjmallett#define jflag gndo->ndo_jflag
368210284Sjmallett#define Kflag gndo->ndo_Kflag
369210284Sjmallett#define nflag gndo->ndo_nflag
370210284Sjmallett#define Nflag gndo->ndo_Nflag
371210284Sjmallett#define Oflag gndo->ndo_Oflag
372210284Sjmallett#define pflag gndo->ndo_pflag
373210284Sjmallett#define qflag gndo->ndo_qflag
374210284Sjmallett#define Rflag gndo->ndo_Rflag
375210284Sjmallett#define sflag gndo->ndo_sflag
376210284Sjmallett#define Sflag gndo->ndo_Sflag
377210284Sjmallett#define tflag gndo->ndo_tflag
378210284Sjmallett#define Uflag gndo->ndo_Uflag
379210284Sjmallett#define uflag gndo->ndo_uflag
380210284Sjmallett#define vflag gndo->ndo_vflag
381210284Sjmallett#define xflag gndo->ndo_xflag
382210284Sjmallett#define Xflag gndo->ndo_Xflag
383210284Sjmallett#define Cflag gndo->ndo_Cflag
384210284Sjmallett#define Gflag gndo->ndo_Gflag
385210284Sjmallett#define Aflag gndo->ndo_Aflag
386210284Sjmallett#define Bflag gndo->ndo_Bflag
387210284Sjmallett#define Iflag gndo->ndo_Iflag
388210284Sjmallett#define suppress_default_print gndo->ndo_suppress_default_print
389210284Sjmallett#define packettype gndo->ndo_packettype
390210284Sjmallett#define sigsecret gndo->ndo_sigsecret
391210284Sjmallett#define Wflag gndo->ndo_Wflag
392210284Sjmallett#define WflagChars gndo->ndo_WflagChars
393210284Sjmallett#define Cflag_count gndo->ndo_Cflag_count
394210284Sjmallett#define Gflag_count gndo->ndo_Gflag_count
395210284Sjmallett#define Gflag_time gndo->ndo_Gflag_time
396210284Sjmallett#define Hflag gndo->ndo_Hflag
397210284Sjmallett#define snaplen     gndo->ndo_snaplen
398210284Sjmallett#define snapend     gndo->ndo_snapend
399210284Sjmallett
400210284Sjmallett#endif
401210284Sjmallett