FreeBSD Manual Pages
COAP_ADDRESS(3) libcoap Manual COAP_ADDRESS(3) NAME coap_address, coap_address_t, coap_address_init, coap_address_copy, coap_address_equals, coap_address_get_port, coap_address_set_port, coap_get_available_scheme_hint_bits, coap_addr_info_t, coap_resolve_ad- dress_info, coap_free_address_info, coap_sockaddr_un, coap_ad- dress_set_unix_domain, coap_host_is_unix_domain, coap_is_bcast, coap_is_mcast, coap_is_af_unix - Work with CoAP Socket Address Types SYNOPSIS #include <coap3/coap.h> struct coap_address_t; struct coap_addr_info_t; struct coap_sockaddr_un; void coap_address_init(coap_address_t *addr); void coap_address_copy(coap_address_t *dst, const coap_address_t *src); int coap_address_equals(const coap_address_t *a, const coap_address_t *b); uint16_t coap_address_get_port(const coap_address_t *addr); void coap_address_set_port(coap_address_t *addr, uint16_t port); uint32_t coap_get_available_scheme_hint_bits(int have_pki_psk, int ws_check, coap_proto_t use_unix_proto); coap_addr_info_t *coap_resolve_address_info(const coap_str_const_t *ad- dress, uint16_t port, uint16_t secure_port, uint16_t ws_port, uint16_t ws_secure_port, int ai_hints_flags, int scheme_hint_bits, coap_re- solve_type_t type); void coap_free_address_info(coap_addr_info_t *info_list); int coap_host_is_unix_domain(const coap_str_const_t *host); int coap_address_set_unix_domain(coap_address_t *addr, const uint8_t *host, size_t host_len); int coap_is_bcast(const coap_address_t *addr); int coap_is_mcast(const coap_address_t *addr); int coap_is_af_unix(const coap_address_t *addr); For specific (D)TLS library support, link with -lcoap-3-notls, -lcoap-3-gnutls, -lcoap-3-openssl, -lcoap-3-mbedtls, -lcoap-3-wolfssl or -lcoap-3-tinydtls. Otherwise, link with -lcoap-3 to get the default (D)TLS library support. DESCRIPTION This man page focuses on setting up CoAP endpoint address definitions. Supported Socket Types Libcoap supports 3 different socket types that can be used: AF_INET IPv4 IP addresses and ports AF_INET6 IPv6 IP addresses and ports and can be dual IPv4/IPv6 stacked AF_UNIX Unix Domain using file path names which are all handled by the coap_address_t structure. Structure coap_address_t /* Multi-purpose address abstraction */ typedef struct coap_address_t { socklen_t size; /* size of addr */ union { struct sockaddr sa; struct sockaddr_in sin; struct sockaddr_in6 sin6; struct coap_sockaddr_un cun; /* CoAP shortened special */ } addr; } coap_address_t; which is used in the *coap_addr_info_t* structure as returned by *coap_resolve_address_info()*. Structure coap_addr_info_t /* Resolved addresses information */ typedef struct coap_addr_info_t { struct coap_addr_info_t *next; /* Next entry in the chain */ coap_uri_scheme_t scheme; /* CoAP scheme to use */ coap_proto_t proto; /* CoAP protocol to use */ coap_address_t addr; /* The address to connect / bind to */ } coap_addr_info_t; Structure coap_sockaddr_un #define COAP_UNIX_PATH_MAX (sizeof(struct sockaddr_in6) - sizeof(sa_family_t)) struct coap_sockaddr_un { sa_family_t sun_family; /* AF_UNIX */ char sun_path[COAP_UNIX_PATH_MAX]; /* pathname max 26 with NUL byte */ }; The coap_sockaddr_un structure is modeled on the sockaddr_un structure (see unix(7)) but has a smaller sun_path so that the overall size of coap_ad- dress_t is not changed by its inclusion. COAP_UNIX_MAX_PATH includes the trailing zero terminator of a domain unix file name. Enum coap_resolve_type_t typedef enum coap_resolve_type_t { COAP_RESOLVE_TYPE_LOCAL, /* local side of session */ COAP_RESOLVE_TYPE_REMOTE, /* remote side of session */ } coap_resolve_type_t; Used when determining how to do an address lookup when calling coap_re- solve_address_info(). FUNCTIONS Function: coap_address_init() The coap_address_init() function initializes addr for later use. In partic- ular it sets the size variable and sets all other values to be 0. It is then the responsibility of the application to set the address family in addr.sa.sa_family and then fill in the the appropriate union structure based on the address family before the coap_address_t addr is used. Function: coap_address_copy() The coap_address_copy() function copies the address src into dst. Function: coap_address_equals() The coap_address_equals() function checks whether the addresses a and b are identical. Function: coap_address_get_port() The coap_address_get_port() function gets the the port from addr if addr is AF_INET or AF_INET6. Function: coap_address_set_port() The coap_address_set_port() function sets the the port in addr if addr is AF_INET or AF_INET6. Function: coap_get_available_scheme_hint_bits() The coap_get_available_scheme_hint_bits() function is used for servers to determine what coap schemes are supported in the underlying libcoap li- brary. have_pki_psk can be set to 1 to check for (D)DTLS support, else 0. ws_check can be set to 1 to check for WebSockets support, else 0. use_unix_proto, if not set to COAP_PROTO_NONE, hints at the specific CoAP protocol to use over a Unix socket. The output is suitable for input for the coap_address_resolve_info()'s scheme_hint_bits. Function: coap_resolve_address_info() The coap_resolve_address_info() function resolves the address address into a set of one or more coap_addr_info_t structures. Depending on the scheme as abstracted from scheme_hint_bits, port, secure_port, ws_port (WebSock- ets) or ws_secure_port (WebSockets) is used to update the addr variable of coap_addr_info_t. If port (or secure_port) is 0, then the default port for the scheme is used if type is set to COAP_RESOLVE_TYPE_LOCAL. ai_hints_flags is used for the internally called getaddrinfo(3) function. scheme_hint_bits is a set of one or more COAP_URI_SCHEME_*BIT or'd to- gether. _scheme_hint_bits can also (for servers) be the output from coap_get_available_scheme_hint_bits(). The returned set of coap_addr_info_t structures must be freed off by the caller using coap_free_address_info(). Function: coap_free_address_info() The coap_free_address_info() function frees off all the info_list linked entries. Function: coap_address_set_unix_domain() The coap_address_set_unix_domain() function initializes addr and then popu- lates addr with all the appropriate information for a Unix Domain Socket. The host information with length host_len abstracted from a CoAP URI is copied into addr's sun_path translating any %2F encoding to /. Function: coap_host_is_unix_domain() The coap_host_is_unix_domain() function checks whether host is an an AF_UNIX file name (encoded using %2F to indicate a /). Function: coap_is_mcast() The coap_is_mcast() function checks whether addr is a multicast address. Function: coap_is_bcast() The coap_is_mcast() function checks whether addr is a broadcast address. Function: coap_is_af_unix() The coap_is_mcast() function checks whether addr is of the type AF_UNIX. RETURN VALUES coap_address_equals() returns 1 if the addresses are equal or 0 if not. coap_address_get_port() returns the port in network byte order. coap_get_available_scheme_hint_bits() returns a set of COAP_URI_SCHEME_*_BIT or'd together based on the supported libcoap func- tionality. coap_resolve_address_info() returns a linked list of addresses that can be used for session setup or NULL if there is a failure. coap_address_set_unix_domain() returns 1 on success or 0 on failure. coap_host_is_unix_domain() returns 1 if encoded unix path name or 0 if not. coap_is_mcast() returns 1 if address is multicast or 0 if not. coap_is_bcast() returns 1 if address is broadcast or 0 if not. coap_is_af_unix() returns 1 if address is of type AF_UNIX or 0 if not. EXAMPLES Get client target address from uri #include <coap3/coap.h> static int get_address(coap_uri_t *uri, coap_address_t *dst) { coap_addr_info_t *info_list; info_list = coap_resolve_address_info(&uri->host, uri->port, uri->port, uri->port, uri->port,0, 1 << uri->scheme, COAP_RESOLVE_TYPE_LOCAL); if (info_list == NULL) return 0; memcpy(dst, &info_list->addr, sizeof(*dst)); coap_free_address_info(info_list); return 1; } SEE ALSO coap_endpoint_client(3), coap_endpoint_server(3) and coap_uri(3) FURTHER INFORMATION See "RFC7252: The Constrained Application Protocol (CoAP)" for further information. BUGS Please raise an issue on GitHub at https://github.com/obgm/libcoap/issues to report any bugs. Please raise a Pull Request at https://github.com/obgm/libcoap/pulls for any fixes. AUTHORS The libcoap project <libcoap-developers@lists.sourceforge.net> coap_address 4.3.5 08/02/2026 COAP_ADDRESS(3)
NAME | SYNOPSIS | DESCRIPTION | FUNCTIONS | RETURN VALUES | EXAMPLES | SEE ALSO | FURTHER INFORMATION | BUGS | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=coap_is_af_unix&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
