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