ne_iaddr_make

Langue: en

Version: 25 February 2009 (fedora - 05/07/09)

Section: 3 (Bibliothèques de fonctions)

ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_typeof, ne_iaddr_free - functions to manipulate and compare network addresses

Synopsis

 #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);
 

Description

ne_iaddr_make

creates an ne_inet_addr object from a raw binary network address; for instance the four bytes FC0x7f 0x00 0x00 0x01F[] represent the IPv4 address FC127.0.0.1F[]. 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 FC"127.0.0.1"F[].

ne_iaddr_typeof returns the type of the given network address.

ne_iaddr_free releases the memory associated with a network address object.

Return value

ne_iaddr_make returns FCNULLF[] 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 FCNULLF[].

Examples

The following example connects a socket to port 80 at the address FC127.0.0.1F[].

 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 {
     /* ... */
 }
 
 

See also

ne_addr_resolve

Author

Joe Orton <neon@lists.manyfish.co.uk>

Author.