ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_typeof, ne_iaddr_free — functions to manipulate and compare network addresses
#include <ne_socket.h> typedef enum { ne_iaddr_ipv4 = 0, ne_iaddr_ipv6 } ne_iaddr_type;
ne_inet_addr *ne_iaddr_make( | ne_iaddr_type | type, |
const unsigned char * | raw) ; |
int ne_iaddr_cmp( | const ne_inet_addr * | ia1, |
const ne_inet_addr * | ia2) ; |
char *ne_iaddr_print( | const ne_inet_addr * | ia, |
char * | buffer, | |
size_t | bufsiz) ; |
ne_iaddr_type ne_iaddr_typeof( | const ne_inet_addr * | ia) ; |
void ne_iaddr_free( | const ne_inet_addr * | ia) ; |
ne_iaddr_make
creates an
ne_inet_addr object from a raw binary network
address; for instance the four bytes 0x7f 0x00 0x00
0x01
represent the IPv4 address
127.0.0.1
. The object returned is suitable for
passing to ne_sock_connect
. A binary IPv4
address contains four bytes; a binary IPv6 address contains
sixteen bytes; addresses passed must be in network byte
order.
ne_iaddr_cmp
can be used to compare two
network addresses; returning zero only if they are identical. The
addresses need not be of the same address type; if the addresses
are not of the same type, the return value is guaranteed to be
non-zero.
ne_iaddr_print
can be used to print the
human-readable string representation of a network address into a
buffer, for instance the string
"127.0.0.1"
.
ne_iaddr_typeof
returns the type of the
given network address.
ne_iaddr_free
releases the memory
associated with a network address object.
ne_iaddr_make
returns NULL
if the
address type passed is not supported (for instance on a platform
which does not support IPv6).
ne_iaddr_print
returns the
buffer
pointer, and never NULL
.
The following example connects a socket to port 80 at the
address 127.0.0.1
.
unsigned char addr[] = "\0x7f\0x00\0x00\0x01"; ne_inet_addr *ia; ia = ne_iaddr_make(ne_iaddr_ipv4, addr); if (ia != NULL) { ne_socket *sock = ne_sock_connect(ia, 80); ne_iaddr_free(ia); /* ... */ } else { /* ... */ }