lwIP  2.1.0
Lightweight IP stack
ip_addr.h File Reference
#include "lwip/opt.h"
#include "lwip/def.h"
#include "lwip/ip4_addr.h"
#include "lwip/ip6_addr.h"

Data Structures

struct  ip_addr
 

Macros

#define IPADDR4_INIT(u32val)   { { { { u32val, 0ul, 0ul, 0ul } IPADDR6_ZONE_INIT } }, IPADDR_TYPE_V4 }
 
#define IPADDR4_INIT_BYTES(a, b, c, d)   IPADDR4_INIT(PP_HTONL(LWIP_MAKEU32(a,b,c,d)))
 
#define IPADDR6_INIT(a, b, c, d)   { { { { a, b, c, d } IPADDR6_ZONE_INIT } }, IPADDR_TYPE_V6 }
 
#define IPADDR6_INIT_HOST(a, b, c, d)   { { { { PP_HTONL(a), PP_HTONL(b), PP_HTONL(c), PP_HTONL(d) } IPADDR6_ZONE_INIT } }, IPADDR_TYPE_V6 }
 
#define IP_IS_ANY_TYPE_VAL(ipaddr)   (IP_GET_TYPE(&ipaddr) == IPADDR_TYPE_ANY)
 
#define IPADDR_ANY_TYPE_INIT   { { { { 0ul, 0ul, 0ul, 0ul } IPADDR6_ZONE_INIT } }, IPADDR_TYPE_ANY }
 
#define IP_IS_V4_VAL(ipaddr)   (IP_GET_TYPE(&ipaddr) == IPADDR_TYPE_V4)
 
#define IP_IS_V6_VAL(ipaddr)   (IP_GET_TYPE(&ipaddr) == IPADDR_TYPE_V6)
 
#define IP_IS_V4(ipaddr)   (((ipaddr) == NULL) || IP_IS_V4_VAL(*(ipaddr)))
 
#define IP_IS_V6(ipaddr)   (((ipaddr) != NULL) && IP_IS_V6_VAL(*(ipaddr)))
 
#define ip_2_ip6(ipaddr)   (&((ipaddr)->u_addr.ip6))
 
#define ip_2_ip4(ipaddr)   (&((ipaddr)->u_addr.ip4))
 
#define IP_ADDR4(ipaddr, a, b, c, d)
 
#define IP_ADDR6(ipaddr, i0, i1, i2, i3)
 
#define IP_ADDR6_HOST(ipaddr, i0, i1, i2, i3)   IP_ADDR6(ipaddr,PP_HTONL(i0),PP_HTONL(i1),PP_HTONL(i2),PP_HTONL(i3))
 
#define ip_addr_copy(dest, src)
 
#define ip_addr_copy_from_ip6(dest, src)
 
#define ip_addr_copy_from_ip6_packed(dest, src)
 
#define ip_addr_copy_from_ip4(dest, src)
 
#define ip_addr_set_ip4_u32(ipaddr, val)
 
#define ip_addr_set_ip4_u32_val(ipaddr, val)
 
#define ip_addr_get_ip4_u32(ipaddr)
 
#define ip_addr_set(dest, src)
 
#define ip_addr_set_ipaddr(dest, src)   ip_addr_set(dest, src)
 
#define ip_addr_set_zero(ipaddr)
 
#define ip_addr_set_zero_ip4(ipaddr)
 
#define ip_addr_set_zero_ip6(ipaddr)
 
#define ip_addr_set_any(is_ipv6, ipaddr)
 
#define ip_addr_set_any_val(is_ipv6, ipaddr)
 
#define ip_addr_set_loopback(is_ipv6, ipaddr)
 
#define ip_addr_set_loopback_val(is_ipv6, ipaddr)
 
#define ip_addr_set_hton(dest, src)
 
#define ip_addr_get_network(target, host, netmask)
 
#define ip_addr_netcmp(addr1, addr2, mask)
 
#define ip_addr_cmp(addr1, addr2)
 
#define ip_addr_cmp_zoneless(addr1, addr2)
 
#define ip_addr_isany(ipaddr)
 
#define ip_addr_isany_val(ipaddr)
 
#define ip_addr_isbroadcast(ipaddr, netif)
 
#define ip_addr_ismulticast(ipaddr)
 
#define ip_addr_isloopback(ipaddr)
 
#define ip_addr_islinklocal(ipaddr)
 
#define IPADDR_STRLEN_MAX   IP6ADDR_STRLEN_MAX
 
#define ip4_2_ipv4_mapped_ipv6(ip6addr, ip4addr)
 
#define unmap_ipv4_mapped_ipv6(ip4addr, ip6addr)   (ip4addr)->addr = (ip6addr)->addr[3];
 
#define IP_ADDR_ANY   IP4_ADDR_ANY
 
#define IP4_ADDR_ANY   (&ip_addr_any)
 
#define IP4_ADDR_ANY4   (ip_2_ip4(&ip_addr_any))
 
#define IP_ADDR_BROADCAST   (&ip_addr_broadcast)
 
#define IP4_ADDR_BROADCAST   (ip_2_ip4(&ip_addr_broadcast))
 
#define IP6_ADDR_ANY   (&ip6_addr_any)
 
#define IP6_ADDR_ANY6   (ip_2_ip6(&ip6_addr_any))
 
#define IP_ANY_TYPE   (&ip_addr_any_type)
 

Typedefs

typedef struct ip_addr ip_addr_t
 

Enumerations

enum  lwip_ip_addr_type { IPADDR_TYPE_V4 = 0U, IPADDR_TYPE_V6 = 6U, IPADDR_TYPE_ANY = 46U }
 

Functions

char * ipaddr_ntoa (const ip_addr_t *addr)
 
char * ipaddr_ntoa_r (const ip_addr_t *addr, char *buf, int buflen)
 
int ipaddr_aton (const char *cp, ip_addr_t *addr)
 

Detailed Description

IP address API (common IPv4 and IPv6)

Macro Definition Documentation

◆ ip_addr_set_zero_ip4

#define ip_addr_set_zero_ip4 (   ipaddr)
Value:
do{ \
ip6_addr_set_zero(ip_2_ip6(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V4); }while(0)
Definition: ip_addr.h:56
#define ip_2_ip6(ipaddr)
Definition: ip_addr.h:116