nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 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 | |||
22 | #ifndef tcpdump_interface_h |
||
23 | #define tcpdump_interface_h |
||
24 | |||
25 | #ifdef HAVE_OS_PROTO_H |
||
26 | #include "os-proto.h" |
||
27 | #endif |
||
28 | |||
29 | /* snprintf et al */ |
||
30 | |||
31 | #include <stdarg.h> |
||
32 | |||
33 | #if HAVE_STDINT_H |
||
34 | #include <stdint.h> |
||
35 | #endif |
||
36 | |||
37 | #if !defined(HAVE_SNPRINTF) |
||
38 | int snprintf(char *, size_t, const char *, ...) |
||
39 | #ifdef __ATTRIBUTE___FORMAT_OK |
||
40 | __attribute__((format(printf, 3, 4))) |
||
41 | #endif /* __ATTRIBUTE___FORMAT_OK */ |
||
42 | ; |
||
43 | #endif /* !defined(HAVE_SNPRINTF) */ |
||
44 | |||
45 | #if !defined(HAVE_VSNPRINTF) |
||
46 | int vsnprintf(char *, size_t, const char *, va_list) |
||
47 | #ifdef __ATTRIBUTE___FORMAT_OK |
||
48 | __attribute__((format(printf, 3, 0))) |
||
49 | #endif /* __ATTRIBUTE___FORMAT_OK */ |
||
50 | ; |
||
51 | #endif /* !defined(HAVE_VSNPRINTF) */ |
||
52 | |||
53 | #ifndef HAVE_STRLCAT |
||
54 | extern size_t strlcat(char *, const char *, size_t); |
||
55 | #endif |
||
56 | #ifndef HAVE_STRLCPY |
||
57 | extern size_t strlcpy(char *, const char *, size_t); |
||
58 | #endif |
||
59 | |||
60 | #ifndef HAVE_STRDUP |
||
61 | extern char *strdup(const char *); |
||
62 | #endif |
||
63 | |||
64 | #ifndef HAVE_STRSEP |
||
65 | extern char *strsep(char **, const char *); |
||
66 | #endif |
||
67 | |||
68 | #define PT_VAT 1 /* Visual Audio Tool */ |
||
69 | #define PT_WB 2 /* distributed White Board */ |
||
70 | #define PT_RPC 3 /* Remote Procedure Call */ |
||
71 | #define PT_RTP 4 /* Real-Time Applications protocol */ |
||
72 | #define PT_RTCP 5 /* Real-Time Applications control protocol */ |
||
73 | #define PT_SNMP 6 /* Simple Network Management Protocol */ |
||
74 | #define PT_CNFP 7 /* Cisco NetFlow protocol */ |
||
75 | #define PT_TFTP 8 /* trivial file transfer protocol */ |
||
76 | #define PT_AODV 9 /* Ad-hoc On-demand Distance Vector Protocol */ |
||
77 | #define PT_CARP 10 /* Common Address Redundancy Protocol */ |
||
78 | #define PT_RADIUS 11 /* RADIUS authentication Protocol */ |
||
79 | #define PT_ZMTP1 12 /* ZeroMQ Message Transport Protocol 1.0 */ |
||
80 | #define PT_VXLAN 13 /* Virtual eXtensible Local Area Network */ |
||
81 | #define PT_PGM 14 /* [UDP-encapsulated] Pragmatic General Multicast */ |
||
82 | #define PT_PGM_ZMTP1 15 /* ZMTP/1.0 inside PGM (native or UDP-encapsulated) */ |
||
83 | #define PT_LMP 16 /* Link Management Protocol */ |
||
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 | extern char *program_name; /* used to generate self-identifying messages */ |
||
97 | |||
98 | extern int32_t thiszone; /* seconds offset from gmt to local time */ |
||
99 | |||
100 | /* |
||
101 | * True if "l" bytes of "var" were captured. |
||
102 | * |
||
103 | * The "snapend - (l) <= snapend" checks to make sure "l" isn't so large |
||
104 | * that "snapend - (l)" underflows. |
||
105 | * |
||
106 | * The check is for <= rather than < because "l" might be 0. |
||
107 | * |
||
108 | * We cast the pointers to uintptr_t to make sure that the compiler |
||
109 | * doesn't optimize away any of these tests (which it is allowed to |
||
110 | * do, as adding an integer to, or subtracting an integer from, a |
||
111 | * pointer assumes that the pointer is a pointer to an element of an |
||
112 | * array and that the result of the addition or subtraction yields a |
||
113 | * pointer to another member of the array, so that, for example, if |
||
114 | * you subtract a positive integer from a pointer, the result is |
||
115 | * guaranteed to be less than the original pointer value). See |
||
116 | * |
||
117 | * http://www.kb.cert.org/vuls/id/162289 |
||
118 | */ |
||
119 | #define TTEST2(var, l) \ |
||
120 | ((uintptr_t)snapend - (l) <= (uintptr_t)snapend && \ |
||
121 | (uintptr_t)&(var) <= (uintptr_t)snapend - (l)) |
||
122 | |||
123 | /* True if "var" was captured */ |
||
124 | #define TTEST(var) TTEST2(var, sizeof(var)) |
||
125 | |||
126 | /* Bail if "l" bytes of "var" were not captured */ |
||
127 | #define TCHECK2(var, l) if (!TTEST2(var, l)) goto trunc |
||
128 | |||
129 | /* Bail if "var" was not captured */ |
||
130 | #define TCHECK(var) TCHECK2(var, sizeof(var)) |
||
131 | |||
132 | extern int mask2plen(uint32_t); |
||
133 | extern const char *tok2strary_internal(const char **, int, const char *, int); |
||
134 | #define tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i) |
||
135 | |||
136 | extern void error(const char *, ...) |
||
137 | __attribute__((noreturn)) |
||
138 | #ifdef __ATTRIBUTE___FORMAT_OK |
||
139 | __attribute__((format (printf, 1, 2))) |
||
140 | #endif /* __ATTRIBUTE___FORMAT_OK */ |
||
141 | ; |
||
142 | extern void warning(const char *, ...) |
||
143 | #ifdef __ATTRIBUTE___FORMAT_OK |
||
144 | __attribute__((format (printf, 1, 2))) |
||
145 | #endif /* __ATTRIBUTE___FORMAT_OK */ |
||
146 | ; |
||
147 | |||
148 | extern char *read_infile(char *); |
||
149 | extern char *copy_argv(char **); |
||
150 | |||
151 | extern const char *dnname_string(u_short); |
||
152 | extern const char *dnnum_string(u_short); |
||
153 | |||
154 | /* checksum routines */ |
||
155 | extern void init_checksum(void); |
||
156 | extern uint16_t verify_crc10_cksum(uint16_t, const u_char *, int); |
||
157 | extern uint16_t create_osi_cksum(const uint8_t *, int, int); |
||
158 | |||
159 | /* The printer routines. */ |
||
160 | |||
161 | #include <pcap.h> |
||
162 | |||
163 | extern char *smb_errstr(int, int); |
||
164 | extern const char *nt_errstr(uint32_t); |
||
165 | |||
166 | #ifdef INET6 |
||
167 | extern int mask62plen(const u_char *); |
||
168 | #endif /*INET6*/ |
||
169 | |||
170 | struct cksum_vec { |
||
171 | const uint8_t *ptr; |
||
172 | int len; |
||
173 | }; |
||
174 | extern uint16_t in_cksum(const struct cksum_vec *, int); |
||
175 | extern uint16_t in_cksum_shouldbe(uint16_t, uint16_t); |
||
176 | |||
177 | #ifndef HAVE_BPF_DUMP |
||
178 | struct bpf_program; |
||
179 | |||
180 | extern void bpf_dump(const struct bpf_program *, int); |
||
181 | |||
182 | #endif |
||
183 | |||
184 | #include "netdissect.h" |
||
185 | |||
186 | /* forward compatibility */ |
||
187 | |||
188 | #ifndef NETDISSECT_REWORKED |
||
189 | extern netdissect_options *gndo; |
||
190 | |||
191 | #define bflag gndo->ndo_bflag |
||
192 | #define eflag gndo->ndo_eflag |
||
193 | #define fflag gndo->ndo_fflag |
||
194 | #define jflag gndo->ndo_jflag |
||
195 | #define Kflag gndo->ndo_Kflag |
||
196 | #define nflag gndo->ndo_nflag |
||
197 | #define Nflag gndo->ndo_Nflag |
||
198 | #define Oflag gndo->ndo_Oflag |
||
199 | #define pflag gndo->ndo_pflag |
||
200 | #define qflag gndo->ndo_qflag |
||
201 | #define Rflag gndo->ndo_Rflag |
||
202 | #define sflag gndo->ndo_sflag |
||
203 | #define Sflag gndo->ndo_Sflag |
||
204 | #define tflag gndo->ndo_tflag |
||
205 | #define Uflag gndo->ndo_Uflag |
||
206 | #define uflag gndo->ndo_uflag |
||
207 | #define vflag gndo->ndo_vflag |
||
208 | #define xflag gndo->ndo_xflag |
||
209 | #define Xflag gndo->ndo_Xflag |
||
210 | #define Cflag gndo->ndo_Cflag |
||
211 | #define Gflag gndo->ndo_Gflag |
||
212 | #define Aflag gndo->ndo_Aflag |
||
213 | #define Bflag gndo->ndo_Bflag |
||
214 | #define Iflag gndo->ndo_Iflag |
||
215 | #define suppress_default_print gndo->ndo_suppress_default_print |
||
216 | #define packettype gndo->ndo_packettype |
||
217 | #define sigsecret gndo->ndo_sigsecret |
||
218 | #define Wflag gndo->ndo_Wflag |
||
219 | #define WflagChars gndo->ndo_WflagChars |
||
220 | #define Cflag_count gndo->ndo_Cflag_count |
||
221 | #define Gflag_count gndo->ndo_Gflag_count |
||
222 | #define Gflag_time gndo->ndo_Gflag_time |
||
223 | #define Hflag gndo->ndo_Hflag |
||
224 | #define snaplen gndo->ndo_snaplen |
||
225 | #define snapend gndo->ndo_snapend |
||
226 | |||
227 | extern void default_print(const u_char *, u_int); |
||
228 | |||
229 | #endif |