lwIP  2.1.0
Lightweight IP stack
netdb.c File Reference
#include "lwip/netdb.h"
#include "lwip/err.h"
#include "lwip/mem.h"
#include "lwip/memp.h"
#include "lwip/ip_addr.h"
#include "lwip/api.h"
#include "lwip/dns.h"
#include <string.h>
#include <stdlib.h>

Data Structures

struct  gethostbyname_r_helper
 

Macros

#define LWIP_DNS_API_HOSTENT_STORAGE   0
 
#define HOSTENT_STORAGE   static
 

Functions

struct hostent * lwip_gethostbyname (const char *name)
 
int lwip_gethostbyname_r (const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop)
 
void lwip_freeaddrinfo (struct addrinfo *ai)
 
int lwip_getaddrinfo (const char *nodename, const char *servname, const struct addrinfo *hints, struct addrinfo **res)
 

Variables

int h_errno
 

Detailed Description

API functions for name resolving

Macro Definition Documentation

◆ HOSTENT_STORAGE

#define HOSTENT_STORAGE   static

define "hostent" variables storage

◆ LWIP_DNS_API_HOSTENT_STORAGE

#define LWIP_DNS_API_HOSTENT_STORAGE   0

define "hostent" variables storage: 0 if we use a static (but unprotected) set of variables for lwip_gethostbyname, 1 if we use a local storage

Function Documentation

◆ lwip_freeaddrinfo()

void lwip_freeaddrinfo ( struct addrinfo *  ai)

Frees one or more addrinfo structures returned by getaddrinfo(), along with any additional storage associated with those structures. If the ai_next field of the structure is not null, the entire list of structures is freed.

Parameters
aistruct addrinfo to free

◆ lwip_getaddrinfo()

int lwip_getaddrinfo ( const char *  nodename,
const char *  servname,
const struct addrinfo *  hints,
struct addrinfo **  res 
)

Translates the name of a service location (for example, a host name) and/or a service name and returns a set of socket addresses and associated information to be used in creating a socket with which to address the specified service. Memory for the result is allocated internally and must be freed by calling lwip_freeaddrinfo()!

Due to a limitation in dns_gethostbyname, only the first address of a host is returned. Also, service names are not supported (only port numbers)!

Parameters
nodenamedescriptive name or address string of the host (may be NULL -> local address)
servnameport number as string of NULL
hintsstructure containing input values that set socktype and protocol
respointer to a pointer where to store the result (set to NULL on failure)
Returns
0 on success, non-zero on failure

◆ lwip_gethostbyname()

struct hostent* lwip_gethostbyname ( const char *  name)

Returns an entry containing addresses of address family AF_INET for the host with name name. Due to dns_gethostbyname limitations, only one address is returned.

Parameters
namethe hostname to resolve
Returns
an entry containing addresses of address family AF_INET for the host with name name

◆ lwip_gethostbyname_r()

int lwip_gethostbyname_r ( const char *  name,
struct hostent *  ret,
char *  buf,
size_t  buflen,
struct hostent **  result,
int *  h_errnop 
)

Thread-safe variant of lwip_gethostbyname: instead of using a static buffer, this function takes buffer and errno pointers as arguments and uses these for the result.

Parameters
namethe hostname to resolve
retpre-allocated struct where to store the result
bufpre-allocated buffer where to store additional data
buflenthe size of buf
resultpointer to a hostent pointer that is set to ret on success and set to zero on error
h_errnoppointer to an int where to store errors (instead of modifying the global h_errno)
Returns
0 on success, non-zero on error, additional error information is stored in *h_errnop instead of h_errno to be thread-safe

Variable Documentation

◆ h_errno

int h_errno

h_errno is exported in netdb.h for access by applications.