14 #ifndef _COAP_ADDRESS_H_
15 #define _COAP_ADDRESS_H_
23 #warning "assertions are disabled"
30 #ifdef HAVE_NETINET_IN_H
31 #include <netinet/in.h>
34 #ifdef HAVE_NETINET_IN_H
35 #include <sys/socket.h>
47 #define coap_address_t __coap_address_t
49 #define _coap_address_equals_impl(A,B) \
50 ((A)->size == (B)->size \
51 && (A)->port == (B)->port \
52 && uip_ipaddr_cmp(&((A)->addr),&((B)->addr)))
54 #define _coap_is_mcast_impl(Address) uip_is_addr_mcast(&((Address)->addr))
58 #ifndef coap_address_t
63 struct sockaddr_storage
st;
64 struct sockaddr_in
sin;
69 #define coap_address_t __coap_address_t
74 if (a->size != b->size || a->addr.sa.sa_family != b->addr.sa.sa_family)
78 switch (a->addr.sa.sa_family) {
81 a->addr.sin.sin_port == b->addr.sin.sin_port &&
82 memcmp(&a->addr.sin.sin_addr, &b->addr.sin.sin_addr,
83 sizeof(
struct in_addr)) == 0;
85 return a->addr.sin6.sin6_port == b->addr.sin6.sin6_port &&
86 memcmp(&a->addr.sin6.sin6_addr, &b->addr.sin6.sin6_addr,
87 sizeof(
struct in6_addr)) == 0;
99 switch (a->addr.sa.sa_family) {
101 return IN_MULTICAST(a->addr.sin.sin_addr.s_addr);
103 return IN6_IS_ADDR_MULTICAST(&a->addr.sin6.sin6_addr);
122 addr->size =
sizeof(addr->addr);
132 assert(a); assert(b);