nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | /* |
2 | * Copyright (c) 1988-1997 |
||
3 | * The Regents of the University of California. All rights reserved. |
||
4 | * |
||
5 | * Copyright (c) 1998-2012 Michael Richardson <mcr@tcpdump.org> |
||
6 | * The TCPDUMP project |
||
7 | * |
||
8 | * Redistribution and use in source and binary forms, with or without |
||
9 | * modification, are permitted provided that: (1) source code distributions |
||
10 | * retain the above copyright notice and this paragraph in its entirety, (2) |
||
11 | * distributions including binary code include the above copyright notice and |
||
12 | * this paragraph in its entirety in the documentation or other materials |
||
13 | * provided with the distribution, and (3) all advertising materials mentioning |
||
14 | * features or use of this software display the following acknowledgement: |
||
15 | * ``This product includes software developed by the University of California, |
||
16 | * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of |
||
17 | * the University nor the names of its contributors may be used to endorse |
||
18 | * or promote products derived from this software without specific prior |
||
19 | * written permission. |
||
20 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED |
||
21 | * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF |
||
22 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
||
23 | */ |
||
24 | |||
25 | #ifndef netdissect_h |
||
26 | #define netdissect_h |
||
27 | |||
28 | #ifdef HAVE_OS_PROTO_H |
||
29 | #include "os-proto.h" |
||
30 | #endif |
||
31 | #include <sys/types.h> |
||
32 | |||
33 | #ifndef HAVE___ATTRIBUTE__ |
||
34 | #define __attribute__(x) |
||
35 | #endif |
||
36 | |||
37 | /* snprintf et al */ |
||
38 | |||
39 | #include <stdarg.h> |
||
40 | |||
41 | #include "ip.h" /* struct ip for nextproto4_cksum() */ |
||
42 | |||
43 | #if !defined(HAVE_SNPRINTF) |
||
44 | int snprintf (char *str, size_t sz, const char *format, ...) |
||
45 | #ifdef __ATTRIBUTE___FORMAT_OK |
||
46 | __attribute__((format (printf, 3, 4))) |
||
47 | #endif /* __ATTRIBUTE___FORMAT_OK */ |
||
48 | ; |
||
49 | #endif /* !defined(HAVE_SNPRINTF) */ |
||
50 | |||
51 | #if !defined(HAVE_VSNPRINTF) |
||
52 | int vsnprintf (char *str, size_t sz, const char *format, va_list ap) |
||
53 | #ifdef __ATTRIBUTE___FORMAT_OK |
||
54 | __attribute__((format (printf, 3, 0))) |
||
55 | #endif /* __ATTRIBUTE___FORMAT_OK */ |
||
56 | ; |
||
57 | #endif /* !defined(HAVE_SNPRINTF) */ |
||
58 | |||
59 | #ifndef HAVE_STRLCAT |
||
60 | extern size_t strlcat (char *, const char *, size_t); |
||
61 | #endif |
||
62 | #ifndef HAVE_STRLCPY |
||
63 | extern size_t strlcpy (char *, const char *, size_t); |
||
64 | #endif |
||
65 | |||
66 | #ifndef HAVE_STRDUP |
||
67 | extern char *strdup (const char *str); |
||
68 | #endif |
||
69 | |||
70 | #ifndef HAVE_STRSEP |
||
71 | extern char *strsep(char **, const char *); |
||
72 | #endif |
||
73 | |||
74 | struct tok { |
||
75 | u_int v; /* value */ |
||
76 | const char *s; /* string */ |
||
77 | }; |
||
78 | |||
79 | #define TOKBUFSIZE 128 |
||
80 | extern const char *tok2strbuf(const struct tok *, const char *, u_int, |
||
81 | char *buf, size_t bufsize); |
||
82 | |||
83 | /* tok2str is deprecated */ |
||
84 | extern const char *tok2str(const struct tok *, const char *, u_int); |
||
85 | extern char *bittok2str(const struct tok *, const char *, u_int); |
||
86 | extern char *bittok2str_nosep(const struct tok *, const char *, u_int); |
||
87 | |||
88 | |||
89 | typedef struct netdissect_options netdissect_options; |
||
90 | |||
91 | struct netdissect_options { |
||
92 | int ndo_aflag; /* translate network and broadcast addresses */ |
||
93 | int ndo_bflag; /* print 4 byte ASes in ASDOT notation */ |
||
94 | int ndo_eflag; /* print ethernet header */ |
||
95 | int ndo_fflag; /* don't translate "foreign" IP address */ |
||
96 | int ndo_Kflag; /* don't check TCP checksums */ |
||
97 | int ndo_nflag; /* leave addresses as numbers */ |
||
98 | int ndo_Nflag; /* remove domains from printed host names */ |
||
99 | int ndo_qflag; /* quick (shorter) output */ |
||
100 | int ndo_Rflag; /* print sequence # field in AH/ESP*/ |
||
101 | int ndo_sflag; /* use the libsmi to translate OIDs */ |
||
102 | int ndo_Sflag; /* print raw TCP sequence numbers */ |
||
103 | int ndo_tflag; /* print packet arrival time */ |
||
104 | int ndo_Uflag; /* "unbuffered" output of dump files */ |
||
105 | int ndo_uflag; /* Print undecoded NFS handles */ |
||
106 | int ndo_vflag; /* verbose */ |
||
107 | int ndo_xflag; /* print packet in hex */ |
||
108 | int ndo_Xflag; /* print packet in hex/ascii */ |
||
109 | int ndo_Aflag; /* print packet only in ascii observing TAB, |
||
110 | * LF, CR and SPACE as graphical chars |
||
111 | */ |
||
112 | int ndo_Bflag; /* buffer size */ |
||
113 | int ndo_Iflag; /* rfmon (monitor) mode */ |
||
114 | int ndo_Oflag; /* run filter code optimizer */ |
||
115 | int ndo_dlt; /* if != -1, ask libpcap for the DLT it names*/ |
||
116 | int ndo_jflag; /* packet time stamp source */ |
||
117 | int ndo_pflag; /* don't go promiscuous */ |
||
118 | int ndo_immediate; /* use immediate mode */ |
||
119 | |||
120 | int ndo_Cflag; /* rotate dump files after this many bytes */ |
||
121 | int ndo_Cflag_count; /* Keep track of which file number we're writing */ |
||
122 | int ndo_Gflag; /* rotate dump files after this many seconds */ |
||
123 | int ndo_Gflag_count; /* number of files created with Gflag rotation */ |
||
124 | time_t ndo_Gflag_time; /* The last time_t the dump file was rotated. */ |
||
125 | int ndo_Wflag; /* recycle output files after this number of files */ |
||
126 | int ndo_WflagChars; |
||
127 | int ndo_Hflag; /* dissect 802.11s draft mesh standard */ |
||
128 | int ndo_packet_number; /* print a packet number in the beginning of line */ |
||
129 | int ndo_suppress_default_print; /* don't use default_print() for unknown packet types */ |
||
130 | int ndo_tstamp_precision; /* requested time stamp precision */ |
||
131 | const char *ndo_dltname; |
||
132 | |||
133 | char *ndo_espsecret; |
||
134 | struct sa_list *ndo_sa_list_head; /* used by print-esp.c */ |
||
135 | struct sa_list *ndo_sa_default; |
||
136 | |||
137 | char *ndo_sigsecret; /* Signature verification secret key */ |
||
138 | |||
139 | struct esp_algorithm *ndo_espsecret_xform; /* cache of decoded */ |
||
140 | char *ndo_espsecret_key; |
||
141 | |||
142 | int ndo_packettype; /* as specified by -T */ |
||
143 | |||
144 | char *ndo_program_name; /*used to generate self-identifying messages */ |
||
145 | |||
146 | int32_t ndo_thiszone; /* seconds offset from gmt to local time */ |
||
147 | |||
148 | int ndo_snaplen; |
||
149 | |||
150 | /*global pointers to beginning and end of current packet (during printing) */ |
||
151 | const u_char *ndo_packetp; |
||
152 | const u_char *ndo_snapend; |
||
153 | |||
154 | /* bookkeeping for ^T output */ |
||
155 | int ndo_infodelay; |
||
156 | |||
157 | /* pointer to void function to output stuff */ |
||
158 | void (*ndo_default_print)(netdissect_options *, |
||
159 | register const u_char *bp, register u_int length); |
||
160 | |||
161 | /* pointer to function to print ^T output */ |
||
162 | void (*ndo_info)(netdissect_options *, int verbose); |
||
163 | |||
164 | /* pointer to function to do regular output */ |
||
165 | int (*ndo_printf)(netdissect_options *, |
||
166 | const char *fmt, ...) |
||
167 | #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS |
||
168 | __attribute__ ((format (printf, 2, 3))) |
||
169 | #endif |
||
170 | ; |
||
171 | /* pointer to function to output errors */ |
||
172 | void (*ndo_error)(netdissect_options *, |
||
173 | const char *fmt, ...) |
||
174 | #ifdef __ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS |
||
175 | __attribute__ ((noreturn)) |
||
176 | #endif /* __ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS */ |
||
177 | #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS |
||
178 | __attribute__ ((format (printf, 2, 3))) |
||
179 | #endif /* __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS */ |
||
180 | ; |
||
181 | /* pointer to function to output warnings */ |
||
182 | void (*ndo_warning)(netdissect_options *, |
||
183 | const char *fmt, ...) |
||
184 | #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS |
||
185 | __attribute__ ((format (printf, 2, 3))) |
||
186 | #endif |
||
187 | ; |
||
188 | }; |
||
189 | |||
190 | #define PT_VAT 1 /* Visual Audio Tool */ |
||
191 | #define PT_WB 2 /* distributed White Board */ |
||
192 | #define PT_RPC 3 /* Remote Procedure Call */ |
||
193 | #define PT_RTP 4 /* Real-Time Applications protocol */ |
||
194 | #define PT_RTCP 5 /* Real-Time Applications control protocol */ |
||
195 | #define PT_SNMP 6 /* Simple Network Management Protocol */ |
||
196 | #define PT_CNFP 7 /* Cisco NetFlow protocol */ |
||
197 | #define PT_TFTP 8 /* trivial file transfer protocol */ |
||
198 | #define PT_AODV 9 /* Ad-hoc On-demand Distance Vector Protocol */ |
||
199 | #define PT_CARP 10 /* Common Address Redundancy Protocol */ |
||
200 | #define PT_RADIUS 11 /* RADIUS authentication Protocol */ |
||
201 | #define PT_ZMTP1 12 /* ZeroMQ Message Transport Protocol 1.0 */ |
||
202 | #define PT_VXLAN 13 /* Virtual eXtensible Local Area Network */ |
||
203 | #define PT_PGM 14 /* [UDP-encapsulated] Pragmatic General Multicast */ |
||
204 | #define PT_PGM_ZMTP1 15 /* ZMTP/1.0 inside PGM (native or UDP-encapsulated) */ |
||
205 | #define PT_LMP 16 /* Link Management Protocol */ |
||
206 | |||
207 | #ifndef min |
||
208 | #define min(a,b) ((a)>(b)?(b):(a)) |
||
209 | #endif |
||
210 | #ifndef max |
||
211 | #define max(a,b) ((b)>(a)?(b):(a)) |
||
212 | #endif |
||
213 | |||
214 | /* |
||
215 | * Maximum snapshot length. This should be enough to capture the full |
||
216 | * packet on most network interfaces. |
||
217 | * |
||
218 | * |
||
219 | * Somewhat arbitrary, but chosen to be: |
||
220 | * |
||
221 | * 1) big enough for maximum-size Linux loopback packets (65549) |
||
222 | * and some USB packets captured with USBPcap: |
||
223 | * |
||
224 | * http://desowin.org/usbpcap/ |
||
225 | * |
||
226 | * (> 131072, < 262144) |
||
227 | * |
||
228 | * and |
||
229 | * |
||
230 | * 2) small enough not to cause attempts to allocate huge amounts of |
||
231 | * memory; some applications might use the snapshot length in a |
||
232 | * savefile header to control the size of the buffer they allocate, |
||
233 | * so a size of, say, 2^31-1 might not work well. |
||
234 | * |
||
235 | * XXX - does it need to be bigger still? |
||
236 | */ |
||
237 | #define MAXIMUM_SNAPLEN 262144 |
||
238 | |||
239 | /* |
||
240 | * The default snapshot length is the maximum. |
||
241 | */ |
||
242 | #define DEFAULT_SNAPLEN MAXIMUM_SNAPLEN |
||
243 | |||
244 | #define ESRC(ep) ((ep)->ether_shost) |
||
245 | #define EDST(ep) ((ep)->ether_dhost) |
||
246 | |||
247 | #ifndef NTOHL |
||
248 | #define NTOHL(x) (x) = ntohl(x) |
||
249 | #define NTOHS(x) (x) = ntohs(x) |
||
250 | #define HTONL(x) (x) = htonl(x) |
||
251 | #define HTONS(x) (x) = htons(x) |
||
252 | #endif |
||
253 | |||
254 | /* |
||
255 | * True if "l" bytes of "var" were captured. |
||
256 | * |
||
257 | * The "ndo->ndo_snapend - (l) <= ndo->ndo_snapend" checks to make sure |
||
258 | * "l" isn't so large that "ndo->ndo_snapend - (l)" underflows. |
||
259 | * |
||
260 | * The check is for <= rather than < because "l" might be 0. |
||
261 | * |
||
262 | * We cast the pointers to uintptr_t to make sure that the compiler |
||
263 | * doesn't optimize away any of these tests (which it is allowed to |
||
264 | * do, as adding an integer to, or subtracting an integer from, a |
||
265 | * pointer assumes that the pointer is a pointer to an element of an |
||
266 | * array and that the result of the addition or subtraction yields a |
||
267 | * pointer to another member of the array, so that, for example, if |
||
268 | * you subtract a positive integer from a pointer, the result is |
||
269 | * guaranteed to be less than the original pointer value). See |
||
270 | * |
||
271 | * http://www.kb.cert.org/vuls/id/162289 |
||
272 | */ |
||
273 | #define ND_TTEST2(var, l) \ |
||
274 | ((l) >= 0 && \ |
||
275 | ((uintptr_t)ndo->ndo_snapend - (l) <= (uintptr_t)ndo->ndo_snapend && \ |
||
276 | (uintptr_t)&(var) <= (uintptr_t)ndo->ndo_snapend - (l))) |
||
277 | |||
278 | /* True if "var" was captured */ |
||
279 | #define ND_TTEST(var) ND_TTEST2(var, sizeof(var)) |
||
280 | |||
281 | /* Bail if "l" bytes of "var" were not captured */ |
||
282 | #define ND_TCHECK2(var, l) if (!ND_TTEST2(var, l)) goto trunc |
||
283 | |||
284 | /* Bail if "var" was not captured */ |
||
285 | #define ND_TCHECK(var) ND_TCHECK2(var, sizeof(var)) |
||
286 | |||
287 | #define ND_PRINT(STUFF) (*ndo->ndo_printf)STUFF |
||
288 | #define ND_DEFAULTPRINT(ap, length) (*ndo->ndo_default_print)(ndo, ap, length) |
||
289 | |||
290 | extern void ts_print(netdissect_options *, const struct timeval *); |
||
291 | extern void relts_print(netdissect_options *, int); |
||
292 | |||
293 | extern int fn_print(netdissect_options *, const u_char *, const u_char *); |
||
294 | extern int fn_printn(netdissect_options *, const u_char *, u_int, const u_char *); |
||
295 | extern int fn_printzp(netdissect_options *, const u_char *, u_int, const u_char *); |
||
296 | |||
297 | /* |
||
298 | * Flags for txtproto_print(). |
||
299 | */ |
||
300 | #define RESP_CODE_SECOND_TOKEN 0x00000001 /* response code is second token in response line */ |
||
301 | |||
302 | extern void txtproto_print(netdissect_options *, const u_char *, u_int, |
||
303 | const char *, const char **, u_int); |
||
304 | |||
305 | #if 0 |
||
306 | extern char *read_infile(netdissect_options *, char *); |
||
307 | extern char *copy_argv(netdissect_options *, char **); |
||
308 | #endif |
||
309 | |||
310 | /* |
||
311 | * Locale-independent macros for testing character properties and |
||
312 | * stripping the 8th bit from characters. Assumed to be handed |
||
313 | * a value between 0 and 255, i.e. don't hand them a char, as |
||
314 | * those might be in the range -128 to 127. |
||
315 | */ |
||
316 | #define ND_ISASCII(c) (!((c) & 0x80)) /* value is an ASCII code point */ |
||
317 | #define ND_ISPRINT(c) ((c) >= 0x20 && (c) <= 0x7E) |
||
318 | #define ND_ISGRAPH(c) ((c) > 0x20 && (c) <= 0x7E) |
||
319 | #define ND_TOASCII(c) ((c) & 0x7F) |
||
320 | |||
321 | extern void safeputchar(netdissect_options *, const u_char); |
||
322 | extern void safeputs(netdissect_options *, const u_char *, const u_int); |
||
323 | |||
324 | #ifdef LBL_ALIGN |
||
325 | /* |
||
326 | * The processor doesn't natively handle unaligned loads, |
||
327 | * and the compiler might "helpfully" optimize memcpy() |
||
328 | * and memcmp(), when handed pointers that would normally |
||
329 | * be properly aligned, into sequences that assume proper |
||
330 | * alignment. |
||
331 | * |
||
332 | * Do copies and compares of possibly-unaligned data by |
||
333 | * calling routines that wrap memcpy() and memcmp(), to |
||
334 | * prevent that optimization. |
||
335 | */ |
||
336 | extern void unaligned_memcpy(void *, const void *, size_t); |
||
337 | extern int unaligned_memcmp(const void *, const void *, size_t); |
||
338 | #define UNALIGNED_MEMCPY(p, q, l) unaligned_memcpy((p), (q), (l)) |
||
339 | #define UNALIGNED_MEMCMP(p, q, l) unaligned_memcmp((p), (q), (l)) |
||
340 | #else |
||
341 | /* |
||
342 | * The procesor natively handles unaligned loads, so just use memcpy() |
||
343 | * and memcmp(), to enable those optimizations. |
||
344 | */ |
||
345 | #define UNALIGNED_MEMCPY(p, q, l) memcpy((p), (q), (l)) |
||
346 | #define UNALIGNED_MEMCMP(p, q, l) memcmp((p), (q), (l)) |
||
347 | #endif |
||
348 | |||
349 | #define PLURAL_SUFFIX(n) \ |
||
350 | (((n) != 1) ? "s" : "") |
||
351 | |||
352 | #if 0 |
||
353 | extern const char *dnname_string(netdissect_options *, u_short); |
||
354 | extern const char *dnnum_string(netdissect_options *, u_short); |
||
355 | #endif |
||
356 | |||
357 | /* The printer routines. */ |
||
358 | |||
359 | #include <pcap.h> |
||
360 | |||
361 | extern char *q922_string(netdissect_options *ndo, const u_char *, u_int); |
||
362 | |||
363 | typedef u_int (*if_ndo_printer)(struct netdissect_options *ndo, |
||
364 | const struct pcap_pkthdr *, const u_char *); |
||
365 | typedef u_int (*if_printer)(const struct pcap_pkthdr *, const u_char *); |
||
366 | |||
367 | extern if_ndo_printer lookup_ndo_printer(int); |
||
368 | extern if_printer lookup_printer(int); |
||
369 | |||
370 | extern void eap_print(netdissect_options *,const u_char *, u_int); |
||
371 | extern int esp_print(netdissect_options *, |
||
372 | const u_char *bp, const int length, const u_char *bp2, |
||
373 | int *nhdr, int *padlen); |
||
374 | extern void arp_print(netdissect_options *,const u_char *, u_int, u_int); |
||
375 | extern void tipc_print(netdissect_options *, const u_char *, u_int, u_int); |
||
376 | extern void msnlb_print(netdissect_options *, const u_char *); |
||
377 | extern void icmp6_print(netdissect_options *ndo, const u_char *, |
||
378 | u_int, const u_char *, int); |
||
379 | extern void isakmp_print(netdissect_options *,const u_char *, |
||
380 | u_int, const u_char *); |
||
381 | extern void isakmp_rfc3948_print(netdissect_options *,const u_char *, |
||
382 | u_int, const u_char *); |
||
383 | extern void ip_print(netdissect_options *,const u_char *, u_int); |
||
384 | extern void ip_print_inner(netdissect_options *ndo, |
||
385 | const u_char *bp, u_int length, u_int nh, |
||
386 | const u_char *bp2); |
||
387 | extern void rrcp_print(netdissect_options *,const u_char *, u_int); |
||
388 | extern void loopback_print(netdissect_options *, const u_char *, const u_int); |
||
389 | extern void carp_print(netdissect_options *, const u_char *, u_int, int); |
||
390 | |||
391 | extern void ether_print(netdissect_options *, |
||
392 | const u_char *, u_int, u_int, |
||
393 | void (*)(netdissect_options *, const u_char *), |
||
394 | const u_char *); |
||
395 | |||
396 | extern u_int ether_if_print(netdissect_options *, |
||
397 | const struct pcap_pkthdr *,const u_char *); |
||
398 | extern u_int netanalyzer_if_print(netdissect_options *, |
||
399 | const struct pcap_pkthdr *,const u_char *); |
||
400 | extern u_int netanalyzer_transparent_if_print(netdissect_options *, |
||
401 | const struct pcap_pkthdr *, |
||
402 | const u_char *); |
||
403 | |||
404 | extern int ethertype_print(netdissect_options *,u_short, const u_char *, |
||
405 | u_int, u_int); |
||
406 | |||
407 | extern int print_unknown_data(netdissect_options *,const u_char *, const char *,int); |
||
408 | extern void ascii_print(netdissect_options *, const u_char *, u_int); |
||
409 | extern void hex_print_with_offset(netdissect_options *, const char *ident, const u_char *cp, |
||
410 | u_int, u_int); |
||
411 | extern void hex_print(netdissect_options *,const char *ident, const u_char *cp,u_int); |
||
412 | extern void hex_and_ascii_print_with_offset(netdissect_options *, const char *, const u_char *, u_int, u_int); |
||
413 | extern void hex_and_ascii_print(netdissect_options *, const char *, const u_char *, u_int); |
||
414 | |||
415 | extern int ah_print(netdissect_options *, register const u_char *); |
||
416 | extern void beep_print(netdissect_options *, const u_char *, u_int); |
||
417 | extern void dtp_print(netdissect_options *, const u_char *, u_int); |
||
418 | extern u_int cip_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
419 | extern int ipcomp_print(netdissect_options *, register const u_char *, int *); |
||
420 | extern u_int ipfc_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
421 | extern void udld_print(netdissect_options *, const u_char *, u_int); |
||
422 | extern void hsrp_print(netdissect_options *, const u_char *, u_int); |
||
423 | extern void igrp_print(netdissect_options *, const u_char *, u_int); |
||
424 | extern void msdp_print(netdissect_options *, const u_char *, u_int); |
||
425 | extern u_int null_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
426 | extern void mobile_print(netdissect_options *, const u_char *, u_int); |
||
427 | extern u_int ap1394_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
428 | extern u_int bt_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
429 | extern void lane_print(netdissect_options *, const u_char *, u_int, u_int); |
||
430 | extern u_int lane_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
431 | extern void otv_print(netdissect_options *, const u_char *, u_int); |
||
432 | extern void ahcp_print(netdissect_options *, const u_char *, const u_int); |
||
433 | extern void vxlan_print(netdissect_options *, const u_char *, u_int); |
||
434 | extern u_int arcnet_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
435 | extern u_int arcnet_linux_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
436 | extern void bfd_print(netdissect_options *, const u_char *, u_int, u_int); |
||
437 | extern void gre_print(netdissect_options *, const u_char *, u_int); |
||
438 | extern int vjc_print(netdissect_options *, register const char *, u_short); |
||
439 | extern void ipN_print(netdissect_options *, const u_char *, u_int); |
||
440 | extern u_int raw_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
441 | extern u_int usb_linux_48_byte_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
442 | extern u_int usb_linux_64_byte_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
443 | extern u_int symantec_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
444 | extern u_int chdlc_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
445 | extern u_int chdlc_print(netdissect_options *, register const u_char *, u_int); |
||
446 | extern void zmtp1_print(netdissect_options *, const u_char *, u_int); |
||
447 | extern void zmtp1_print_datagram(netdissect_options *, const u_char *, const u_int); |
||
448 | extern void ipx_print(netdissect_options *, const u_char *, u_int); |
||
449 | extern void mpls_print(netdissect_options *, const u_char *, u_int); |
||
450 | extern u_int pppoe_print(netdissect_options *, const u_char *, u_int); |
||
451 | extern u_int pppoe_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
452 | extern void sunrpcrequest_print(netdissect_options *, const u_char *, u_int, const u_char *); |
||
453 | extern u_int pflog_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
454 | extern u_int token_print(netdissect_options *, const u_char *, u_int, u_int); |
||
455 | extern u_int token_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
456 | extern void vqp_print(netdissect_options *, register const u_char *, register u_int); |
||
457 | extern void zephyr_print(netdissect_options *, const u_char *, int); |
||
458 | extern void fddi_print(netdissect_options *, const u_char *, u_int, u_int); |
||
459 | extern u_int fddi_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
460 | extern void mpcp_print(netdissect_options *, const u_char *, u_int); |
||
461 | extern void rpki_rtr_print(netdissect_options *, const u_char *, u_int); |
||
462 | extern u_int sll_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
463 | extern void dccp_print(netdissect_options *, const u_char *, const u_char *, u_int); |
||
464 | extern int llc_print(netdissect_options *, const u_char *, u_int, u_int, const u_char *, const u_char *, u_short *); |
||
465 | extern int snap_print(netdissect_options *, const u_char *, u_int, u_int, u_int); |
||
466 | extern void eigrp_print(netdissect_options *, const u_char *, u_int); |
||
467 | extern void stp_print(netdissect_options *, const u_char *, u_int); |
||
468 | extern void l2tp_print(netdissect_options *, const u_char *, u_int); |
||
469 | extern void udp_print(netdissect_options *, const u_char *, u_int, const u_char *, int); |
||
470 | extern void icmp_print(netdissect_options *, const u_char *, u_int, const u_char *, int); |
||
471 | extern void openflow_print(netdissect_options *, const u_char *, const u_int); |
||
472 | extern void telnet_print(netdissect_options *, const u_char *, u_int); |
||
473 | extern void slow_print(netdissect_options *, const u_char *, u_int); |
||
474 | extern void radius_print(netdissect_options *, const u_char *, u_int); |
||
475 | extern void lmp_print(netdissect_options *, const u_char *, u_int); |
||
476 | extern u_int fr_print(netdissect_options *, register const u_char *, u_int); |
||
477 | extern u_int mfr_print(netdissect_options *, register const u_char *, u_int); |
||
478 | extern u_int fr_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
479 | extern u_int mfr_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
480 | extern void q933_print(netdissect_options *, const u_char *, u_int); |
||
481 | extern void igmp_print(netdissect_options *, const u_char *, u_int); |
||
482 | extern void rip_print(netdissect_options *, const u_char *, u_int); |
||
483 | extern void lwapp_control_print(netdissect_options *, const u_char *, u_int, int); |
||
484 | extern void lwapp_data_print(netdissect_options *, const u_char *, u_int); |
||
485 | extern void pgm_print(netdissect_options *, const u_char *, u_int, const u_char *); |
||
486 | extern void pptp_print(netdissect_options *, const u_char *); |
||
487 | extern void ldp_print(netdissect_options *, const u_char *, u_int); |
||
488 | extern void wb_print(netdissect_options *, const void *, u_int); |
||
489 | extern int oam_print(netdissect_options *, const u_char *, u_int, u_int); |
||
490 | extern void atm_print(netdissect_options *, u_int, u_int, u_int, const u_char *, u_int, u_int); |
||
491 | extern u_int sunatm_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
492 | extern u_int atm_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
493 | extern void vtp_print(netdissect_options *, const u_char *, u_int); |
||
494 | extern int mptcp_print(netdissect_options *, const u_char *, u_int, u_char); |
||
495 | extern void ntp_print(netdissect_options *, const u_char *, u_int); |
||
496 | extern void cnfp_print(netdissect_options *, const u_char *); |
||
497 | extern void dvmrp_print(netdissect_options *, const u_char *, u_int); |
||
498 | extern void egp_print(netdissect_options *, const u_char *, u_int); |
||
499 | extern u_int enc_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
500 | extern u_int sl_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
501 | extern u_int sl_bsdos_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
502 | extern void tftp_print(netdissect_options *, const u_char *, u_int); |
||
503 | extern void vrrp_print(netdissect_options *, const u_char *, u_int, const u_char *, int); |
||
504 | extern void pimv1_print(netdissect_options *, const u_char *, u_int); |
||
505 | extern void cisco_autorp_print(netdissect_options *, const u_char *, u_int); |
||
506 | extern void pim_print(netdissect_options *, const u_char *, u_int, u_int); |
||
507 | extern const u_char * ns_nprint (netdissect_options *, register const u_char *, register const u_char *); |
||
508 | extern void ns_print(netdissect_options *, const u_char *, u_int, int); |
||
509 | extern void bootp_print(netdissect_options *, const u_char *, u_int); |
||
510 | extern void sflow_print(netdissect_options *, const u_char *, u_int); |
||
511 | extern void aodv_print(netdissect_options *, const u_char *, u_int, int); |
||
512 | extern void sctp_print(netdissect_options *, const u_char *, const u_char *, u_int); |
||
513 | extern char *bgp_vpn_rd_print (netdissect_options *, const u_char *); |
||
514 | extern void bgp_print(netdissect_options *, const u_char *, int); |
||
515 | extern void olsr_print(netdissect_options *, const u_char *, u_int, int); |
||
516 | extern void forces_print(netdissect_options *, const u_char *, u_int); |
||
517 | extern void lspping_print(netdissect_options *, const u_char *, u_int); |
||
518 | extern void isoclns_print(netdissect_options *, const u_char *, u_int, u_int); |
||
519 | extern void krb_print(netdissect_options *, const u_char *); |
||
520 | extern void cdp_print(netdissect_options *, const u_char *, u_int, u_int); |
||
521 | extern void atalk_print(netdissect_options *, const u_char *, u_int); |
||
522 | extern u_int ltalk_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
523 | extern u_int llap_print(netdissect_options *, const u_char *, u_int); |
||
524 | extern void aarp_print(netdissect_options *, const u_char *, u_int); |
||
525 | extern u_int juniper_atm1_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
526 | extern u_int juniper_atm2_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
527 | extern u_int juniper_mfr_print(netdissect_options *, const struct pcap_pkthdr *, register const u_char *); |
||
528 | extern u_int juniper_mlfr_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
529 | extern u_int juniper_mlppp_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
530 | extern u_int juniper_pppoe_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
531 | extern u_int juniper_pppoe_atm_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
532 | extern u_int juniper_ggsn_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
533 | extern u_int juniper_es_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
534 | extern u_int juniper_monitor_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
535 | extern u_int juniper_services_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
536 | extern u_int juniper_ether_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
537 | extern u_int juniper_ppp_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
538 | extern u_int juniper_frelay_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
539 | extern u_int juniper_chdlc_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
540 | extern void snmp_print(netdissect_options *, const u_char *, u_int); |
||
541 | extern void rx_print(netdissect_options *, register const u_char *, int, int, int, u_char *); |
||
542 | extern void nfsreply_print(netdissect_options *, const u_char *, u_int, const u_char *); |
||
543 | extern void nfsreply_print_noaddr(netdissect_options *, const u_char *, u_int, const u_char *); |
||
544 | extern void nfsreq_print_noaddr(netdissect_options *, const u_char *, u_int, const u_char *); |
||
545 | extern void sip_print(netdissect_options *, const u_char *, u_int); |
||
546 | extern void syslog_print(netdissect_options *, const u_char *, u_int); |
||
547 | extern void lwres_print(netdissect_options *, const u_char *, u_int); |
||
548 | extern void cfm_print(netdissect_options *, const u_char *, u_int); |
||
549 | extern void nbt_tcp_print(netdissect_options *, const u_char *, int); |
||
550 | extern void nbt_udp137_print(netdissect_options *, const u_char *, int); |
||
551 | extern void nbt_udp138_print(netdissect_options *, const u_char *, int); |
||
552 | extern void smb_tcp_print(netdissect_options *, const u_char *, int); |
||
553 | extern void netbeui_print(netdissect_options *, u_short, const u_char *, int); |
||
554 | extern void ipx_netbios_print(netdissect_options *, const u_char *, u_int); |
||
555 | extern void print_data(netdissect_options *, const unsigned char *, int); |
||
556 | extern void decnet_print(netdissect_options *, const u_char *, u_int, u_int); |
||
557 | extern void tcp_print(netdissect_options *, const u_char *, u_int, const u_char *, int); |
||
558 | extern void ospf_print(netdissect_options *, const u_char *, u_int, const u_char *); |
||
559 | extern int ospf_print_te_lsa(netdissect_options *, const uint8_t *, u_int); |
||
560 | extern int ospf_print_grace_lsa(netdissect_options *, const uint8_t *, u_int); |
||
561 | extern u_int ppp_print(netdissect_options *, register const u_char *, u_int); |
||
562 | extern u_int ppp_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
563 | extern u_int ppp_hdlc_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
564 | extern u_int ppp_bsdos_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
565 | extern void lldp_print(netdissect_options *, const u_char *, u_int); |
||
566 | extern void rsvp_print(netdissect_options *, const u_char *, u_int); |
||
567 | extern void timed_print(netdissect_options *, const u_char *); |
||
568 | extern void m3ua_print(netdissect_options *, const u_char *, const u_int); |
||
569 | extern void aoe_print(netdissect_options *, const u_char *, const u_int); |
||
570 | extern void ftp_print(netdissect_options *, const u_char *, u_int); |
||
571 | extern void http_print(netdissect_options *, const u_char *, u_int); |
||
572 | extern void rtsp_print(netdissect_options *, const u_char *, u_int); |
||
573 | extern void smtp_print(netdissect_options *, const u_char *, u_int); |
||
574 | extern void geneve_print(netdissect_options *, const u_char *, u_int); |
||
575 | |||
576 | /* stuff that has not yet been rototiled */ |
||
577 | |||
578 | #if 0 |
||
579 | extern void ascii_print(netdissect_options *,u_int); |
||
580 | extern void default_print(netdissect_options *,const u_char *, u_int); |
||
581 | extern char *smb_errstr(netdissect_options *,int, int); |
||
582 | extern const char *nt_errstr(netdissect_options *, uint32_t); |
||
583 | #endif |
||
584 | |||
585 | extern u_int ipnet_if_print(netdissect_options *,const struct pcap_pkthdr *, const u_char *); |
||
586 | extern u_int ppi_if_print(netdissect_options *,const struct pcap_pkthdr *, const u_char *); |
||
587 | extern u_int nflog_if_print(netdissect_options *,const struct pcap_pkthdr *, const u_char *); |
||
588 | extern u_int ieee802_15_4_if_print(netdissect_options *,const struct pcap_pkthdr *, const u_char *); |
||
589 | extern u_int pktap_if_print(netdissect_options *,const struct pcap_pkthdr *, const u_char *); |
||
590 | extern u_int ieee802_11_radio_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
591 | extern u_int ieee802_11_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
592 | extern u_int ieee802_11_radio_avs_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
593 | extern u_int prism_if_print(netdissect_options *, const struct pcap_pkthdr *, const u_char *); |
||
594 | |||
595 | extern void ip6_print(netdissect_options *,const u_char *, u_int); |
||
596 | #ifdef INET6 |
||
597 | extern int frag6_print(netdissect_options *, const u_char *, const u_char *); |
||
598 | extern int rt6_print(netdissect_options *, const u_char *, const u_char *); |
||
599 | extern int hbhopt_print(netdissect_options *, const u_char *); |
||
600 | extern int dstopt_print(netdissect_options *, const u_char *); |
||
601 | extern void ripng_print(netdissect_options *, const u_char *, unsigned int); |
||
602 | extern int mobility_print(netdissect_options *, const u_char *, const u_char *); |
||
603 | extern void dhcp6_print(netdissect_options *, const u_char *, u_int); |
||
604 | extern void ospf6_print(netdissect_options *, const u_char *, u_int); |
||
605 | extern void babel_print(netdissect_options *, const u_char *, u_int); |
||
606 | #endif /*INET6*/ |
||
607 | |||
608 | #if 0 |
||
609 | struct cksum_vec { |
||
610 | const uint8_t *ptr; |
||
611 | int len; |
||
612 | }; |
||
613 | extern uint16_t in_cksum(const struct cksum_vec *, int); |
||
614 | extern uint16_t in_cksum_shouldbe(uint16_t, uint16_t); |
||
615 | #endif |
||
616 | extern int nextproto4_cksum(netdissect_options *ndo, const struct ip *, const uint8_t *, u_int, u_int, u_int); |
||
617 | extern int decode_prefix4(netdissect_options *ndo, const u_char *, u_int, char *, u_int); |
||
618 | #ifdef INET6 |
||
619 | extern int decode_prefix6(netdissect_options *ndo, const u_char *, u_int, char *, u_int); |
||
620 | #endif |
||
621 | |||
622 | extern void esp_print_decodesecret(netdissect_options *ndo); |
||
623 | extern int esp_print_decrypt_buffer_by_ikev2(netdissect_options *ndo, |
||
624 | int initiator, |
||
625 | u_char spii[8], u_char spir[8], |
||
626 | u_char *buf, u_char *end); |
||
627 | |||
628 | |||
629 | extern void geonet_print(netdissect_options *ndo,const u_char *eth_hdr,const u_char *geo_pck, u_int len); |
||
630 | extern void calm_fast_print(netdissect_options *ndo,const u_char *eth_hdr,const u_char *calm_pck, u_int len); |
||
631 | |||
632 | #endif /* netdissect_h */ |