source: rtems-libbsd/freebsd/contrib/tcpdump/tcpdump-stdinc.h @ 8440506

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 8440506 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: 6.3 KB
Line 
1/*
2 * Copyright (c) 2002 - 2003
3 * NetGroup, Politecnico di Torino (Italy)
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the Politecnico di Torino nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 *
31 *
32 * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.18 2007-11-24 18:13:33 mcr Exp $ (LBL)
33 */
34
35/*
36 * Include the appropriate OS header files on Windows and various flavors
37 * of UNIX, and also define some additional items and include various
38 * non-OS header files on Windows, and; this isolates most of the platform
39 * differences to this one file.
40 */
41
42#ifndef tcpdump_stdinc_h
43#define tcpdump_stdinc_h
44
45#ifdef WIN32
46
47#include <stdio.h>
48#include <winsock2.h>
49#include <Ws2tcpip.h>
50#include "bittypes.h"
51#include <ctype.h>
52#include <time.h>
53#include <io.h>
54#include <fcntl.h>
55#include <rtems/bsd/sys/types.h>
56#include <net/netdb.h>  /* in wpcap's Win32/include */
57
58#ifndef NBBY
59#define NBBY    8
60#endif
61
62#if !defined(__MINGW32__) && !defined(__WATCOMC__)
63#undef toascii
64#define isascii __isascii
65#define toascii __toascii
66#define stat _stat
67#define open _open
68#define fstat _fstat
69#define read _read
70#define close _close
71#define O_RDONLY _O_RDONLY
72
73typedef short ino_t;
74#endif /* __MINGW32__ */
75
76#ifdef __MINGW32__
77#include <stdint.h>
78#endif
79
80/* Protos for missing/x.c functions (ideally <missing/addrinfo.h>
81 * should be used, but it clashes with <ws2tcpip.h>).
82 */
83extern const char *inet_ntop (int, const void *, char *, size_t);
84extern int inet_pton (int, const char *, void *);
85extern int inet_aton (const char *cp, struct in_addr *addr);
86
87#ifndef INET6_ADDRSTRLEN
88#define INET6_ADDRSTRLEN 46
89#endif
90
91#ifndef toascii
92#define toascii(c) ((c) & 0x7f)
93#endif
94
95#ifndef caddr_t
96typedef char* caddr_t;
97#endif /* caddr_t */
98
99#define MAXHOSTNAMELEN  64
100#define NI_MAXHOST      1025
101#define snprintf _snprintf
102#define vsnprintf _vsnprintf
103#define RETSIGTYPE void
104
105#else /* WIN32 */
106
107#include <ctype.h>
108#include <unistd.h>
109#include <netdb.h>
110#if HAVE_INTTYPES_H
111#include <inttypes.h>
112#else
113#if HAVE_STDINT_H
114#include <stdint.h>
115#endif
116#endif
117#ifdef HAVE_SYS_BITYPES_H
118#include <sys/bitypes.h>
119#endif
120#include <rtems/bsd/sys/param.h>
121#include <rtems/bsd/sys/types.h>                        /* concession to AIX */
122#include <rtems/bsd/sys/time.h>
123#include <sys/socket.h>
124#include <netinet/in.h>
125
126#ifdef TIME_WITH_SYS_TIME
127#include <time.h>
128#endif
129
130#include <arpa/inet.h>
131
132#endif /* WIN32 */
133
134#ifndef HAVE___ATTRIBUTE__
135#define __attribute__(x)
136#endif
137
138/*
139 * Used to declare a structure unaligned, so that the C compiler,
140 * if necessary, generates code that doesn't assume alignment.
141 * This is required because there is no guarantee that the packet
142 * data we get from libpcap/WinPcap is properly aligned.
143 *
144 * This assumes that, for all compilers that support __attribute__:
145 *
146 *      1) they support __attribute__((packed));
147 *
148 *      2) for all instruction set architectures requiring strict
149 *         alignment, declaring a structure with that attribute
150 *         causes the compiler to generate code that handles
151 *         misaligned 2-byte, 4-byte, and 8-byte integral
152 *         quantities.
153 *
154 * It does not (yet) handle compilers where you can get the compiler
155 * to generate code of that sort by some other means.
156 *
157 * This is required in order to, for example, keep the compiler from
158 * generating, for
159 *
160 *      if (bp->bp_htype == 1 && bp->bp_hlen == 6 && bp->bp_op == BOOTPREQUEST) {
161 *
162 * in print-bootp.c, code that loads the first 4-byte word of a
163 * "struct bootp", masking out the bp_hops field, and comparing the result
164 * against 0x01010600.
165 *
166 * Note: this also requires that padding be put into the structure,
167 * at least for compilers where it's implemented as __attribute__((packed)).
168 */
169#define UNALIGNED       __attribute__((packed))
170
171#if defined(WIN32) || defined(MSDOS)
172  #define FOPEN_READ_TXT   "rt"
173  #define FOPEN_READ_BIN   "rb"
174  #define FOPEN_WRITE_TXT  "wt"
175  #define FOPEN_WRITE_BIN  "wb"
176#else
177  #define FOPEN_READ_TXT   "r"
178  #define FOPEN_READ_BIN   FOPEN_READ_TXT
179  #define FOPEN_WRITE_TXT  "w"
180  #define FOPEN_WRITE_BIN  FOPEN_WRITE_TXT
181#endif
182
183#if defined(__GNUC__) && defined(__i386__) && !defined(__APPLE__) && !defined(__ntohl)
184  #undef ntohl
185  #undef ntohs
186  #undef htonl
187  #undef htons
188
189  static __inline__ unsigned long __ntohl (unsigned long x);
190  static __inline__ unsigned short __ntohs (unsigned short x);
191
192  #define ntohl(x)  __ntohl(x)
193  #define ntohs(x)  __ntohs(x)
194  #define htonl(x)  __ntohl(x)
195  #define htons(x)  __ntohs(x)
196
197  static __inline__ unsigned long __ntohl (unsigned long x)
198  {
199    __asm__ ("xchgb %b0, %h0\n\t"   /* swap lower bytes  */
200             "rorl  $16, %0\n\t"    /* swap words        */
201             "xchgb %b0, %h0"       /* swap higher bytes */
202            : "=q" (x) : "0" (x));
203    return (x);
204  }
205
206  static __inline__ unsigned short __ntohs (unsigned short x)
207  {
208    __asm__ ("xchgb %b0, %h0"       /* swap bytes */
209            : "=q" (x) : "0" (x));
210    return (x);
211  }
212#endif
213
214#ifndef INET_ADDRSTRLEN
215#define INET_ADDRSTRLEN 16
216#endif
217
218#ifndef TRUE
219#define TRUE 1
220#endif
221
222#ifndef FALSE
223#define FALSE 0
224#endif
225
226#endif /* tcpdump_stdinc_h */
Note: See TracBrowser for help on using the repository browser.