This source file includes following definitions.
- __ntohl
- __ntohs
- __htonl
- __htons
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #ifndef _LINUX_IN_H
19 #define _LINUX_IN_H
20
21
22
23 enum {
24 IPPROTO_IP = 0,
25 IPPROTO_ICMP = 1,
26 IPPROTO_GGP = 2,
27 IPPROTO_TCP = 6,
28 IPPROTO_EGP = 8,
29 IPPROTO_PUP = 12,
30 IPPROTO_UDP = 17,
31 IPPROTO_IDP = 22,
32
33 IPPROTO_RAW = 255,
34 IPPROTO_MAX
35 };
36
37
38
39 struct in_addr {
40 unsigned long int s_addr;
41 };
42
43
44
45 #define __SOCK_SIZE__ 16
46 struct sockaddr_in {
47 short int sin_family;
48 unsigned short int sin_port;
49 struct in_addr sin_addr;
50
51
52 unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
53 sizeof(unsigned short int) - sizeof(struct in_addr)];
54 };
55 #define sin_zero __pad
56
57
58
59
60
61
62
63 #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
64 #define IN_CLASSA_NET 0xff000000
65 #define IN_CLASSA_NSHIFT 24
66 #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
67 #define IN_CLASSA_MAX 128
68
69 #define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
70 #define IN_CLASSB_NET 0xffff0000
71 #define IN_CLASSB_NSHIFT 16
72 #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
73 #define IN_CLASSB_MAX 65536
74
75 #define IN_CLASSC(a) ((((long int) (a)) & 0xc0000000) == 0xc0000000)
76 #define IN_CLASSC_NET 0xffffff00
77 #define IN_CLASSC_NSHIFT 8
78 #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
79
80 #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
81 #define IN_MULTICAST(a) IN_CLASSD(a)
82
83 #define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xe0000000) == 0xe0000000)
84 #define IN_BADCLASS(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
85
86
87 #define INADDR_ANY ((unsigned long int) 0x00000000)
88
89
90 #define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
91
92
93 #define INADDR_NONE 0xffffffff
94
95
96 #define IN_LOOPBACKNET 127
97
98
99 #define INADDR_LOOPBACK 0x7f000001
100
101
102
103
104
105
106
107 #if 0
108 # define IP_OPTIONS 1
109 #endif
110 #define IP_HDRINCL 2
111
112
113
114 #undef ntohl
115 #undef ntohs
116 #undef htonl
117 #undef htons
118
119 extern unsigned long int ntohl(unsigned long int);
120 extern unsigned short int ntohs(unsigned short int);
121 extern unsigned long int htonl(unsigned long int);
122 extern unsigned short int htons(unsigned short int);
123
124 static __inline__ unsigned long int
125 __ntohl(unsigned long int x)
126 {
127 __asm__("xchgb %b0,%h0\n\t"
128 "rorl $16,%0\n\t"
129 "xchgb %b0,%h0"
130 :"=q" (x)
131 : "0" (x));
132 return x;
133 }
134
135 static __inline__ unsigned short int
136 __ntohs(unsigned short int x)
137 {
138 __asm__("xchgb %b0,%h0"
139 : "=q" (x)
140 : "0" (x));
141 return x;
142 }
143
144 static __inline__ unsigned long int
145 __htonl(unsigned long int x)
146 {
147 __asm__("xchgb %b0,%h0\n\t"
148 "rorl $16,%0\n\t"
149 "xchgb %b0,%h0"
150 :"=q" (x)
151 : "0" (x));
152 return x;
153 }
154
155 static __inline__ unsigned short int
156 __htons(unsigned short int x)
157 {
158 __asm__("xchgb %b0,%h0"
159 : "=q" (x)
160 : "0" (x));
161 return x;
162 }
163
164 #ifdef __OPTIMIZE__
165 # define ntohl(x) __ntohl((x))
166 # define ntohs(x) __ntohs((x))
167 # define htonl(x) __htonl((x))
168 # define htons(x) __htons((x))
169 #endif
170
171 #endif