IPv4/IPv6 Primitives and Helpers
Overview
Miscellaneous defines and helper functions for IP addresses and IP protocols.
API Reference
- group ip_4_6
- IPv4/IPv6 primitives and helpers. - Defines - 
PF_UNSPEC
- Unspecified protocol family. 
 - 
PF_INET
- IP protocol family version 4. 
 - 
PF_INET6
- IP protocol family version 6. 
 - 
PF_PACKET
- Packet family. 
 - 
PF_CAN
- Controller Area Network. 
 - 
PF_NET_MGMT
- Network management info. 
 - 
PF_LOCAL
- Inter-process communication 
 - 
PF_UNIX
- Inter-process communication 
 - 
AF_UNSPEC
- Unspecified address family. 
 - 
AF_INET
- IP protocol family version 4. 
 - 
AF_INET6
- IP protocol family version 6. 
 - 
AF_PACKET
- Packet family. 
 - 
AF_CAN
- Controller Area Network. 
 - 
AF_NET_MGMT
- Network management info. 
 - 
AF_LOCAL
- Inter-process communication 
 - 
AF_UNIX
- Inter-process communication 
 - 
ntohs(x)
- Convert 16-bit value from network to host byte order. - Parameters:
- x – The network byte order value to convert. 
 
- Returns:
- Host byte order value. 
 
 - 
ntohl(x)
- Convert 32-bit value from network to host byte order. - Parameters:
- x – The network byte order value to convert. 
 
- Returns:
- Host byte order value. 
 
 - 
ntohll(x)
- Convert 64-bit value from network to host byte order. - Parameters:
- x – The network byte order value to convert. 
 
- Returns:
- Host byte order value. 
 
 - 
htons(x)
- Convert 16-bit value from host to network byte order. - Parameters:
- x – The host byte order value to convert. 
 
- Returns:
- Network byte order value. 
 
 - 
htonl(x)
- Convert 32-bit value from host to network byte order. - Parameters:
- x – The host byte order value to convert. 
 
- Returns:
- Network byte order value. 
 
 - 
htonll(x)
- Convert 64-bit value from host to network byte order. - Parameters:
- x – The host byte order value to convert. 
 
- Returns:
- Network byte order value. 
 
 - 
NET_IPV6_ADDR_SIZE
- Binary size of the IPv6 address. 
 - 
NET_IPV4_ADDR_SIZE
- Binary size of the IPv4 address. 
 - 
CMSG_FIRSTHDR(msghdr)
- Returns a pointer to the first cmsghdr in the ancillary data buffer associated with the passed msghdr. - It returns NULL if there isn’t enough space for a cmsghdr in the buffer. 
 - 
CMSG_NXTHDR(msghdr, cmsg)
- Returns the next valid cmsghdr after the passed cmsghdr. - It returns NULL when there isn’t enough space left in the buffer. 
 - 
CMSG_DATA(cmsg)
- Returns a pointer to the data portion of a cmsghdr. - The pointer returned cannot be assumed to be suitably aligned for accessing arbitrary payload data types. Applications should not cast it to a pointer type matching the payload, but should instead use memcpy(3) to copy data to or from a suitably declared object. 
 - 
CMSG_SPACE(length)
- Returns the number of bytes an ancillary element with payload of the passed data length occupies. 
 - 
CMSG_LEN(length)
- Returns the value to store in the cmsg_len member of the cmsghdr structure, taking into account any necessary alignment. - It takes the data length as an argument. 
 - 
IN6ADDR_ANY_INIT
- IPv6 address initializer. 
 - 
IN6ADDR_LOOPBACK_INIT
- IPv6 loopback address initializer. 
 - 
INADDR_ANY
- IPv4 any address. 
 - 
INADDR_ANY_INIT
- IPv4 address initializer. 
 - 
INADDR_LOOPBACK_INIT
- IPv6 loopback address initializer. 
 - 
INET_ADDRSTRLEN
- Max length of the IPv4 address as a string. - Defined by POSIX. 
 - 
INET6_ADDRSTRLEN
- Max length of the IPv6 address as a string. - Takes into account possible mapped IPv4 addresses. 
 - 
NET_MAX_PRIORITIES
- How many priority values there are. 
 - 
net_ipaddr_copy(dest, src)
- Copy an IPv4 or IPv6 address. - Parameters:
- dest – Destination IP address. 
- src – Source IP address. 
 
- Returns:
- Destination address. 
 
 - Typedefs - 
typedef unsigned short int sa_family_t
- Socket address family type. 
 - 
typedef size_t socklen_t
- Length of a socket address. 
 - Enums - 
enum net_ip_protocol
- Protocol numbers from IANA/BSD. - Values: - 
enumerator IPPROTO_IP = 0
- IP protocol (pseudo-val for setsockopt() 
 - 
enumerator IPPROTO_ICMP = 1
- ICMP protocol 
 - 
enumerator IPPROTO_IGMP = 2
- IGMP protocol 
 - 
enumerator IPPROTO_IPIP = 4
- IPIP tunnels 
 - 
enumerator IPPROTO_TCP = 6
- TCP protocol 
 - 
enumerator IPPROTO_UDP = 17
- UDP protocol 
 - 
enumerator IPPROTO_IPV6 = 41
- IPv6 protocol 
 - 
enumerator IPPROTO_ICMPV6 = 58
- ICMPv6 protocol. 
 - 
enumerator IPPROTO_RAW = 255
- RAW IP packets 
 
- 
enumerator IPPROTO_IP = 0
 - 
enum net_ip_protocol_secure
- Protocol numbers for TLS protocols. - Values: - 
enumerator IPPROTO_TLS_1_0 = 256
- TLS 1.0 protocol. 
 - 
enumerator IPPROTO_TLS_1_1 = 257
- TLS 1.1 protocol. 
 - 
enumerator IPPROTO_TLS_1_2 = 258
- TLS 1.2 protocol. 
 - 
enumerator IPPROTO_DTLS_1_0 = 272
- DTLS 1.0 protocol. 
 - 
enumerator IPPROTO_DTLS_1_2 = 273
- DTLS 1.2 protocol. 
 
- 
enumerator IPPROTO_TLS_1_0 = 256
 - 
enum net_sock_type
- Socket type. - Values: - 
enumerator SOCK_STREAM = 1
- Stream socket type 
 - 
enumerator SOCK_DGRAM
- Datagram socket type. 
 - 
enumerator SOCK_RAW
- RAW socket type 
 
- 
enumerator SOCK_STREAM = 1
 - 
enum net_ip_mtu
- IP Maximum Transfer Unit. - Values: - 
enumerator NET_IPV6_MTU = 1280
- IPv6 MTU length. - We must be able to receive this size IPv6 packet without fragmentation. 
 - 
enumerator NET_IPV4_MTU = 576
- IPv4 MTU length. - We must be able to receive this size IPv4 packet without fragmentation. 
 
- 
enumerator NET_IPV6_MTU = 1280
 - 
enum net_priority
- Network packet priority settings described in IEEE 802.1Q Annex I.1. - Values: - 
enumerator NET_PRIORITY_BK = 1
- Background (lowest) 
 - 
enumerator NET_PRIORITY_BE = 0
- Best effort (default) 
 - 
enumerator NET_PRIORITY_EE = 2
- Excellent effort 
 - 
enumerator NET_PRIORITY_CA = 3
- Critical applications 
 - 
enumerator NET_PRIORITY_VI = 4
- Video, < 100 ms latency and jitter. 
 - 
enumerator NET_PRIORITY_VO = 5
- Voice, < 10 ms latency and jitter 
 - 
enumerator NET_PRIORITY_IC = 6
- Internetwork control 
 - 
enumerator NET_PRIORITY_NC = 7
- Network control (highest) 
 
- 
enumerator NET_PRIORITY_BK = 1
 - 
enum net_addr_state
- What is the current state of the network address. - Values: - 
enumerator NET_ADDR_ANY_STATE = -1
- Default (invalid) address type. 
 - 
enumerator NET_ADDR_TENTATIVE = 0
- Tentative address 
 - 
enumerator NET_ADDR_PREFERRED
- Preferred address 
 - 
enumerator NET_ADDR_DEPRECATED
- Deprecated address 
 
- 
enumerator NET_ADDR_ANY_STATE = -1
 - 
enum net_addr_type
- How the network address is assigned to network interface. - Values: - 
enumerator NET_ADDR_ANY = 0
- Default value. - This is not a valid value. 
 - 
enumerator NET_ADDR_AUTOCONF
- Auto configured address. 
 - 
enumerator NET_ADDR_DHCP
- Address is from DHCP. 
 - 
enumerator NET_ADDR_MANUAL
- Manually set address. 
 - 
enumerator NET_ADDR_OVERRIDABLE
- Manually set address which is overridable by DHCP. 
 
- 
enumerator NET_ADDR_ANY = 0
 - Functions - 
static inline bool net_ipv6_is_addr_loopback(struct in6_addr *addr)
- Check if the IPv6 address is a loopback address (::1). - Parameters:
- addr – IPv6 address 
 
- Returns:
- True if address is a loopback address, False otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast(const struct in6_addr *addr)
- Check if the IPv6 address is a multicast address. - Parameters:
- addr – IPv6 address 
 
- Returns:
- True if address is multicast address, False otherwise. 
 
 - 
struct net_if_addr *net_if_ipv6_addr_lookup(const struct in6_addr *addr, struct net_if **iface)
 - 
static inline bool net_ipv6_is_my_addr(struct in6_addr *addr)
- Check if IPv6 address is found in one of the network interfaces. - Parameters:
- addr – IPv6 address 
 
- Returns:
- True if address was found, False otherwise. 
 
 - 
struct net_if_mcast_addr *net_if_ipv6_maddr_lookup(const struct in6_addr *addr, struct net_if **iface)
 - 
static inline bool net_ipv6_is_my_maddr(struct in6_addr *maddr)
- Check if IPv6 multicast address is found in one of the network interfaces. - Parameters:
- maddr – Multicast IPv6 address 
 
- Returns:
- True if address was found, False otherwise. 
 
 - 
static inline bool net_ipv6_is_prefix(const uint8_t *addr1, const uint8_t *addr2, uint8_t length)
- Check if two IPv6 addresses are same when compared after prefix mask. - Parameters:
- addr1 – First IPv6 address. 
- addr2 – Second IPv6 address. 
- length – Prefix length (max length is 128). 
 
- Returns:
- True if IPv6 prefixes are the same, False otherwise. 
 
 - 
static inline bool net_ipv4_is_addr_loopback(struct in_addr *addr)
- Check if the IPv4 address is a loopback address (127.0.0.0/8). - Parameters:
- addr – IPv4 address 
 
- Returns:
- True if address is a loopback address, False otherwise. 
 
 - 
static inline bool net_ipv4_is_addr_unspecified(const struct in_addr *addr)
- Check if the IPv4 address is unspecified (all bits zero) - Parameters:
- addr – IPv4 address. 
 
- Returns:
- True if the address is unspecified, false otherwise. 
 
 - 
static inline bool net_ipv4_is_addr_mcast(const struct in_addr *addr)
- Check if the IPv4 address is a multicast address. - Parameters:
- addr – IPv4 address 
 
- Returns:
- True if address is multicast address, False otherwise. 
 
 - 
static inline bool net_ipv4_is_ll_addr(const struct in_addr *addr)
- Check if the given IPv4 address is a link local address. - Parameters:
- addr – A valid pointer on an IPv4 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
static inline bool net_ipv4_is_private_addr(const struct in_addr *addr)
- Check if the given IPv4 address is from a private address range. - See https://en.wikipedia.org/wiki/Reserved_IP_addresses for details. - Parameters:
- addr – A valid pointer on an IPv4 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
static inline void net_ipv4_addr_copy_raw(uint8_t *dest, const uint8_t *src)
- Copy an IPv4 address raw buffer. - Parameters:
- dest – Destination IP address. 
- src – Source IP address. 
 
 
 - 
static inline void net_ipv6_addr_copy_raw(uint8_t *dest, const uint8_t *src)
- Copy an IPv6 address raw buffer. - Parameters:
- dest – Destination IP address. 
- src – Source IP address. 
 
 
 - 
static inline bool net_ipv4_addr_cmp(const struct in_addr *addr1, const struct in_addr *addr2)
- Compare two IPv4 addresses. - Parameters:
- addr1 – Pointer to IPv4 address. 
- addr2 – Pointer to IPv4 address. 
 
- Returns:
- True if the addresses are the same, false otherwise. 
 
 - 
static inline bool net_ipv4_addr_cmp_raw(const uint8_t *addr1, const uint8_t *addr2)
- Compare two raw IPv4 address buffers. - Parameters:
- addr1 – Pointer to IPv4 address buffer. 
- addr2 – Pointer to IPv4 address buffer. 
 
- Returns:
- True if the addresses are the same, false otherwise. 
 
 - 
static inline bool net_ipv6_addr_cmp(const struct in6_addr *addr1, const struct in6_addr *addr2)
- Compare two IPv6 addresses. - Parameters:
- addr1 – Pointer to IPv6 address. 
- addr2 – Pointer to IPv6 address. 
 
- Returns:
- True if the addresses are the same, false otherwise. 
 
 - 
static inline bool net_ipv6_addr_cmp_raw(const uint8_t *addr1, const uint8_t *addr2)
- Compare two raw IPv6 address buffers. - Parameters:
- addr1 – Pointer to IPv6 address buffer. 
- addr2 – Pointer to IPv6 address buffer. 
 
- Returns:
- True if the addresses are the same, false otherwise. 
 
 - 
static inline bool net_ipv6_is_ll_addr(const struct in6_addr *addr)
- Check if the given IPv6 address is a link local address. - Parameters:
- addr – A valid pointer on an IPv6 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
static inline bool net_ipv6_is_sl_addr(const struct in6_addr *addr)
- Check if the given IPv6 address is a site local address. - Parameters:
- addr – A valid pointer on an IPv6 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
static inline bool net_ipv6_is_ula_addr(const struct in6_addr *addr)
- Check if the given IPv6 address is a unique local address. - Parameters:
- addr – A valid pointer on an IPv6 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
static inline bool net_ipv6_is_global_addr(const struct in6_addr *addr)
- Check if the given IPv6 address is a global address. - Parameters:
- addr – A valid pointer on an IPv6 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
static inline bool net_ipv6_is_private_addr(const struct in6_addr *addr)
- Check if the given IPv6 address is from a private/local address range. - See https://en.wikipedia.org/wiki/Reserved_IP_addresses for details. - Parameters:
- addr – A valid pointer on an IPv6 address 
 
- Returns:
- True if it is, false otherwise. 
 
 - 
const struct in6_addr *net_ipv6_unspecified_address(void)
- Return pointer to any (all bits zeros) IPv6 address. - Returns:
- Any IPv6 address. 
 
 - 
const struct in_addr *net_ipv4_unspecified_address(void)
- Return pointer to any (all bits zeros) IPv4 address. - Returns:
- Any IPv4 address. 
 
 - 
const struct in_addr *net_ipv4_broadcast_address(void)
- Return pointer to broadcast (all bits ones) IPv4 address. - Returns:
- Broadcast IPv4 address. 
 
 - 
static inline bool net_ipv4_addr_mask_cmp(struct net_if *iface, const struct in_addr *addr)
- Check if the given address belongs to same subnet that has been configured for the interface. - Parameters:
- iface – A valid pointer on an interface 
- addr – IPv4 address 
 
- Returns:
- True if address is in same subnet, false otherwise. 
 
 - 
static inline bool net_ipv4_is_addr_bcast(struct net_if *iface, const struct in_addr *addr)
- Check if the given IPv4 address is a broadcast address. - Parameters:
- iface – Interface to use. Must be a valid pointer to an interface. 
- addr – IPv4 address 
 
- Returns:
- True if address is a broadcast address, false otherwise. 
 
 - 
struct net_if_addr *net_if_ipv4_addr_lookup(const struct in_addr *addr, struct net_if **iface)
 - 
static inline bool net_ipv4_is_my_addr(const struct in_addr *addr)
- Check if the IPv4 address is assigned to any network interface in the system. - Parameters:
- addr – A valid pointer on an IPv4 address 
 
- Returns:
- True if IPv4 address is found in one of the network interfaces, False otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_unspecified(const struct in6_addr *addr)
- Check if the IPv6 address is unspecified (all bits zero) - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is unspecified, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_solicited_node(const struct in6_addr *addr)
- Check if the IPv6 address is solicited node multicast address FF02:0:0:0:0:1:FFXX:XXXX defined in RFC 3513. - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is solicited node address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_scope(const struct in6_addr *addr, int scope)
- Check if the IPv6 address is a given scope multicast address (FFyx::). - Parameters:
- addr – IPv6 address 
- scope – Scope to check 
 
- Returns:
- True if the address is in given scope multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_same_mcast_scope(const struct in6_addr *addr_1, const struct in6_addr *addr_2)
- Check if the IPv6 addresses have the same multicast scope (FFyx::). - Parameters:
- addr_1 – IPv6 address 1 
- addr_2 – IPv6 address 2 
 
- Returns:
- True if both addresses have same multicast scope, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_global(const struct in6_addr *addr)
- Check if the IPv6 address is a global multicast address (FFxE::/16). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is global multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_iface(const struct in6_addr *addr)
- Check if the IPv6 address is a interface scope multicast address (FFx1::). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is a interface scope multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_link(const struct in6_addr *addr)
- Check if the IPv6 address is a link local scope multicast address (FFx2::). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is a link local scope multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_mesh(const struct in6_addr *addr)
- Check if the IPv6 address is a mesh-local scope multicast address (FFx3::). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is a mesh-local scope multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_site(const struct in6_addr *addr)
- Check if the IPv6 address is a site scope multicast address (FFx5::). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is a site scope multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_org(const struct in6_addr *addr)
- Check if the IPv6 address is an organization scope multicast address (FFx8::). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is an organization scope multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_group(const struct in6_addr *addr, const struct in6_addr *group)
- Check if the IPv6 address belongs to certain multicast group. - Parameters:
- addr – IPv6 address. 
- group – Group id IPv6 address, the values must be in network byte order 
 
- Returns:
- True if the IPv6 multicast address belongs to given multicast group, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_all_nodes_group(const struct in6_addr *addr)
- Check if the IPv6 address belongs to the all nodes multicast group. - Parameters:
- addr – IPv6 address 
 
- Returns:
- True if the IPv6 multicast address belongs to the all nodes multicast group, false otherwise 
 
 - 
static inline bool net_ipv6_is_addr_mcast_iface_all_nodes(const struct in6_addr *addr)
- Check if the IPv6 address is a interface scope all nodes multicast address (FF01::1). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is a interface scope all nodes multicast address, false otherwise. 
 
 - 
static inline bool net_ipv6_is_addr_mcast_link_all_nodes(const struct in6_addr *addr)
- Check if the IPv6 address is a link local scope all nodes multicast address (FF02::1). - Parameters:
- addr – IPv6 address. 
 
- Returns:
- True if the address is a link local scope all nodes multicast address, false otherwise. 
 
 - 
static inline void net_ipv6_addr_create_solicited_node(const struct in6_addr *src, struct in6_addr *dst)
- Create solicited node IPv6 multicast address FF02:0:0:0:0:1:FFXX:XXXX defined in RFC 3513. - Parameters:
- src – IPv6 address. 
- dst – IPv6 address. 
 
 
 - 
static inline void net_ipv6_addr_create(struct in6_addr *addr, uint16_t addr0, uint16_t addr1, uint16_t addr2, uint16_t addr3, uint16_t addr4, uint16_t addr5, uint16_t addr6, uint16_t addr7)
- Construct an IPv6 address from eight 16-bit words. - Parameters:
- addr – IPv6 address 
- addr0 – 16-bit word which is part of the address 
- addr1 – 16-bit word which is part of the address 
- addr2 – 16-bit word which is part of the address 
- addr3 – 16-bit word which is part of the address 
- addr4 – 16-bit word which is part of the address 
- addr5 – 16-bit word which is part of the address 
- addr6 – 16-bit word which is part of the address 
- addr7 – 16-bit word which is part of the address 
 
 
 - 
static inline void net_ipv6_addr_create_ll_allnodes_mcast(struct in6_addr *addr)
- Create link local allnodes multicast IPv6 address. - Parameters:
- addr – IPv6 address 
 
 
 - 
static inline void net_ipv6_addr_create_ll_allrouters_mcast(struct in6_addr *addr)
- Create link local allrouters multicast IPv6 address. - Parameters:
- addr – IPv6 address 
 
 
 - 
static inline void net_ipv6_addr_create_v4_mapped(const struct in_addr *addr4, struct in6_addr *addr6)
- Create IPv4 mapped IPv6 address. - Parameters:
- addr4 – IPv4 address 
- addr6 – IPv6 address to be created 
 
 
 - 
static inline bool net_ipv6_addr_is_v4_mapped(const struct in6_addr *addr)
- Is the IPv6 address an IPv4 mapped one. - The v4 mapped addresses look like ::ffff:a.b.c.d - Parameters:
- addr – IPv6 address 
 
- Returns:
- True if IPv6 address is a IPv4 mapped address, False otherwise. 
 
 - 
static inline void net_ipv6_addr_create_iid(struct in6_addr *addr, struct net_linkaddr *lladdr)
- Create IPv6 address interface identifier. - Parameters:
- addr – IPv6 address 
- lladdr – Link local address 
 
 
 - 
static inline bool net_ipv6_addr_based_on_ll(const struct in6_addr *addr, const struct net_linkaddr *lladdr)
- Check if given address is based on link layer address. - Returns:
- True if it is, False otherwise 
 
 - 
static inline struct sockaddr_in6 *net_sin6(const struct sockaddr *addr)
- Get sockaddr_in6 from sockaddr. - This is a helper so that the code calling this function can be made shorter. - Parameters:
- addr – Socket address 
 
- Returns:
- Pointer to IPv6 socket address 
 
 - 
static inline struct sockaddr_in *net_sin(const struct sockaddr *addr)
- Get sockaddr_in from sockaddr. - This is a helper so that the code calling this function can be made shorter. - Parameters:
- addr – Socket address 
 
- Returns:
- Pointer to IPv4 socket address 
 
 - 
static inline struct sockaddr_in6_ptr *net_sin6_ptr(const struct sockaddr_ptr *addr)
- Get sockaddr_in6_ptr from sockaddr_ptr. - This is a helper so that the code calling this function can be made shorter. - Parameters:
- addr – Socket address 
 
- Returns:
- Pointer to IPv6 socket address 
 
 - 
static inline struct sockaddr_in_ptr *net_sin_ptr(const struct sockaddr_ptr *addr)
- Get sockaddr_in_ptr from sockaddr_ptr. - This is a helper so that the code calling this function can be made shorter. - Parameters:
- addr – Socket address 
 
- Returns:
- Pointer to IPv4 socket address 
 
 - 
static inline struct sockaddr_ll_ptr *net_sll_ptr(const struct sockaddr_ptr *addr)
- Get sockaddr_ll_ptr from sockaddr_ptr. - This is a helper so that the code calling this function can be made shorter. - Parameters:
- addr – Socket address 
 
- Returns:
- Pointer to linklayer socket address 
 
 - 
static inline struct sockaddr_can_ptr *net_can_ptr(const struct sockaddr_ptr *addr)
- Get sockaddr_can_ptr from sockaddr_ptr. - This is a helper so that the code needing this functionality can be made shorter. - Parameters:
- addr – Socket address 
 
- Returns:
- Pointer to CAN socket address 
 
 - 
int net_addr_pton(sa_family_t family, const char *src, void *dst)
- Convert a string to IP address. - Note - This function doesn’t do precise error checking, do not use for untrusted strings. 
 - 
char *net_addr_ntop(sa_family_t family, const void *src, char *dst, size_t size)
- Convert IP address to string form. - Parameters:
- Returns:
- dst pointer if ok, NULL if error 
 
 - 
bool net_ipaddr_parse(const char *str, size_t str_len, struct sockaddr *addr)
- Parse a string that contains either IPv4 or IPv6 address and optional port, and store the information in user supplied sockaddr struct. - Syntax of the IP address string: 192.0.2.1:80 192.0.2.42 - [2001:db8::2] 2001:db::42 Note that the str_len parameter is used to restrict the amount of characters that are checked. If the string does not contain port number, then the port number in sockaddr is not modified. - Parameters:
- str – String that contains the IP address. 
- str_len – Length of the string to be parsed. 
- addr – Pointer to user supplied struct sockaddr. 
 
- Returns:
- True if parsing could be done, false otherwise. 
 
 - 
int net_port_set_default(struct sockaddr *addr, uint16_t default_port)
- Set the default port in the sockaddr structure. - If the port is already set, then do nothing. - Parameters:
- addr – Pointer to user supplied struct sockaddr. 
- default_port – Default port number to set. 
 
- Returns:
- 0 if ok, <0 if error 
 
 - 
static inline int32_t net_tcp_seq_cmp(uint32_t seq1, uint32_t seq2)
- Compare TCP sequence numbers. - This function compares TCP sequence numbers, accounting for wraparound effects. - Parameters:
- seq1 – First sequence number 
- seq2 – Seconds sequence number 
 
- Returns:
- < 0 if seq1 < seq2, 0 if seq1 == seq2, > 0 if seq > seq2 
 
 - 
static inline bool net_tcp_seq_greater(uint32_t seq1, uint32_t seq2)
- Check that one TCP sequence number is greater. - This is convenience function on top of net_tcp_seq_cmp(). - Parameters:
- seq1 – First sequence number 
- seq2 – Seconds sequence number 
 
- Returns:
- True if seq > seq2 
 
 - 
int net_bytes_from_str(uint8_t *buf, int buf_len, const char *src)
- Convert a string of hex values to array of bytes. - The syntax of the string is “ab:02:98:fa:42:01” - Parameters:
- buf – Pointer to memory where the bytes are written. 
- buf_len – Length of the memory area. 
- src – String of bytes. 
 
- Returns:
- 0 if ok, <0 if error 
 
 - 
int net_tx_priority2tc(enum net_priority prio)
- Convert Tx network packet priority to traffic class so we can place the packet into correct Tx queue. - Parameters:
- prio – Network priority 
 
- Returns:
- Tx traffic class that handles that priority network traffic. 
 
 - 
int net_rx_priority2tc(enum net_priority prio)
- Convert Rx network packet priority to traffic class so we can place the packet into correct Rx queue. - Parameters:
- prio – Network priority 
 
- Returns:
- Rx traffic class that handles that priority network traffic. 
 
 - 
static inline enum net_priority net_vlan2priority(uint8_t priority)
- Convert network packet VLAN priority to network packet priority so we can place the packet into correct queue. - Parameters:
- priority – VLAN priority 
 
- Returns:
- Network priority 
 
 - 
static inline uint8_t net_priority2vlan(enum net_priority priority)
- Convert network packet priority to network packet VLAN priority. - Parameters:
- priority – Packet priority 
 
- Returns:
- VLAN priority (PCP) 
 
 - 
const char *net_family2str(sa_family_t family)
- Return network address family value as a string. - This is only usable for debugging. - Parameters:
- family – Network address family code 
 
- Returns:
- Network address family as a string, or NULL if family is unknown. 
 
 - 
static inline int net_ipv6_pe_add_filter(struct in6_addr *addr, bool is_denylist)
- Add IPv6 prefix as a privacy extension filter. - Note that the filters can either allow or deny listing. - Parameters:
- addr – IPv6 prefix 
- is_denylist – Tells if this filter is for allowing or denying listing. 
 
- Returns:
- 0 if ok, <0 if error 
 
 - 
struct in6_addr
- #include <net_ip.h>IPv6 address struct. 
 - 
struct in_addr
- #include <net_ip.h>IPv4 address struct. 
 - 
struct sockaddr_in6
- #include <net_ip.h>Socket address struct for IPv6. 
 - 
struct sockaddr_in
- #include <net_ip.h>Socket address struct for IPv4. 
 - 
struct sockaddr_ll
- #include <net_ip.h>Socket address struct for packet socket. Public Members - 
sa_family_t sll_family
- Always AF_PACKET 
 - 
uint16_t sll_protocol
- Physical-layer protocol 
 - 
int sll_ifindex
- Interface number 
 - 
uint16_t sll_hatype
- ARP hardware type 
 - 
uint8_t sll_pkttype
- Packet type 
 - 
uint8_t sll_halen
- Length of address 
 - 
uint8_t sll_addr[8]
- Physical-layer address, big endian. 
 
- 
sa_family_t sll_family
 - 
struct iovec
- #include <net_ip.h>IO vector array element. 
 - 
struct msghdr
- #include <net_ip.h>Message struct. 
 - 
struct cmsghdr
- #include <net_ip.h>Control message ancillary data. 
 - 
struct sockaddr
- #include <net_ip.h>Generic sockaddr struct. Must be cast to proper type. Public Members - 
sa_family_t sa_family
- Address family. 
 
- 
sa_family_t sa_family
 - 
struct net_tuple
- #include <net_ip.h>IPv6/IPv4 network connection tuple. 
 
- 
PF_UNSPEC