4 * Network address operations.
6 * Copyright (c) 2000 Dug Song <dugsong@monkey.org>
8 * $Id: addr.h,v 1.12 2003/02/27 03:44:55 dugsong Exp $
14 #define ADDR_TYPE_NONE 0 /* No address set */
15 #define ADDR_TYPE_ETH 1 /* Ethernet */
16 #define ADDR_TYPE_IP 2 /* Internet Protocol v4 */
17 #define ADDR_TYPE_IP6 3 /* Internet Protocol v6 */
32 #define addr_eth __addr_u.__eth
33 #define addr_ip __addr_u.__ip
34 #define addr_ip6 __addr_u.__ip6
35 #define addr_data8 __addr_u.__data8
36 #define addr_data16 __addr_u.__data16
37 #define addr_data32 __addr_u.__data32
39 #define addr_pack(addr, type, bits, data, len) do { \
40 (addr)->addr_type = type; \
41 (addr)->addr_bits = bits; \
42 memmove((addr)->addr_data8, (char *)data, len); \
46 int addr_cmp(const struct addr
*a
, const struct addr
*b
);
48 int addr_bcast(const struct addr
*a
, struct addr
*b
);
49 int addr_net(const struct addr
*a
, struct addr
*b
);
51 char *addr_ntop(const struct addr
*src
, char *dst
, size_t size
);
52 int addr_pton(const char *src
, struct addr
*dst
);
54 char *addr_ntoa(const struct addr
*a
);
55 #define addr_aton addr_pton
57 int addr_ntos(const struct addr
*a
, struct sockaddr
*sa
);
58 int addr_ston(const struct sockaddr
*sa
, struct addr
*a
);
60 int addr_btos(uint16_t bits
, struct sockaddr
*sa
);
61 int addr_stob(const struct sockaddr
*sa
, uint16_t *bits
);
63 int addr_btom(uint16_t bits
, void *mask
, size_t size
);
64 int addr_mtob(const void *mask
, size_t size
, uint16_t *bits
);
67 #endif /* DNET_ADDR_H */