|
Lines 250-286
Link Here
|
| 250 |
* Unspecified |
250 |
* Unspecified |
| 251 |
*/ |
251 |
*/ |
| 252 |
#define IN6_IS_ADDR_UNSPECIFIED(a) \ |
252 |
#define IN6_IS_ADDR_UNSPECIFIED(a) \ |
| 253 |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
253 |
((*(const u_int32_t *)(&(a)->s6_addr[0]) == 0) && \ |
| 254 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
254 |
(*(const u_int32_t *)(&(a)->s6_addr[4]) == 0) && \ |
| 255 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \ |
255 |
(*(const u_int32_t *)(&(a)->s6_addr[8]) == 0) && \ |
| 256 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == 0)) |
256 |
(*(const u_int32_t *)(&(a)->s6_addr[12]) == 0)) |
| 257 |
|
257 |
|
| 258 |
/* |
258 |
/* |
| 259 |
* Loopback |
259 |
* Loopback |
| 260 |
*/ |
260 |
*/ |
| 261 |
#define IN6_IS_ADDR_LOOPBACK(a) \ |
261 |
#define IN6_IS_ADDR_LOOPBACK(a) \ |
| 262 |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
262 |
((*(const u_int32_t *)(&(a)->s6_addr[0]) == 0) && \ |
| 263 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
263 |
(*(const u_int32_t *)(&(a)->s6_addr[4]) == 0) && \ |
| 264 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \ |
264 |
(*(const u_int32_t *)(&(a)->s6_addr[8]) == 0) && \ |
| 265 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == ntohl(1))) |
265 |
(*(const u_int32_t *)(&(a)->s6_addr[12]) == ntohl(1))) |
| 266 |
|
266 |
|
| 267 |
/* |
267 |
/* |
| 268 |
* IPv4 compatible |
268 |
* IPv4 compatible |
| 269 |
*/ |
269 |
*/ |
| 270 |
#define IN6_IS_ADDR_V4COMPAT(a) \ |
270 |
#define IN6_IS_ADDR_V4COMPAT(a) \ |
| 271 |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
271 |
((*(const u_int32_t *)(&(a)->s6_addr[0]) == 0) && \ |
| 272 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
272 |
(*(const u_int32_t *)(&(a)->s6_addr[4]) == 0) && \ |
| 273 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \ |
273 |
(*(const u_int32_t *)(&(a)->s6_addr[8]) == 0) && \ |
| 274 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) != 0) && \ |
274 |
(*(const u_int32_t *)(&(a)->s6_addr[12]) != 0) && \ |
| 275 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) != ntohl(1))) |
275 |
(*(const u_int32_t *)(&(a)->s6_addr[12]) != ntohl(1))) |
| 276 |
|
276 |
|
| 277 |
/* |
277 |
/* |
| 278 |
* Mapped |
278 |
* Mapped |
| 279 |
*/ |
279 |
*/ |
| 280 |
#define IN6_IS_ADDR_V4MAPPED(a) \ |
280 |
#define IN6_IS_ADDR_V4MAPPED(a) \ |
| 281 |
((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ |
281 |
((*(const u_int32_t *)(&(a)->s6_addr[0]) == 0) && \ |
| 282 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ |
282 |
(*(const u_int32_t *)(&(a)->s6_addr[4]) == 0) && \ |
| 283 |
(*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) |
283 |
(*(const u_int32_t *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) |
| 284 |
|
284 |
|
| 285 |
/* |
285 |
/* |
| 286 |
* KAME Scope Values |
286 |
* KAME Scope Values |