diff options
Diffstat (limited to 'contrib/tcpdump/tcpdump-stdinc.h')
-rw-r--r-- | contrib/tcpdump/tcpdump-stdinc.h | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/contrib/tcpdump/tcpdump-stdinc.h b/contrib/tcpdump/tcpdump-stdinc.h index 5b10ef8..c437cc1 100644 --- a/contrib/tcpdump/tcpdump-stdinc.h +++ b/contrib/tcpdump/tcpdump-stdinc.h @@ -29,8 +29,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * - * $FreeBSD$ - * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.17 2006-05-19 17:55:34 hannes Exp $ (LBL) + * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.18 2007-11-24 18:13:33 mcr Exp $ (LBL) */ /* @@ -56,6 +55,10 @@ #include <sys/types.h> #include <net/netdb.h> /* in wpcap's Win32/include */ +#ifndef NBBY +#define NBBY 8 +#endif + #if !defined(__MINGW32__) && !defined(__WATCOMC__) #undef toascii #define isascii __isascii @@ -144,6 +147,37 @@ typedef char* caddr_t; #define FOPEN_WRITE_BIN FOPEN_WRITE_TXT #endif +#if defined(__GNUC__) && defined(__i386__) && !defined(__ntohl) + #undef ntohl + #undef ntohs + #undef htonl + #undef htons + + static __inline__ unsigned long __ntohl (unsigned long x); + static __inline__ unsigned short __ntohs (unsigned short x); + + #define ntohl(x) __ntohl(x) + #define ntohs(x) __ntohs(x) + #define htonl(x) __ntohl(x) + #define htons(x) __ntohs(x) + + static __inline__ unsigned long __ntohl (unsigned long x) + { + __asm__ ("xchgb %b0, %h0\n\t" /* swap lower bytes */ + "rorl $16, %0\n\t" /* swap words */ + "xchgb %b0, %h0" /* swap higher bytes */ + : "=q" (x) : "0" (x)); + return (x); + } + + static __inline__ unsigned short __ntohs (unsigned short x) + { + __asm__ ("xchgb %b0, %h0" /* swap bytes */ + : "=q" (x) : "0" (x)); + return (x); + } +#endif + #ifndef INET_ADDRSTRLEN #define INET_ADDRSTRLEN 16 #endif |