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