• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/ap/gpl/timemachine/netatalk-2.2.0/sys/netatalk/
1/*
2 * $Id: endian.h,v 1.9 2009-01-06 20:05:00 morgana Exp $
3 *
4 * Copyright (c) 1990,1991 Regents of The University of Michigan.
5 * All Rights Reserved. See COPYRIGHT.
6 *
7 * This file handles both byte ordering and integer sizes.
8 */
9
10#ifndef _ATALK_ENDIAN_H_
11#define _ATALK_ENDIAN_H_
12
13#ifdef HAVE_CONFIG_H
14#include "config.h"
15#endif /* HAVE_CONFIG_H */
16
17#include <sys/types.h>
18#include <netinet/in.h>
19
20#ifdef _IBMR2
21#include <sys/machine.h>
22#endif /*_IBMR2*/
23
24#ifdef _ISOC9X_SOURCE
25#include <inttypes.h>
26#ifndef __BIT_TYPES_DEFINED__
27#define __BIT_TYPES_DEFINED__
28typedef uint8_t        u_int8_t;
29typedef uint16_t       u_int16_t;
30typedef uint32_t       u_int32_t;
31typedef uint64_t       u_int64_t;
32#endif /* ! __BIT_TYPES_DEFINED__ */
33#else
34
35/* handle sunos and solaris */
36#ifdef sun
37#ifdef BSD4_3
38#include <sys/bitypes.h>
39#else /* BSD4_3 */
40/* solaris and sunos don't consistently define u_int*_t. */
41typedef unsigned char      u_int8_t;
42typedef unsigned short     u_int16_t;
43typedef unsigned int       u_int32_t;
44typedef int                int32_t;
45#endif /* BSD4_3 */
46
47typedef unsigned long long u_int64_t;
48
49#ifndef _SSIZE_T
50#define _SSIZE_T
51typedef int ssize_t;
52#endif /* ssize_t */
53
54#else /* sun */
55
56/* luckily ultrix is dead. as a result, we know what the sizes of
57 * various types are forever. this makes some assumptions about integer
58 * sizes. */
59#if defined (ultrix) || defined(HAVE_32BIT_LONGS) || defined(HAVE_64BIT_LONGS)
60#ifndef __BIT_TYPES_DEFINED__
61#define __BIT_TYPES_DEFINED__
62typedef unsigned char  u_int8_t;
63typedef unsigned short u_int16_t;
64typedef unsigned int   u_int32_t;
65typedef int            int32_t;
66#endif
67#endif /* ultrix || HAVE_32BIT_LONGS || HAVE_64BIT_LONGS */
68
69#ifdef ultrix
70typedef int            ssize_t;
71#endif /* ultrix */
72
73#ifdef HAVE_64BIT_LONGS
74typedef unsigned long u_int64_t;
75#else /* HAVE_64BIT_LONGS */
76/* check for long long support. currently, i assume that if 64-bit
77 * ints exist that their made available via long long */
78#ifdef linux
79#include <endian.h> /* i think this is here for libc4 */
80#else /* linux */
81#if defined(HAVE_32BIT_LONGS) && !(defined(BSD4_4) || \
82				  defined(NO_LARGE_VOL_SUPPORT))
83typedef unsigned long long  u_int64_t;
84#endif /* HAVE_32BIT_LONGS || !BSD4_4 || NO_LARGE_VOL_SUPPORT */
85#endif /* linux */
86#endif /* HAVE_64BIT_LONGS */
87#endif /* sun */
88#endif /* ISOC9X */
89
90# ifndef BYTE_ORDER
91#define LITTLE_ENDIAN	1234
92#define BIG_ENDIAN	4321
93#define PDP_ENDIAN	3412
94
95
96#if defined(WORDS_BIGENDIAN) || defined(_BIG_ENDIAN)
97#define BYTE_ORDER	BIG_ENDIAN
98#else
99#define BYTE_ORDER	LITTLE_ENDIAN
100#endif /* WORDS_BIGENDIAN */
101
102# ifndef ntohl
103# if defined( sun ) || defined( ultrix ) || defined( _IBMR2 )
104#if BYTE_ORDER == BIG_ENDIAN
105#define ntohl(x)	(x)
106#define ntohs(x)	(x)
107#define htonl(x)	(x)
108#define htons(x)	(x)
109
110#else /* BYTE_ORDER == BIG_ENDIAN */
111#if defined( mips ) && defined( KERNEL )
112#define	ntohl(x)	nuxi_l(x)
113#define	ntohs(x)	nuxi_s(x)
114#define	htonl(x)	nuxi_l(x)
115#define	htons(x)	nuxi_s(x)
116
117#else /* mips && KERNEL */
118
119#if !( defined( sun ) && ( defined( i386 ) || defined(__x86_64) ) )
120unsigned short ntohs(), htons();
121unsigned int  ntohl(), htonl();
122#endif /* ! ( sun && i386 ) */
123
124#endif /* mips && KERNEL */
125#endif /* BYTE_ORDER == BIGENDIAN*/
126# endif /* sun ultrix _IBMR2 */
127# endif /* ntohl */
128#endif /* BYTE_ORDER */
129
130#endif /* _ATALK_ENDIAN_H_ */
131
132