source: rtems-libbsd/freebsd/contrib/tcpdump/interface.h @ 084d4db

4.11
Last change on this file since 084d4db was 8440506, checked in by Chris Johns <chrisj@…>, on 06/15/15 at 07:42:23

Add tcpdump and libpcap.

  • Update the file builder generator to handle generator specific cflags and includes. The tcpdump and libpcap have localised headers and need specific headers paths to see them. There are also module specific flags and these need to be passed to the lex and yacc generators.
  • Add the tcpdump support.
  • Property mode set to 100644
File size: 16.6 KB
Line 
1/*
2 * Copyright (c) 1988-2002
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
9 * this paragraph in its entirety in the documentation or other materials
10 * provided with the distribution, and (3) all advertising materials mentioning
11 * features or use of this software display the following acknowledgement:
12 * ``This product includes software developed by the University of California,
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 * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.285 2008-08-16 11:36:20 hannes Exp $ (LBL)
22 */
23
24#ifndef tcpdump_interface_h
25#define tcpdump_interface_h
26
27#ifdef HAVE_OS_PROTO_H
28#include "os-proto.h"
29#endif
30
31/* snprintf et al */
32
33#include <stdarg.h>
34
35#if HAVE_STDINT_H
36#include <stdint.h>
37#endif
38
39#if !defined(HAVE_SNPRINTF)
40int snprintf(char *, size_t, const char *, ...)
41     __attribute__((format(printf, 3, 4)));
42#endif
43
44#if !defined(HAVE_VSNPRINTF)
45int vsnprintf(char *, size_t, const char *, va_list)
46     __attribute__((format(printf, 3, 0)));
47#endif
48
49#ifndef HAVE_STRLCAT
50extern size_t strlcat(char *, const char *, size_t);
51#endif
52#ifndef HAVE_STRLCPY
53extern size_t strlcpy(char *, const char *, size_t);
54#endif
55
56#ifndef HAVE_STRDUP
57extern char *strdup(const char *);
58#endif
59
60#ifndef HAVE_STRSEP
61extern char *strsep(char **, const char *);
62#endif
63
64#define PT_VAT          1       /* Visual Audio Tool */
65#define PT_WB           2       /* distributed White Board */
66#define PT_RPC          3       /* Remote Procedure Call */
67#define PT_RTP          4       /* Real-Time Applications protocol */
68#define PT_RTCP         5       /* Real-Time Applications control protocol */
69#define PT_SNMP         6       /* Simple Network Management Protocol */
70#define PT_CNFP         7       /* Cisco NetFlow protocol */
71#define PT_TFTP         8       /* trivial file transfer protocol */
72#define PT_AODV         9       /* Ad-hoc On-demand Distance Vector Protocol */
73#define PT_CARP         10      /* Common Address Redundancy Protocol */
74#define PT_RADIUS       11      /* RADIUS authentication Protocol */
75#define PT_ZMTP1        12      /* ZeroMQ Message Transport Protocol 1.0 */
76#define PT_VXLAN        13      /* Virtual eXtensible Local Area Network */
77
78#ifndef min
79#define min(a,b) ((a)>(b)?(b):(a))
80#endif
81#ifndef max
82#define max(a,b) ((b)>(a)?(b):(a))
83#endif
84
85#define ESRC(ep) ((ep)->ether_shost)
86#define EDST(ep) ((ep)->ether_dhost)
87
88#ifndef NTOHL
89#define NTOHL(x)        (x) = ntohl(x)
90#define NTOHS(x)        (x) = ntohs(x)
91#define HTONL(x)        (x) = htonl(x)
92#define HTONS(x)        (x) = htons(x)
93#endif
94#endif
95
96#ifndef MIN
97#define MIN(a,b) ((a)<(b)?(a):(b))
98#endif
99
100extern char *program_name;      /* used to generate self-identifying messages */
101
102extern int32_t thiszone;        /* seconds offset from gmt to local time */
103
104/*
105 * True if  "l" bytes of "var" were captured.
106 *
107 * The "snapend - (l) <= snapend" checks to make sure "l" isn't so large
108 * that "snapend - (l)" underflows.
109 *
110 * The check is for <= rather than < because "l" might be 0.
111 */
112#define TTEST2(var, l) (snapend - (l) <= snapend && \
113                        (const u_char *)&(var) <= snapend - (l))
114
115/* True if "var" was captured */
116#define TTEST(var) TTEST2(var, sizeof(var))
117
118/* Bail if "l" bytes of "var" were not captured */
119#define TCHECK2(var, l) if (!TTEST2(var, l)) goto trunc
120
121/* Bail if "var" was not captured */
122#define TCHECK(var) TCHECK2(var, sizeof(var))
123
124extern void ts_print(const struct timeval *);
125extern void relts_print(int);
126
127extern int fn_print(const u_char *, const u_char *);
128extern int fn_printn(const u_char *, u_int, const u_char *);
129extern int fn_printzp(const u_char *, u_int, const u_char *);
130extern int mask2plen(u_int32_t);
131extern const char *tok2strary_internal(const char **, int, const char *, int);
132#define tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i)
133
134extern const char *dnaddr_string(u_short);
135
136extern void error(const char *, ...)
137    __attribute__((noreturn, format (printf, 1, 2)));
138extern void warning(const char *, ...) __attribute__ ((format (printf, 1, 2)));
139
140extern char *read_infile(char *);
141extern char *copy_argv(char **);
142
143extern void safeputchar(int);
144extern void safeputs(const char *, int);
145
146extern const char *isonsap_string(const u_char *, register u_int);
147extern const char *protoid_string(const u_char *);
148extern const char *ipxsap_string(u_short);
149extern const char *dnname_string(u_short);
150extern const char *dnnum_string(u_short);
151
152/* checksum routines */
153extern void init_checksum(void);
154extern u_int16_t verify_crc10_cksum(u_int16_t, const u_char *, int);
155extern u_int16_t create_osi_cksum(const u_int8_t *, int, int);
156
157/* The printer routines. */
158
159#include <pcap.h>
160
161extern int print_unknown_data(const u_char *, const char *,int);
162extern void ascii_print(const u_char *, u_int);
163extern void hex_and_ascii_print_with_offset(const char *, const u_char *,
164        u_int, u_int);
165extern void hex_and_ascii_print(const char *, const u_char *, u_int);
166extern void hex_print_with_offset(const char *, const u_char *, u_int, u_int);
167extern void hex_print(const char *, const u_char *, u_int);
168extern void telnet_print(const u_char *, u_int);
169extern int llc_print(const u_char *, u_int, u_int, const u_char *,
170        const u_char *, u_short *);
171extern int snap_print(const u_char *, u_int, u_int, u_int);
172extern void aarp_print(const u_char *, u_int);
173extern void aodv_print(const u_char *, u_int, int);
174extern void atalk_print(const u_char *, u_int);
175extern void atm_print(u_int, u_int, u_int, const u_char *, u_int, u_int);
176extern u_int atm_if_print(const struct pcap_pkthdr *, const u_char *);
177extern u_int sunatm_if_print(const struct pcap_pkthdr *, const u_char *);
178extern int oam_print(const u_char *, u_int, u_int);
179extern void bootp_print(const u_char *, u_int);
180extern void bgp_print(const u_char *, int);
181extern void beep_print(const u_char *, u_int);
182extern void cnfp_print(const u_char *, const u_char *);
183extern void decnet_print(const u_char *, u_int, u_int);
184extern void default_print(const u_char *, u_int);
185extern void dvmrp_print(const u_char *, u_int);
186extern void egp_print(const u_char *, u_int);
187extern u_int enc_if_print(const struct pcap_pkthdr *, const u_char *);
188extern u_int pflog_if_print(const struct pcap_pkthdr *, const u_char *);
189extern void pfsync_ip_print(const u_char *, u_int);
190extern u_int arcnet_if_print(const struct pcap_pkthdr *, const u_char *);
191extern u_int arcnet_linux_if_print(const struct pcap_pkthdr *, const u_char *);
192extern u_int token_print(const u_char *, u_int, u_int);
193extern u_int token_if_print(const struct pcap_pkthdr *, const u_char *);
194extern void fddi_print(const u_char *, u_int, u_int);
195extern u_int fddi_if_print(const struct pcap_pkthdr *, const u_char *);
196extern u_int fr_if_print(const struct pcap_pkthdr *, const u_char *);
197extern u_int mfr_if_print(const struct pcap_pkthdr *, const u_char *);
198extern u_int fr_print(register const u_char *, u_int);
199extern u_int mfr_print(register const u_char *, u_int);
200extern char *q922_string(const u_char *);
201extern u_int ieee802_11_if_print(const struct pcap_pkthdr *, const u_char *);
202extern u_int ieee802_11_radio_if_print(const struct pcap_pkthdr *,
203        const u_char *);
204extern u_int ap1394_if_print(const struct pcap_pkthdr *, const u_char *);
205extern u_int ieee802_11_radio_avs_if_print(const struct pcap_pkthdr *,
206        const u_char *);
207extern void gre_print(const u_char *, u_int);
208extern void icmp_print(const u_char *, u_int, const u_char *, int);
209extern void igmp_print(const u_char *, u_int);
210extern void igrp_print(const u_char *, u_int, const u_char *);
211extern void ipN_print(const u_char *, u_int);
212extern u_int ipfc_if_print(const struct pcap_pkthdr *, const u_char *);
213extern void ipx_print(const u_char *, u_int);
214extern void isoclns_print(const u_char *, u_int, u_int);
215extern void krb_print(const u_char *);
216extern u_int llap_print(const u_char *, u_int);
217extern u_int ltalk_if_print(const struct pcap_pkthdr *, const u_char *);
218extern void msdp_print(const unsigned char *, u_int);
219extern void nfsreply_print(const u_char *, u_int, const u_char *);
220extern void nfsreq_print(const u_char *, u_int, const u_char *);
221extern void ns_print(const u_char *, u_int, int);
222extern const u_char * ns_nprint (register const u_char *, register const u_char *);
223extern void ntp_print(const u_char *, u_int);
224extern u_int null_if_print(const struct pcap_pkthdr *, const u_char *);
225extern void ospf_print(const u_char *, u_int, const u_char *);
226extern void olsr_print (const u_char *, u_int, int);
227extern void pimv1_print(const u_char *, u_int);
228extern void cisco_autorp_print(const u_char *, u_int);
229extern void rsvp_print(const u_char *, u_int);
230extern void ldp_print(const u_char *, u_int);
231extern void lldp_print(const u_char *, u_int);
232extern void rpki_rtr_print(const u_char *, u_int);
233extern void lmp_print(const u_char *, u_int);
234extern void lspping_print(const u_char *, u_int);
235extern void lwapp_control_print(const u_char *, u_int, int);
236extern void lwapp_data_print(const u_char *, u_int);
237extern void eigrp_print(const u_char *, u_int);
238extern void mobile_print(const u_char *, u_int);
239extern void pim_print(const u_char *, u_int, u_int);
240extern u_int pppoe_print(const u_char *, u_int);
241extern u_int ppp_print(register const u_char *, u_int);
242extern u_int ppp_if_print(const struct pcap_pkthdr *, const u_char *);
243extern u_int ppp_hdlc_if_print(const struct pcap_pkthdr *, const u_char *);
244extern u_int ppp_bsdos_if_print(const struct pcap_pkthdr *, const u_char *);
245extern u_int pppoe_if_print(const struct pcap_pkthdr *, const u_char *);
246extern u_int prism_if_print(const struct pcap_pkthdr *, const u_char *);
247extern void q933_print(const u_char *, u_int);
248extern int vjc_print(register const char *, u_short);
249extern void vqp_print(register const u_char *, register u_int);
250extern u_int raw_if_print(const struct pcap_pkthdr *, const u_char *);
251extern void rip_print(const u_char *, u_int);
252extern u_int sl_if_print(const struct pcap_pkthdr *, const u_char *);
253extern void lane_print(const u_char *, u_int, u_int);
254extern u_int lane_if_print(const struct pcap_pkthdr *, const u_char *);
255extern u_int cip_if_print(const struct pcap_pkthdr *, const u_char *);
256extern u_int sl_bsdos_if_print(const struct pcap_pkthdr *, const u_char *);
257extern u_int chdlc_if_print(const struct pcap_pkthdr *, const u_char *);
258extern u_int chdlc_print(register const u_char *, u_int);
259extern u_int juniper_atm1_print(const struct pcap_pkthdr *, const u_char *);
260extern u_int juniper_atm2_print(const struct pcap_pkthdr *, const u_char *);
261extern u_int juniper_mfr_print(const struct pcap_pkthdr *, register const u_char *);
262extern u_int juniper_mlfr_print(const struct pcap_pkthdr *, const u_char *);
263extern u_int juniper_mlppp_print(const struct pcap_pkthdr *, const u_char *);
264extern u_int juniper_pppoe_print(const struct pcap_pkthdr *, const u_char *);
265extern u_int juniper_pppoe_atm_print(const struct pcap_pkthdr *, const u_char *);
266extern u_int juniper_ggsn_print(const struct pcap_pkthdr *, const u_char *);
267extern u_int juniper_es_print(const struct pcap_pkthdr *, const u_char *);
268extern u_int juniper_monitor_print(const struct pcap_pkthdr *, const u_char *);
269extern u_int juniper_services_print(const struct pcap_pkthdr *, const u_char *);
270extern u_int juniper_ether_print(const struct pcap_pkthdr *, const u_char *);
271extern u_int juniper_ppp_print(const struct pcap_pkthdr *, const u_char *);
272extern u_int juniper_frelay_print(const struct pcap_pkthdr *, const u_char *);
273extern u_int juniper_chdlc_print(const struct pcap_pkthdr *, const u_char *);
274extern u_int sll_if_print(const struct pcap_pkthdr *, const u_char *);
275extern void snmp_print(const u_char *, u_int);
276extern void sunrpcrequest_print(const u_char *, u_int, const u_char *);
277extern u_int symantec_if_print(const struct pcap_pkthdr *, const u_char *);
278extern void tcp_print(const u_char *, u_int, const u_char *, int);
279extern void tftp_print(const u_char *, u_int);
280extern void timed_print(const u_char *);
281extern void udld_print(const u_char *, u_int);
282extern void udp_print(const u_char *, u_int, const u_char *, int);
283extern void vtp_print(const u_char *, u_int);
284extern void wb_print(const void *, u_int);
285extern int ah_print(register const u_char *);
286extern int ipcomp_print(register const u_char *, int *);
287extern void rx_print(register const u_char *, int, int, int, u_char *);
288extern void netbeui_print(u_short, const u_char *, int);
289extern void ipx_netbios_print(const u_char *, u_int);
290extern void nbt_tcp_print(const u_char *, int);
291extern void nbt_udp137_print(const u_char *, int);
292extern void nbt_udp138_print(const u_char *, int);
293extern void smb_tcp_print(const u_char *, int);
294extern char *smb_errstr(int, int);
295extern const char *nt_errstr(u_int32_t);
296extern void print_data(const unsigned char *, int);
297extern void l2tp_print(const u_char *, u_int);
298extern void vrrp_print(const u_char *, u_int, int);
299extern void carp_print(const u_char *, u_int, int);
300extern void slow_print(const u_char *, u_int);
301extern void sflow_print(const u_char *, u_int);
302extern void mpcp_print(const u_char *, u_int);
303extern void cfm_print(const u_char *, u_int);
304extern void pgm_print(const u_char *, u_int, const u_char *);
305extern void cdp_print(const u_char *, u_int, u_int);
306extern void dtp_print(const u_char *, u_int);
307extern void stp_print(const u_char *, u_int);
308extern void radius_print(const u_char *, u_int);
309extern void lwres_print(const u_char *, u_int);
310extern void pptp_print(const u_char *);
311extern void dccp_print(const u_char *, const u_char *, u_int);
312extern void sctp_print(const u_char *, const u_char *, u_int);
313extern void forces_print(const u_char *, u_int);
314extern void mpls_print(const u_char *, u_int);
315extern void mpls_lsp_ping_print(const u_char *, u_int);
316extern void zephyr_print(const u_char *, int);
317extern void zmtp1_print(const u_char *, u_int);
318extern void hsrp_print(const u_char *, u_int);
319extern void bfd_print(const u_char *, u_int, u_int);
320extern void sip_print(const u_char *, u_int);
321extern void syslog_print(const u_char *, u_int);
322extern u_int bt_if_print(const struct pcap_pkthdr *, const u_char *);
323extern u_int usb_linux_48_byte_print(const struct pcap_pkthdr *, const u_char *);
324extern u_int usb_linux_64_byte_print(const struct pcap_pkthdr *, const u_char *);
325extern void vxlan_print(const u_char *, u_int);
326extern void otv_print(const u_char *, u_int);
327
328
329#ifdef INET6
330extern void ip6_opt_print(const u_char *, int);
331extern int hbhopt_print(const u_char *);
332extern int dstopt_print(const u_char *);
333extern int frag6_print(const u_char *, const u_char *);
334extern int mobility_print(const u_char *, const u_char *);
335extern void ripng_print(const u_char *, unsigned int);
336extern int rt6_print(const u_char *, const u_char *);
337extern void ospf6_print(const u_char *, u_int);
338extern void dhcp6_print(const u_char *, u_int);
339extern void babel_print(const u_char *, u_int);
340extern int mask62plen(const u_char *);
341#endif /*INET6*/
342
343struct cksum_vec {
344        const u_int8_t  *ptr;
345        int             len;
346};
347extern u_int16_t in_cksum(const struct cksum_vec *, int);
348extern u_int16_t in_cksum_shouldbe(u_int16_t, u_int16_t);
349
350#ifndef HAVE_BPF_DUMP
351struct bpf_program;
352
353extern void bpf_dump(const struct bpf_program *, int);
354
355#endif
356
357#include "netdissect.h"
358
359/* forward compatibility */
360
361#ifndef NETDISSECT_REWORKED
362extern netdissect_options *gndo;
363
364#define bflag gndo->ndo_bflag
365#define eflag gndo->ndo_eflag
366#define fflag gndo->ndo_fflag
367#define jflag gndo->ndo_jflag
368#define Kflag gndo->ndo_Kflag
369#define nflag gndo->ndo_nflag
370#define Nflag gndo->ndo_Nflag
371#define Oflag gndo->ndo_Oflag
372#define pflag gndo->ndo_pflag
373#define qflag gndo->ndo_qflag
374#define Rflag gndo->ndo_Rflag
375#define sflag gndo->ndo_sflag
376#define Sflag gndo->ndo_Sflag
377#define tflag gndo->ndo_tflag
378#define Uflag gndo->ndo_Uflag
379#define uflag gndo->ndo_uflag
380#define vflag gndo->ndo_vflag
381#define xflag gndo->ndo_xflag
382#define Xflag gndo->ndo_Xflag
383#define Cflag gndo->ndo_Cflag
384#define Gflag gndo->ndo_Gflag
385#define Aflag gndo->ndo_Aflag
386#define Bflag gndo->ndo_Bflag
387#define Iflag gndo->ndo_Iflag
388#define suppress_default_print gndo->ndo_suppress_default_print
389#define packettype gndo->ndo_packettype
390#define sigsecret gndo->ndo_sigsecret
391#define Wflag gndo->ndo_Wflag
392#define WflagChars gndo->ndo_WflagChars
393#define Cflag_count gndo->ndo_Cflag_count
394#define Gflag_count gndo->ndo_Gflag_count
395#define Gflag_time gndo->ndo_Gflag_time
396#define Hflag gndo->ndo_Hflag
397#define snaplen     gndo->ndo_snaplen
398#define snapend     gndo->ndo_snapend
399
400#endif
Note: See TracBrowser for help on using the repository browser.