ipv6: IPv6 Address Handling

## Data Structures

struct | ipv6addr

## Typedefs

typedef uint16 | ipv6port

## Functions

const char * | ipv6_scan (const char *s, ipv6addr *addr)
const char * | ipv6_format (const ipv6addr *addr)
unsigned | fmt_ipv6addr (char *buffer, const ipv6addr *addr)
int | ipv6_isv4mapped (const ipv6addr *addr)

## Variables

const ipv6addr | IPV6ADDR_ANY
const ipv6addr | IPV6ADDR_LOOPBACK
const ipv6addr | IPV6ADDR_V4PREFIX

## Detailed Description

## Typedef Documentation

## ipv6port

typedef uint16 ipv6port

IPv6 port number.

## Function Documentation

## fmt_ipv6addr()

unsigned fmt_ipv6addr | ( | char * | buffer,
|  | const ipv6addr * | addr
| ) |  |

Produce a formatted string from an IPv6 address.

The given buffer must be at least 39 bytes long, or 40 bytes if it needs to contain the standard trailing `NUL` byte.

Returns
  The number of bytes written to the buffer.

Note
  This routine is thread and recursion safe.

References ipv6addr::addr, ipv6_format(), obuf_put2s(), obuf_putc(), obuf_putxw(), and outbuf.

Referenced by ipv6_format().

## ipv6_format()

const char* ipv6_format | ( | const ipv6addr * | addr | ) |

Produce a formatted C string from an IPv6 address.

Note
  The return value is statically allocated. Multiple calls to this function will return pointers to the same string.

References fmt_ipv6addr().

Referenced by dns_ip6_r(), dns_name6_r(), and fmt_ipv6addr().

## ipv6_isv4mapped()

int ipv6_isv4mapped | ( | const ipv6addr * | addr | ) |

Return true if the IPv6 address is actually a wrapped IPv4 address.

Referenced by dns_name6_r().

## ipv6_scan()

const char* ipv6_scan | ( | const char * | s,
|  | ipv6addr * | addr
| ) |  |

Scan a C string for an IPv6 address.

Returns
  `NULL` if parsing failed, otherwise a pointer to the first character after the end of the address.

References ipv6addr::addr, ipv4addr::addr, ipv4_scan(), obuf_flush(), obuf_put2s(), obuf_putc(), obuf_puts, obuf_putxw(), and outbuf.

Referenced by dns_ip6_r().

## Variable Documentation

## IPV6ADDR_ANY

const ipv6addr IPV6ADDR_ANY

IPv6 "any" address constant.

## IPV6ADDR_LOOPBACK

const ipv6addr IPV6ADDR_LOOPBACK

IPv6 loopback address constant.

## IPV6ADDR_V4PREFIX

const ipv6addr IPV6ADDR_V4PREFIX

IPv4-in-IPv6 address prefix constant.

Referenced by dns_ip6_r().