Definitions for IPv6 addresses. More...
Definitions for IPv6 addresses.
Definition in file addr.h.
Go to the source code of this file.
Data Structures | |
union | ipv6_addr_t |
Data type to represent an IPv6 address. More... | |
Macros | |
#define | IPV6_ADDR_BIT_LEN (128) |
Length of an IPv6 address in bit. | |
#define | IPV6_ADDR_MAX_STR_LEN (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")) |
Maximum length of an IPv6 address as string. | |
#define | IPV6_ADDR_SITE_LOCAL_PREFIX (0xfec0) |
The first 10 bits of a site-local IPv6 unicast address. More... | |
#define | IPV6_ADDR_UNSPECIFIED |
Static initializer for the unspecified IPv6 address (::) More... | |
#define | IPV6_ADDR_LOOPBACK |
Static initializer for the loopback IPv6 address (::1) More... | |
#define | IPV6_ADDR_LINK_LOCAL_PREFIX |
Static initializer for the link-local prefix (fe80::/64) More... | |
#define | IPV6_ADDR_ALL_NODES_IF_LOCAL |
Static initializer for the interface-local all nodes multicast IPv6 address (ff01::1) More... | |
#define | IPV6_ADDR_ALL_NODES_LINK_LOCAL |
Static initializer for the link-local all nodes multicast IPv6 address (ff02::1) More... | |
#define | IPV6_ADDR_ALL_ROUTERS_IF_LOCAL |
Static initializer for the interface-local all routers multicast IPv6 address (ff01::2) More... | |
#define | IPV6_ADDR_ALL_ROUTERS_LINK_LOCAL |
Static initializer for the link-local all routers multicast IPv6 address (ff02::2) More... | |
#define | IPV6_ADDR_ALL_ROUTERS_SITE_LOCAL |
Static initializer for the site-local all routers multicast IPv6 address (ff05::2) More... | |
#define | IPV6_ADDR_SOLICITED_NODE_PREFIX |
Static initializer for the solicited node multicast prefix (ff02:0:0:0:0:1:ff00::/104) More... | |
Functions | |
static bool | ipv6_addr_is_unspecified (const ipv6_addr_t *addr) |
Checks if addr is unspecified (all zero). More... | |
static bool | ipv6_addr_is_loopback (const ipv6_addr_t *addr) |
Checks if addr is a loopback address. More... | |
static bool | ipv6_addr_is_ipv4_compat (const ipv6_addr_t *addr) |
Checks if addr is a IPv4-compatible IPv6 address. More... | |
static bool | ipv6_addr_is_ipv4_mapped (const ipv6_addr_t *addr) |
Checks if addr is a IPv4-mapped IPv6 address. More... | |
static bool | ipv6_addr_is_multicast (const ipv6_addr_t *addr) |
Check if addr is a multicast address. More... | |
static bool | ipv6_addr_is_link_local (const ipv6_addr_t *addr) |
Check if addr is a link-local address. More... | |
static bool | ipv6_addr_is_site_local (const ipv6_addr_t *addr) |
Checks if addr is a site-local address. More... | |
static bool | ipv6_addr_is_unique_local_unicast (const ipv6_addr_t *addr) |
Check if addr is unique local unicast address. More... | |
static bool | ipv6_addr_is_global (const ipv6_addr_t *addr) |
Check if addr is global unicast address. More... | |
static bool | ipv6_addr_is_solicited_node (const ipv6_addr_t *addr) |
Check if addr is solicited-node multicast address. More... | |
bool | ipv6_addr_equal (const ipv6_addr_t *a, const ipv6_addr_t *b) |
Checks if two IPv6 addresses are equal. More... | |
uint8_t | ipv6_addr_match_prefix (const ipv6_addr_t *a, const ipv6_addr_t *b) |
Checks up to which bit-count two IPv6 addresses match in their prefix. More... | |
void | ipv6_addr_init_prefix (ipv6_addr_t *out, const ipv6_addr_t *prefix, uint8_t bits) |
Sets IPv6 address out with the first bits taken from prefix and leaves the remaining bits untouched. More... | |
void | ipv6_addr_init_iid (ipv6_addr_t *out, const uint8_t *iid, uint8_t bits) |
Sets the last bits of IPv6 address out to iid . More... | |
static void | ipv6_addr_set_unspecified (ipv6_addr_t *addr) |
Sets addr dynamically to the unspecified IPv6 address (::). More... | |
static void | ipv6_addr_set_loopback (ipv6_addr_t *addr) |
Sets addr dynamically to the loopback IPv6 address (::1). More... | |
static void | ipv6_addr_set_link_local_prefix (ipv6_addr_t *addr) |
Sets the first 64 bit of addr to link local prefix (fe08::/64). More... | |
static void | ipv6_addr_set_iid (ipv6_addr_t *addr, uint64_t iid) |
Sets the 64-bit interface ID (as integer) of a unicast or anycast IPv6 address. More... | |
static void | ipv6_addr_set_aiid (ipv6_addr_t *addr, uint8_t *iid) |
Sets the 64-bit interface ID (as array) of a unicast or anycast IPv6 address. More... | |
static void | ipv6_addr_set_multicast (ipv6_addr_t *addr, unsigned int flags, unsigned int scope) |
Sets the bits for an address required to be a multicast address. More... | |
static void | ipv6_addr_set_all_nodes_multicast (ipv6_addr_t *addr, unsigned int scope) |
Sets addr dynamically to an all nodes multicast IPv6 address (ff0S::1, where S is the scope). More... | |
static void | ipv6_addr_set_all_routers_multicast (ipv6_addr_t *addr, unsigned int scope) |
Sets addr dynamically to an all routers multicast IPv6 address (ff0S::2, where S is the scope). More... | |
static void | ipv6_addr_set_solicited_nodes (ipv6_addr_t *out, const ipv6_addr_t *in) |
Set out to the solicited-node multicast address computed from in . More... | |
char * | ipv6_addr_to_str (char *result, const ipv6_addr_t *addr, uint8_t result_len) |
Converts an IPv6 address to its string representation. More... | |
ipv6_addr_t * | ipv6_addr_from_str (ipv6_addr_t *result, const char *addr) |
Converts an IPv6 address string representation to a byte-represented IPv6 address. More... | |
ipv6_addr_t * | ipv6_addr_from_buf (ipv6_addr_t *result, const char *addr, size_t addr_len) |
Converts an IPv6 address from a buffer of characters to a byte-represented IPv6 address. More... | |
char * | ipv6_addr_split_str (char *addr_str, char separator) |
split IPv6 address string representation and return remaining string More... | |
int | ipv6_addr_split_int (char *addr_str, char separator, int _default) |
split IPv6 address string representation More... | |
static int | ipv6_addr_split_prefix (char *addr_str) |
split IPv6 prefix string representation More... | |
static char * | ipv6_addr_split_iface (char *addr_str) |
split IPv6 address + interface specifier More... | |
void | ipv6_addr_print (const ipv6_addr_t *addr) |
Print IPv6 address to stdout. More... | |
Multicast address flags | |
Values for the flag field in multicast addresses.
| |
#define | IPV6_ADDR_MCAST_FLAG_TRANSIENT (0x01) |
The address is transient, i.e. More... | |
#define | IPV6_ADDR_MCAST_FLAG_PREFIX_BASED (0x02) |
The address is based on a network prefix. More... | |
#define | IPV6_ADDR_MCAST_FLAG_EMBED_ON_RP (0x04) |
The address embeds the address on the rendezvous point. More... | |