| 
    Zephyr Project API
    3.4.0
    
   A Scalable Open Source RTOS 
   | 
 
IPv6 and IPv4 definitions. More...
#include <string.h>#include <zephyr/types.h>#include <stdbool.h>#include <zephyr/sys/util.h>#include <zephyr/sys/byteorder.h>#include <zephyr/toolchain.h>#include <zephyr/net/net_linkaddr.h>#include <syscalls/net_ip.h>Go to the source code of this file.
Data Structures | |
| struct | in6_addr | 
| struct | in_addr | 
| struct | sockaddr_in6 | 
| struct | sockaddr_in6_ptr | 
| struct | sockaddr_in | 
| struct | sockaddr_in_ptr | 
| struct | sockaddr_ll | 
| struct | sockaddr_ll_ptr | 
| struct | sockaddr_can_ptr | 
| struct | iovec | 
| struct | msghdr | 
| struct | cmsghdr | 
| struct | sockaddr | 
| struct | net_tuple | 
Macros | |
| #define | PF_UNSPEC 0 | 
| #define | PF_INET 1 | 
| #define | PF_INET6 2 | 
| #define | PF_PACKET 3 | 
| #define | PF_CAN 4 | 
| #define | PF_NET_MGMT 5 | 
| #define | PF_LOCAL 6 | 
| #define | PF_UNIX PF_LOCAL | 
| #define | AF_UNSPEC PF_UNSPEC | 
| #define | AF_INET PF_INET | 
| #define | AF_INET6 PF_INET6 | 
| #define | AF_PACKET PF_PACKET | 
| #define | AF_CAN PF_CAN | 
| #define | AF_NET_MGMT PF_NET_MGMT | 
| #define | AF_LOCAL PF_LOCAL | 
| #define | AF_UNIX PF_UNIX | 
| #define | ntohs(x) sys_be16_to_cpu(x) | 
| Convert 16-bit value from network to host byte order.  More... | |
| #define | ntohl(x) sys_be32_to_cpu(x) | 
| Convert 32-bit value from network to host byte order.  More... | |
| #define | ntohll(x) sys_be64_to_cpu(x) | 
| Convert 64-bit value from network to host byte order.  More... | |
| #define | htons(x) sys_cpu_to_be16(x) | 
| Convert 16-bit value from host to network byte order.  More... | |
| #define | htonl(x) sys_cpu_to_be32(x) | 
| Convert 32-bit value from host to network byte order.  More... | |
| #define | htonll(x) sys_cpu_to_be64(x) | 
| Convert 64-bit value from host to network byte order.  More... | |
| #define | NET_IPV6_ADDR_SIZE 16 | 
| #define | NET_IPV4_ADDR_SIZE 4 | 
| #define | ALIGN_H(x) ROUND_UP(x, __alignof__(struct cmsghdr)) | 
| #define | ALIGN_D(x) ROUND_UP(x, __alignof__(z_max_align_t)) | 
| #define | CMSG_FIRSTHDR(msghdr) | 
| #define | CMSG_NXTHDR(msghdr, cmsg) | 
| #define | CMSG_DATA(cmsg) ((uint8_t *)(cmsg) + ALIGN_D(sizeof(struct cmsghdr))) | 
| #define | CMSG_SPACE(length) (ALIGN_D(sizeof(struct cmsghdr)) + ALIGN_H(length)) | 
| #define | CMSG_LEN(length) (ALIGN_D(sizeof(struct cmsghdr)) + length) | 
| #define | INET_ADDRSTRLEN 16 | 
| #define | INET6_ADDRSTRLEN 46 | 
| #define | NET_MAX_PRIORITIES 8 /* How many priority values there are */ | 
| #define | net_ipaddr_copy(dest, src) UNALIGNED_PUT(UNALIGNED_GET(src), dest) | 
| Copy an IPv4 or IPv6 address.  More... | |
Typedefs | |
| typedef unsigned short int | sa_family_t | 
| typedef size_t | socklen_t | 
Enumerations | |
| enum | net_ip_protocol {  IPPROTO_IP = 0 , IPPROTO_ICMP = 1 , IPPROTO_IGMP = 2 , IPPROTO_IPIP = 4 , IPPROTO_TCP = 6 , IPPROTO_UDP = 17 , IPPROTO_IPV6 = 41 , IPPROTO_ICMPV6 = 58 , IPPROTO_RAW = 255 }  | 
| enum | net_ip_protocol_secure {  IPPROTO_TLS_1_0 = 256 , IPPROTO_TLS_1_1 = 257 , IPPROTO_TLS_1_2 = 258 , IPPROTO_DTLS_1_0 = 272 , IPPROTO_DTLS_1_2 = 273 }  | 
| enum | net_sock_type { SOCK_STREAM = 1 , SOCK_DGRAM , SOCK_RAW } | 
| enum | net_ip_mtu { NET_IPV6_MTU = 1280 , NET_IPV4_MTU = 576 } | 
| enum | net_priority {  NET_PRIORITY_BK = 1 , NET_PRIORITY_BE = 0 , NET_PRIORITY_EE = 2 , NET_PRIORITY_CA = 3 , NET_PRIORITY_VI = 4 , NET_PRIORITY_VO = 5 , NET_PRIORITY_IC = 6 , NET_PRIORITY_NC = 7 }  | 
| enum | net_addr_state { NET_ADDR_ANY_STATE = -1 , NET_ADDR_TENTATIVE = 0 , NET_ADDR_PREFERRED , NET_ADDR_DEPRECATED } | 
| enum | net_addr_type {  NET_ADDR_ANY = 0 , NET_ADDR_AUTOCONF , NET_ADDR_DHCP , NET_ADDR_MANUAL , NET_ADDR_OVERRIDABLE }  | 
Functions | |
| static bool | net_ipv6_is_addr_loopback (struct in6_addr *addr) | 
| Check if the IPv6 address is a loopback address (::1).  More... | |
| static bool | net_ipv6_is_addr_mcast (const struct in6_addr *addr) | 
| Check if the IPv6 address is a multicast address.  More... | |
| struct net_if_addr * | net_if_ipv6_addr_lookup (const struct in6_addr *addr, struct net_if **iface) | 
| static bool | net_ipv6_is_my_addr (struct in6_addr *addr) | 
| Check if IPv6 address is found in one of the network interfaces.  More... | |
| struct net_if_mcast_addr * | net_if_ipv6_maddr_lookup (const struct in6_addr *addr, struct net_if **iface) | 
| static bool | net_ipv6_is_my_maddr (struct in6_addr *maddr) | 
| Check if IPv6 multicast address is found in one of the network interfaces.  More... | |
| static 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.  More... | |
| static bool | net_ipv4_is_addr_loopback (struct in_addr *addr) | 
| Check if the IPv4 address is a loopback address (127.0.0.0/8).  More... | |
| static bool | net_ipv4_is_addr_unspecified (const struct in_addr *addr) | 
| Check if the IPv4 address is unspecified (all bits zero)  More... | |
| static bool | net_ipv4_is_addr_mcast (const struct in_addr *addr) | 
| Check if the IPv4 address is a multicast address.  More... | |
| static bool | net_ipv4_is_ll_addr (const struct in_addr *addr) | 
| Check if the given IPv4 address is a link local address.  More... | |
| static void | net_ipv4_addr_copy_raw (uint8_t *dest, const uint8_t *src) | 
| Copy an IPv4 address raw buffer.  More... | |
| static void | net_ipv6_addr_copy_raw (uint8_t *dest, const uint8_t *src) | 
| Copy an IPv6 address raw buffer.  More... | |
| static bool | net_ipv4_addr_cmp (const struct in_addr *addr1, const struct in_addr *addr2) | 
| Compare two IPv4 addresses.  More... | |
| static bool | net_ipv4_addr_cmp_raw (const uint8_t *addr1, const uint8_t *addr2) | 
| Compare two raw IPv4 address buffers.  More... | |
| static bool | net_ipv6_addr_cmp (const struct in6_addr *addr1, const struct in6_addr *addr2) | 
| Compare two IPv6 addresses.  More... | |
| static bool | net_ipv6_addr_cmp_raw (const uint8_t *addr1, const uint8_t *addr2) | 
| Compare two raw IPv6 address buffers.  More... | |
| static bool | net_ipv6_is_ll_addr (const struct in6_addr *addr) | 
| Check if the given IPv6 address is a link local address.  More... | |
| static bool | net_ipv6_is_ula_addr (const struct in6_addr *addr) | 
| Check if the given IPv6 address is a unique local address.  More... | |
| const struct in6_addr * | net_ipv6_unspecified_address (void) | 
| Return pointer to any (all bits zeros) IPv6 address.  More... | |
| const struct in_addr * | net_ipv4_unspecified_address (void) | 
| Return pointer to any (all bits zeros) IPv4 address.  More... | |
| const struct in_addr * | net_ipv4_broadcast_address (void) | 
| Return pointer to broadcast (all bits ones) IPv4 address.  More... | |
| bool | net_if_ipv4_addr_mask_cmp (struct net_if *iface, const struct in_addr *addr) | 
| static 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.  More... | |
| bool | net_if_ipv4_is_addr_bcast (struct net_if *iface, const struct in_addr *addr) | 
| static 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.  More... | |
| struct net_if_addr * | net_if_ipv4_addr_lookup (const struct in_addr *addr, struct net_if **iface) | 
| static 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.  More... | |
| static bool | net_ipv6_is_addr_unspecified (const struct in6_addr *addr) | 
| Check if the IPv6 address is unspecified (all bits zero)  More... | |
| static 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.  More... | |
| static 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::).  More... | |
| static 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::).  More... | |
| static bool | net_ipv6_is_addr_mcast_global (const struct in6_addr *addr) | 
| Check if the IPv6 address is a global multicast address (FFxE::/16).  More... | |
| static bool | net_ipv6_is_addr_mcast_iface (const struct in6_addr *addr) | 
| Check if the IPv6 address is a interface scope multicast address (FFx1::).  More... | |
| static 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::).  More... | |
| static 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::).  More... | |
| static bool | net_ipv6_is_addr_mcast_site (const struct in6_addr *addr) | 
| Check if the IPv6 address is a site scope multicast address (FFx5::).  More... | |
| static bool | net_ipv6_is_addr_mcast_org (const struct in6_addr *addr) | 
| Check if the IPv6 address is an organization scope multicast address (FFx8::).  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static 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).  More... | |
| static 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).  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static void | net_ipv6_addr_create_ll_allnodes_mcast (struct in6_addr *addr) | 
| Create link local allnodes multicast IPv6 address.  More... | |
| static void | net_ipv6_addr_create_ll_allrouters_mcast (struct in6_addr *addr) | 
| Create link local allrouters multicast IPv6 address.  More... | |
| static void | net_ipv6_addr_create_iid (struct in6_addr *addr, struct net_linkaddr *lladdr) | 
| Create IPv6 address interface identifier.  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static 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.  More... | |
| static 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.  More... | |
| int | net_addr_pton (sa_family_t family, const char *src, void *dst) | 
| Convert a string to IP address.  More... | |
| char * | net_addr_ntop (sa_family_t family, const void *src, char *dst, size_t size) | 
| Convert IP address to string form.  More... | |
| 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.  More... | |
| static int32_t | net_tcp_seq_cmp (uint32_t seq1, uint32_t seq2) | 
| Compare TCP sequence numbers.  More... | |
| static bool | net_tcp_seq_greater (uint32_t seq1, uint32_t seq2) | 
| Check that one TCP sequence number is greater.  More... | |
| int | net_bytes_from_str (uint8_t *buf, int buf_len, const char *src) | 
| Convert a string of hex values to array of bytes.  More... | |
| 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.  More... | |
| 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.  More... | |
| static 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.  More... | |
| static uint8_t | net_priority2vlan (enum net_priority priority) | 
| Convert network packet priority to network packet VLAN priority.  More... | |
| const char * | net_family2str (sa_family_t family) | 
| Return network address family value as a string. This is only usable for debugging.  More... | |
IPv6 and IPv4 definitions.
Generic IPv6 and IPv4 address definitions.