From b8e3415264914ad3db079fb0060111d36ad9df20 Mon Sep 17 00:00:00 2001 From: Tomasz Bursztyka Date: Mon, 20 Jun 2016 17:22:07 +0200 Subject: [PATCH] net: Let's use inline function for type checking for net_nbuf Using macros does not let the compiler verifying about the type we are providing, which usually give an error easier to understand. Also, this will let the compiler deciding how to actually optimize (inline or not) the code. Change-Id: Iba49590b620ef0a1bd0ed5621453524fcfea747c Signed-off-by: Tomasz Bursztyka --- drivers/slip/slip.c | 2 +- include/net/yaip/nbuf.h | 240 +++++++++++++++++++++++++++++-------- net/yaip/icmpv4.c | 8 +- net/yaip/icmpv6.c | 10 +- net/yaip/ipv6.c | 39 +++--- net/yaip/l2/arp.c | 15 +-- net/yaip/l2/ethernet.c | 6 +- net/yaip/nbuf.c | 8 +- net/yaip/net_core.c | 22 ++-- net/yaip/net_private.h | 2 +- tests/net/arp/src/main.c | 24 ++-- tests/net/nbuf/src/main.c | 8 +- tests/net/udp/src/main.c | 16 +-- tests/net/utils/src/main.c | 40 +++---- 14 files changed, 291 insertions(+), 149 deletions(-) diff --git a/drivers/slip/slip.c b/drivers/slip/slip.c index a2b0e0049cf..7f2d8f25b18 100644 --- a/drivers/slip/slip.c +++ b/drivers/slip/slip.c @@ -273,7 +273,7 @@ static inline int slip_input_byte(struct slip_context *slip, } net_buf_frag_add(slip->rx, slip->last); - net_nbuf_ll_reserve(slip->rx) = slip->ll_reserve; + net_nbuf_set_ll_reserve(slip->rx, slip->ll_reserve); slip->ptr = net_nbuf_ip_data(slip->rx) - slip->ll_reserve; } diff --git a/include/net/yaip/nbuf.h b/include/net/yaip/nbuf.h index 73460efaeb4..c5cfc85c88e 100644 --- a/include/net/yaip/nbuf.h +++ b/include/net/yaip/nbuf.h @@ -33,6 +33,9 @@ #include #include +#include +#include +#include #ifdef __cplusplus extern "C" { @@ -82,35 +85,187 @@ struct net_nbuf { /** @cond ignore */ -/* Value returned by nbuf_len() contains length of all the protocol headers, - * like IP and UDP, and the length of the user payload. - */ -#define net_nbuf_len(buf) ((buf)->len) -/* This returns pointer to start of the protocol IP header */ -#define net_nbuf_ip_data(buf) ((buf)->frags->data) -#define net_nbuf_udp_data(buf) (&(buf)->frags->data[net_nbuf_ip_hdr_len(buf)]) -#define net_nbuf_tcp_data(buf) (&(buf)->frags->data[net_nbuf_ip_hdr_len(buf)]) -#define net_nbuf_icmp_data(buf) (&(buf)->frags->data[net_nbuf_ip_hdr_len(buf) +\ - net_nbuf_ext_len(buf)]) +/* The interface real ll address */ +static inline struct net_linkaddr *net_nbuf_ll_if(struct net_buf *buf) +{ + return net_if_get_link_addr( + ((struct net_nbuf *)net_buf_user_data(buf))->iface); +} -/* These two return only the application data length without - * IP and other protocol header length. - */ -#define net_nbuf_appdata(buf) (((struct net_nbuf *) \ - net_buf_user_data((buf)))->appdata) -#define net_nbuf_appdatalen(buf) (((struct net_nbuf *) \ - net_buf_user_data((buf)))->appdatalen) -#define net_nbuf_reserve(buf) (((struct net_nbuf *) \ - net_buf_user_data((buf)))->reserve) -#define net_nbuf_ll_reserve(buf) (((struct net_nbuf *) \ - net_buf_user_data((buf)))->ll_reserve) -#define net_nbuf_ll(buf) (net_nbuf_ip_data(buf) - net_nbuf_ll_reserve(buf)) +static inline struct net_context *net_nbuf_context(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->context; +} -#define net_nbuf_ll_src(buf) \ - (&(((struct net_nbuf *)net_buf_user_data((buf)))->lladdr_src)) -#define net_nbuf_ll_dst(buf) \ - (&(((struct net_nbuf *)net_buf_user_data((buf)))->lladdr_dst)) +static inline void net_nbuf_set_context(struct net_buf *buf, + struct net_context *ctx) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->context = ctx; +} + +static inline struct net_if *net_nbuf_iface(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->iface; +} + +static inline void net_nbuf_set_iface(struct net_buf *buf, struct net_if *iface) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->iface = iface; +} + +static inline enum net_nbuf_type net_nbuf_type(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->type; +} + +static inline void net_nbuf_set_type(struct net_buf *buf, uint8_t type) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->type = type; +} + +static inline uint8_t net_nbuf_family(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->family; +} + +static inline void net_nbuf_set_family(struct net_buf *buf, uint8_t family) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->family = family; +} + +static inline uint8_t net_nbuf_ip_hdr_len(struct net_buf *buf) +{ + return ((struct net_nbuf *) net_buf_user_data(buf))->ip_hdr_len; +} + +static inline void net_nbuf_set_ip_hdr_len(struct net_buf *buf, uint8_t len) +{ + ((struct net_nbuf *) net_buf_user_data(buf))->ip_hdr_len = len; +} + +static inline uint8_t net_nbuf_ext_len(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->ext_len; +} + +static inline void net_nbuf_set_ext_len(struct net_buf *buf, uint8_t len) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->ext_len = len; +} + +static inline uint8_t net_nbuf_ext_bitmap(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->ext_bitmap; +} + +static inline void net_nbuf_set_ext_bitmap(struct net_buf *buf, uint8_t bm) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->ext_bitmap = bm; +} + +static inline uint8_t *net_nbuf_next_hdr(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->next_hdr; +} + +static inline void net_nbuf_set_next_hdr(struct net_buf *buf, uint8_t *hdr) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->next_hdr = hdr; +} + +#if defined(CONFIG_NET_IPV6) +static inline uint8_t net_nbuf_ext_opt_len(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->ext_opt_len; +} + +static inline void net_nbuf_set_ext_opt_len(struct net_buf *buf, uint8_t len) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->ext_opt_len = len; +} +#endif + +static inline uint16_t net_nbuf_get_len(struct net_buf *buf) +{ + return buf->len; +} + +static inline void net_nbuf_set_len(struct net_buf *buf, uint16_t len) +{ + buf->len = len; +} + +static inline uint8_t *net_nbuf_ip_data(struct net_buf *buf) +{ + return buf->frags->data; +} + +static inline uint8_t *net_nbuf_udp_data(struct net_buf *buf) +{ + return &buf->frags->data[net_nbuf_ip_hdr_len(buf)]; +} + +static inline uint8_t *net_nbuf_tcp_data(struct net_buf *buf) +{ + return &buf->frags->data[net_nbuf_ip_hdr_len(buf)]; +} + +static inline uint8_t *net_nbuf_icmp_data(struct net_buf *buf) +{ + return &buf->frags->data[net_nbuf_ip_hdr_len(buf) + + net_nbuf_ext_len(buf)]; +} + +static inline uint8_t *net_nbuf_appdata(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->appdata; +} + +static inline void net_nbuf_set_appdata(struct net_buf *buf, uint8_t *data) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->appdata = data; +} + +static inline uint16_t net_nbuf_appdatalen(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->appdatalen; +} + +static inline void net_nbuf_set_appdatalen(struct net_buf *buf, uint16_t len) +{ + ((struct net_nbuf *)net_buf_user_data(buf))->appdatalen = len; +} + +static inline uint16_t net_nbuf_reserve(struct net_buf *buf) +{ + return ((struct net_nbuf *)net_buf_user_data(buf))->reserve; +} + +static inline uint8_t net_nbuf_ll_reserve(struct net_buf *buf) +{ + return ((struct net_nbuf *) net_buf_user_data(buf))->ll_reserve; +} + +static inline void net_nbuf_set_ll_reserve(struct net_buf *buf, uint8_t len) +{ + ((struct net_nbuf *) net_buf_user_data(buf))->ll_reserve = len; +} + +static inline uint8_t *net_nbuf_ll(struct net_buf *buf) +{ + return net_nbuf_ip_data(buf) - net_nbuf_ll_reserve(buf); +} + +static inline struct net_linkaddr *net_nbuf_ll_src(struct net_buf *buf) +{ + return &((struct net_nbuf *)net_buf_user_data(buf))->lladdr_src; +} + +static inline struct net_linkaddr *net_nbuf_ll_dst(struct net_buf *buf) +{ + return &((struct net_nbuf *)net_buf_user_data(buf))->lladdr_dst; +} static inline void net_nbuf_ll_clear(struct net_buf *buf) { @@ -127,37 +282,18 @@ static inline void net_nbuf_ll_swap(struct net_buf *buf) net_nbuf_ll_dst(buf)->addr = addr; } -/* The interface real ll address */ -#define net_nbuf_ll_if(buf) \ - net_if_get_link_addr(((struct net_nbuf *)net_buf_user_data(buf))->iface) - -#define net_nbuf_context(buf) \ - (((struct net_nbuf *)net_buf_user_data((buf)))->context) -#define net_nbuf_iface(buf) \ - (((struct net_nbuf *)net_buf_user_data((buf)))->iface) -#define net_nbuf_type(ptr) (((struct net_nbuf *)net_buf_user_data((ptr)))->type) -#define net_nbuf_family(ptr) (((struct net_nbuf *) \ - net_buf_user_data((ptr)))->family) -#define net_nbuf_ip_hdr_len(buf) (((struct net_nbuf *) \ - net_buf_user_data((buf)))->ip_hdr_len) -#define net_nbuf_ext_len(buf) \ - (((struct net_nbuf *)net_buf_user_data((buf)))->ext_len) -#define net_nbuf_ext_bitmap(buf) \ - (((struct net_nbuf *)net_buf_user_data((buf)))->ext_bitmap) -#define net_nbuf_next_hdr(buf) \ - (((struct net_nbuf *)net_buf_user_data((buf)))->next_hdr) -#define net_nbuf_ext_opt_len(buf) \ - (((struct net_nbuf *)net_buf_user_data((buf)))->ext_opt_len) - #define NET_IPV6_BUF(buf) ((struct net_ipv6_hdr *)net_nbuf_ip_data(buf)) #define NET_IPV4_BUF(buf) ((struct net_ipv4_hdr *)net_nbuf_ip_data(buf)) #define NET_ICMP_BUF(buf) ((struct net_icmp_hdr *)net_nbuf_icmp_data(buf)) #define NET_UDP_BUF(buf) ((struct net_udp_hdr *)(net_nbuf_udp_data(buf))) -#define net_nbuf_set_src_ipv6_addr(buf) \ - net_if_select_src(net_context_get_if(nbuf_context(buf)), \ - &NET_IPV6_BUF(buf)->src, \ - &NET_IPV6_BUF(buf)->dst) +static inline void net_nbuf_set_src_ipv6_addr(struct net_buf *buf) +{ + net_if_ipv6_select_src_addr(net_context_get_iface( + net_nbuf_context(buf)), + &NET_IPV6_BUF(buf)->src); +} + /* @endcond */ #if defined(CONFIG_NETWORK_IP_STACK_DEBUG_NET_BUF) diff --git a/net/yaip/icmpv4.c b/net/yaip/icmpv4.c index 47d10efc351..818f5a836b2 100644 --- a/net/yaip/icmpv4.c +++ b/net/yaip/icmpv4.c @@ -92,7 +92,7 @@ static inline void setup_ipv4_header(struct net_buf *buf, uint8_t extra_len, NET_IPV4_BUF(buf)->offset[0] = NET_IPV4_BUF(buf)->offset[1] = 0; NET_IPV4_BUF(buf)->id[0] = NET_IPV4_BUF(buf)->id[1] = 0; - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv4_hdr); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv4_hdr)); NET_ICMP_BUF(buf)->type = icmp_type; NET_ICMP_BUF(buf)->code = icmp_code; @@ -165,9 +165,9 @@ int net_icmpv4_send_error(struct net_buf *orig, uint8_t type, uint8_t code) } net_buf_frag_add(buf, frag); - net_nbuf_family(buf) = AF_INET; - net_nbuf_iface(buf) = iface; - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); + net_nbuf_set_family(buf, AF_INET); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); setup_ipv4_header(buf, extra_len, net_if_ipv4_get_ttl(iface), type, code); diff --git a/net/yaip/icmpv6.c b/net/yaip/icmpv6.c index aa1f7ca73aa..6fbe2c62823 100644 --- a/net/yaip/icmpv6.c +++ b/net/yaip/icmpv6.c @@ -110,7 +110,7 @@ static inline void setup_ipv6_header(struct net_buf *buf, uint8_t extra_len, NET_IPV6_BUF(buf)->nexthdr = IPPROTO_ICMPV6; NET_IPV6_BUF(buf)->hop_limit = hop_limit; - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); NET_ICMP_BUF(buf)->type = icmp_type; NET_ICMP_BUF(buf)->code = icmp_code; @@ -175,10 +175,10 @@ int net_icmpv6_send_error(struct net_buf *orig, uint8_t type, uint8_t code) } net_buf_frag_add(buf, frag); - net_nbuf_family(buf) = AF_INET6; - net_nbuf_iface(buf) = iface; - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); + net_nbuf_set_ext_len(buf, 0); setup_ipv6_header(buf, extra_len, net_if_ipv6_get_hop_limit(iface), type, code); diff --git a/net/yaip/ipv6.c b/net/yaip/ipv6.c index b763664d6a8..afe932b4ab8 100644 --- a/net/yaip/ipv6.c +++ b/net/yaip/ipv6.c @@ -364,7 +364,7 @@ static enum net_verdict handle_ns_input(struct net_buf *buf) goto drop; } - net_nbuf_ext_opt_len(buf) = sizeof(struct net_icmpv6_ns_hdr); + net_nbuf_set_ext_opt_len(buf, sizeof(struct net_icmpv6_ns_hdr)); hdr = NET_ICMPV6_ND_OPT_HDR_BUF(buf); /* The parsing gets tricky if the ND struct is split @@ -398,7 +398,8 @@ static enum net_verdict handle_ns_input(struct net_buf *buf) break; } - net_nbuf_ext_opt_len(buf) += hdr->len << 3; + net_nbuf_set_ext_opt_len(buf, net_nbuf_ext_opt_len(buf) + + (hdr->len << 3)); } ifaddr = net_if_ipv6_addr_lookup_by_iface(net_nbuf_iface(buf), @@ -479,7 +480,7 @@ send_na: llao_len = get_llao_len(net_nbuf_iface(buf)); net_nbuf_ll_swap(buf); - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ext_len(buf, 0); setup_headers(buf, sizeof(struct net_icmpv6_na_hdr) + llao_len, NET_ICMPV6_NA); @@ -497,9 +498,9 @@ send_na: NET_ICMP_BUF(buf)->chksum = 0; NET_ICMP_BUF(buf)->chksum = ~net_calc_chksum_icmpv6(buf); - net_nbuf_len(buf->frags) = NET_IPV6ICMPH_LEN + - sizeof(struct net_icmpv6_na_hdr) + - llao_len; + net_nbuf_set_len(buf->frags, NET_IPV6ICMPH_LEN + + sizeof(struct net_icmpv6_na_hdr) + + llao_len); if (net_send_data(buf) < 0) { goto drop; @@ -664,7 +665,7 @@ static enum net_verdict handle_na_input(struct net_buf *buf) goto drop; } - net_nbuf_ext_opt_len(buf) = sizeof(struct net_icmpv6_na_hdr); + net_nbuf_set_ext_opt_len(buf, sizeof(struct net_icmpv6_na_hdr)); hdr = NET_ICMPV6_ND_OPT_HDR_BUF(buf); /* The parsing gets tricky if the ND struct is split @@ -693,7 +694,8 @@ static enum net_verdict handle_na_input(struct net_buf *buf) break; } - net_nbuf_ext_opt_len(buf) += hdr->len << 3; + net_nbuf_set_ext_opt_len(buf, net_nbuf_ext_opt_len(buf) + + (hdr->len << 3)); } ifaddr = net_if_ipv6_addr_lookup_by_iface(net_nbuf_iface(buf), @@ -749,10 +751,10 @@ int net_ipv6_send_ns(struct net_if *iface, net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); - net_nbuf_iface(buf) = iface; - net_nbuf_family(buf) = AF_INET6; - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); net_nbuf_ll_clear(buf); @@ -867,10 +869,10 @@ int net_ipv6_send_rs(struct net_if *iface) net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); - net_nbuf_iface(buf) = iface; - net_nbuf_family(buf) = AF_INET6; - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); net_nbuf_ll_clear(buf); @@ -1188,7 +1190,7 @@ static enum net_verdict handle_ra_input(struct net_buf *buf) ntohl(NET_ICMPV6_RA_BUF(buf)->retrans_timer)); } - net_nbuf_ext_opt_len(buf) = sizeof(struct net_icmpv6_ra_hdr); + net_nbuf_set_ext_opt_len(buf, sizeof(struct net_icmpv6_ra_hdr)); hdr = NET_ICMPV6_ND_OPT_HDR_BUF(buf); /* The parsing gets tricky if the ND struct is split @@ -1236,7 +1238,8 @@ static enum net_verdict handle_ra_input(struct net_buf *buf) break; } - net_nbuf_ext_opt_len(buf) += hdr->len << 3; + net_nbuf_set_ext_opt_len(buf, net_nbuf_ext_opt_len(buf) + + (hdr->len << 3)); } router = net_if_ipv6_router_lookup(net_nbuf_iface(buf), diff --git a/net/yaip/l2/arp.c b/net/yaip/l2/arp.c index b65ffd821d6..30de776ee62 100644 --- a/net/yaip/l2/arp.c +++ b/net/yaip/l2/arp.c @@ -127,9 +127,9 @@ static inline struct net_buf *prepare_arp(struct net_if *iface, } net_buf_frag_add(buf, frag); - net_nbuf_iface(buf) = iface; - net_nbuf_family(buf) = AF_INET; - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_family(buf, AF_INET); + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); hdr = NET_ARP_BUF(buf); eth = NET_ETH_BUF(buf); @@ -390,9 +390,9 @@ static inline struct net_buf *prepare_arp_reply(struct net_if *iface, } net_buf_frag_add(buf, frag); - net_nbuf_iface(buf) = iface; - net_nbuf_family(buf) = AF_INET; - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_family(buf, AF_INET); + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); hdr = NET_ARP_BUF(buf); eth = NET_ETH_BUF(buf); @@ -438,7 +438,8 @@ enum net_verdict net_arp_input(struct net_buf *buf) net_nbuf_ll_reserve(buf))) { NET_DBG("Invalid ARP header (len %d, min %d bytes)", net_buf_frags_len(buf), - sizeof(struct net_arp_hdr) - net_nbuf_ll_reserve(buf)); + sizeof(struct net_arp_hdr) - + net_nbuf_ll_reserve(buf)); return NET_DROP; } diff --git a/net/yaip/l2/ethernet.c b/net/yaip/l2/ethernet.c index f1258eb2614..51087b4613a 100644 --- a/net/yaip/l2/ethernet.c +++ b/net/yaip/l2/ethernet.c @@ -64,14 +64,14 @@ static enum net_verdict ethernet_recv(struct net_if *iface, switch (ntohs(hdr->type)) { case NET_ETH_PTYPE_IP: case NET_ETH_PTYPE_ARP: - net_nbuf_family(buf) = AF_INET; + net_nbuf_set_family(buf, AF_INET); break; case NET_ETH_PTYPE_IPV6: - net_nbuf_family(buf) = AF_INET6; + net_nbuf_set_family(buf, AF_INET6); break; } - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); /* Set the pointers to ll src and dst addresses */ lladdr = net_nbuf_ll_src(buf); diff --git a/net/yaip/nbuf.c b/net/yaip/nbuf.c index 3e3ad25d806..3a80d304bac 100644 --- a/net/yaip/nbuf.c +++ b/net/yaip/nbuf.c @@ -333,7 +333,7 @@ static struct net_buf *net_nbuf_get_reserve(enum net_nbuf_type type, NET_ASSERT(buf->ref); dec_free_rx_bufs(buf); - net_nbuf_type(buf) = type; + net_nbuf_set_type(buf, type); break; case NET_NBUF_TX: buf = net_buf_get(&free_tx_bufs, 0); @@ -344,7 +344,7 @@ static struct net_buf *net_nbuf_get_reserve(enum net_nbuf_type type, NET_ASSERT(buf->ref); dec_free_tx_bufs(buf); - net_nbuf_type(buf) = type; + net_nbuf_set_type(buf, type); break; case NET_NBUF_DATA: buf = net_buf_get(&free_data_bufs, 0); @@ -479,8 +479,8 @@ static struct net_buf *net_nbuf_get(enum net_nbuf_type type, } if (type != NET_NBUF_DATA) { - net_nbuf_context(buf) = context; - net_nbuf_ll_reserve(buf) = (uint16_t)reserve; + net_nbuf_set_context(buf, context); + net_nbuf_set_ll_reserve(buf, (uint8_t)reserve); } return buf; diff --git a/net/yaip/net_core.c b/net/yaip/net_core.c index 53837dfa109..8afbed9261e 100644 --- a/net/yaip/net_core.c +++ b/net/yaip/net_core.c @@ -190,19 +190,21 @@ static inline enum net_verdict process_ipv6_pkt(struct net_buf *buf) } /* Check extension headers */ - net_nbuf_next_hdr(buf) = &hdr->nexthdr; - net_nbuf_ext_len(buf) = 0; - net_nbuf_ext_bitmap(buf) = 0; + net_nbuf_set_next_hdr(buf, &hdr->nexthdr); + net_nbuf_set_ext_len(buf, 0); + net_nbuf_set_ext_bitmap(buf, 0); while (1) { switch (*(net_nbuf_next_hdr(buf))) { case IPPROTO_ICMPV6: - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); + net_nbuf_set_ip_hdr_len(buf, + sizeof(struct net_ipv6_hdr)); return process_icmpv6_pkt(buf, hdr); case IPPROTO_UDP: - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); + net_nbuf_set_ip_hdr_len(buf, + sizeof(struct net_ipv6_hdr)); return net_conn_input(IPPROTO_UDP, buf); default: @@ -265,11 +267,11 @@ static inline enum net_verdict process_ipv4_pkt(struct net_buf *buf) switch (hdr->proto) { case IPPROTO_ICMP: - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv4_hdr); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv4_hdr)); return process_icmpv4_pkt(buf, hdr); case IPPROTO_UDP: - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv4_hdr); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv4_hdr)); return net_conn_input(IPPROTO_UDP, buf); } @@ -307,13 +309,13 @@ static inline enum net_verdict process_data(struct net_buf *buf) #if defined(CONFIG_NET_IPV6) case 0x60: NET_STATS(++net_stats.ipv6.recv); - net_nbuf_family(buf) = PF_INET6; + net_nbuf_set_family(buf, PF_INET6); return process_ipv6_pkt(buf); #endif #if defined(CONFIG_NET_IPV4) case 0x40: NET_STATS(++net_stats.ipv4.recv); - net_nbuf_family(buf) = PF_INET; + net_nbuf_set_family(buf, PF_INET); return process_ipv4_pkt(buf); #endif } @@ -409,7 +411,7 @@ int net_recv_data(struct net_if *iface, struct net_buf *buf) NET_DBG("fifo %p iface %p buf %p len %d", &rx_queue, iface, buf, net_buf_frags_len(buf)); - net_nbuf_iface(buf) = iface; + net_nbuf_set_iface(buf, iface); net_buf_put(&rx_queue, buf); diff --git a/net/yaip/net_private.h b/net/yaip/net_private.h index b9dff5bd8eb..b94fe288892 100644 --- a/net/yaip/net_private.h +++ b/net/yaip/net_private.h @@ -138,7 +138,7 @@ static inline void net_hexdump_frags(const char *str, struct net_buf *buf) struct net_buf *frag = buf->frags; while (frag) { - net_hexdump(str, frag->data, net_nbuf_len(frag)); + net_hexdump(str, frag->data, net_nbuf_get_len(frag)); frag = frag->frags; } } diff --git a/tests/net/arp/src/main.c b/tests/net/arp/src/main.c index a4dbf789025..bac50a6491a 100644 --- a/tests/net/arp/src/main.c +++ b/tests/net/arp/src/main.c @@ -205,8 +205,8 @@ static inline struct net_buf *prepare_arp_reply(struct net_if *iface, } net_buf_frag_add(buf, frag); - net_nbuf_iface(buf) = iface; - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); hdr = NET_ARP_BUF(buf); eth = NET_ETH_BUF(buf); @@ -259,8 +259,8 @@ static inline struct net_buf *prepare_arp_request(struct net_if *iface, } net_buf_frag_add(buf, frag); - net_nbuf_iface(buf) = iface; - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); hdr = NET_ARP_BUF(buf); eth = NET_ETH_BUF(buf); @@ -364,8 +364,8 @@ void main_fiber(void) net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); - net_nbuf_iface(buf) = iface; + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); + net_nbuf_set_iface(buf, iface); ipv4 = (struct net_ipv4_hdr *)net_buf_add(frag, sizeof(struct net_ipv4_hdr)); @@ -438,8 +438,8 @@ void main_fiber(void) net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); - net_nbuf_iface(buf) = iface; + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); + net_nbuf_set_iface(buf, iface); setup_eth_header(iface, buf, &hwaddr, NET_ETH_PTYPE_IP); @@ -666,8 +666,8 @@ void main_fiber(void) net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); - net_nbuf_iface(buf) = iface; + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); + net_nbuf_set_iface(buf, iface); arp_hdr = NET_ARP_BUF(buf); net_buf_add(frag, sizeof(struct net_arp_hdr)); @@ -720,8 +720,8 @@ void main_fiber(void) net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); - net_nbuf_iface(buf) = iface; + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); + net_nbuf_set_iface(buf, iface); send_status = -EINVAL; arp_hdr = NET_ARP_BUF(buf); diff --git a/tests/net/nbuf/src/main.c b/tests/net/nbuf/src/main.c index c2f6beaf7a6..27192b895c7 100644 --- a/tests/net/nbuf/src/main.c +++ b/tests/net/nbuf/src/main.c @@ -90,8 +90,8 @@ static int test_ipv6_multi_frags(void) return -EINVAL; } - net_nbuf_appdata(buf) = (void *)udp + sizeof(*udp); - net_nbuf_appdatalen(buf) = 0; + net_nbuf_set_appdata(buf, (void *)udp + sizeof(*udp)); + net_nbuf_set_appdatalen(buf, 0); } net_buf_frag_add(buf, frag); @@ -216,8 +216,8 @@ static int test_fragment_copy(void) memcpy(net_buf_add(frag, 15), example_data, 15); - net_nbuf_appdata(buf) = (void *)udp + sizeof(*udp) + 15; - net_nbuf_appdatalen(buf) = 0; + net_nbuf_set_appdata(buf, (void *)udp + sizeof(*udp) + 15); + net_nbuf_set_appdatalen(buf, 0); } net_buf_frag_add(buf, frag); diff --git a/tests/net/udp/src/main.c b/tests/net/udp/src/main.c index 685baad6bf5..2c30b498fd4 100644 --- a/tests/net/udp/src/main.c +++ b/tests/net/udp/src/main.c @@ -188,12 +188,12 @@ static void setup_ipv6_udp(struct net_buf *buf, net_ipaddr_copy(&NET_IPV6_BUF(buf)->src, remote_addr); net_ipaddr_copy(&NET_IPV6_BUF(buf)->dst, local_addr); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); NET_UDP_BUF(buf)->src_port = htons(remote_port); NET_UDP_BUF(buf)->dst_port = htons(local_port); - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ext_len(buf, 0); net_buf_add(buf->frags, net_nbuf_ip_hdr_len(buf) + sizeof(struct net_udp_hdr)); @@ -216,12 +216,12 @@ static void setup_ipv4_udp(struct net_buf *buf, net_ipaddr_copy(&NET_IPV4_BUF(buf)->src, remote_addr); net_ipaddr_copy(&NET_IPV4_BUF(buf)->dst, local_addr); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv4_hdr); + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv4_hdr)); NET_UDP_BUF(buf)->src_port = htons(remote_port); NET_UDP_BUF(buf)->dst_port = htons(local_port); - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ext_len(buf, 0); net_buf_add(buf->frags, net_nbuf_ip_hdr_len(buf) + sizeof(struct net_udp_hdr)); @@ -245,8 +245,8 @@ static bool send_ipv6_udp_msg(struct net_if *iface, frag = net_nbuf_get_reserve_data(0); net_buf_frag_add(buf, frag); - net_nbuf_iface(buf) = iface; - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); setup_ipv6_udp(buf, src, dst, src_port, dst_port); @@ -293,8 +293,8 @@ static bool send_ipv4_udp_msg(struct net_if *iface, frag = net_nbuf_get_reserve_data(0); net_buf_frag_add(buf, frag); - net_nbuf_iface(buf) = iface; - net_nbuf_ll_reserve(buf) = net_buf_headroom(frag); + net_nbuf_set_iface(buf, iface); + net_nbuf_set_ll_reserve(buf, net_buf_headroom(frag)); setup_ipv4_udp(buf, src, dst, src_port, dst_port); diff --git a/tests/net/utils/src/main.c b/tests/net/utils/src/main.c index 06308ee4062..d0089ff3910 100644 --- a/tests/net/utils/src/main.c +++ b/tests/net/utils/src/main.c @@ -176,9 +176,9 @@ void main(void) return; } - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); - net_nbuf_family(buf) = AF_INET6; - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_ext_len(buf, 0); /* We need to zero the ICMP checksum */ hdr_len = net_nbuf_ip_hdr_len(buf); @@ -200,9 +200,9 @@ void main(void) net_buf_frag_add(buf, frag); memcpy(net_buf_add(frag, sizeof(pkt2) / 2), pkt2, sizeof(pkt2) / 2); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); - net_nbuf_family(buf) = AF_INET6; - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_ext_len(buf, 0); hdr_len = net_nbuf_ip_hdr_len(buf); orig_chksum = (frag->data[hdr_len + 2] << 8) + frag->data[hdr_len + 3]; @@ -229,9 +229,9 @@ void main(void) memcpy(net_buf_add(frag, sizeof(pkt3) / 2), pkt3, sizeof(pkt3) / 2); printk("First fragment will have %d bytes\n", sizeof(pkt3) / 2); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); - net_nbuf_family(buf) = AF_INET6; - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_ext_len(buf, 0); hdr_len = net_nbuf_ip_hdr_len(buf); orig_chksum = (frag->data[hdr_len + 2] << 8) + frag->data[hdr_len + 3]; @@ -261,9 +261,9 @@ void main(void) sizeof(struct net_ipv6_hdr)); printk("[0] IPv6 fragment will have %d bytes\n", frag->len); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv6_hdr); - net_nbuf_family(buf) = AF_INET6; - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv6_hdr)); + net_nbuf_set_family(buf, AF_INET6); + net_nbuf_set_ext_len(buf, 0); chunk = 29; datalen = sizeof(pkt3) - sizeof(struct net_ipv6_hdr); @@ -324,13 +324,13 @@ void main(void) frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr)); net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); memcpy(net_nbuf_ll(buf), pkt4, sizeof(pkt4)); net_buf_add(frag, sizeof(pkt4) - sizeof(struct net_eth_hdr)); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv4_hdr); - net_nbuf_family(buf) = AF_INET; - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv4_hdr)); + net_nbuf_set_family(buf, AF_INET); + net_nbuf_set_ext_len(buf, 0); hdr_len = net_nbuf_ip_hdr_len(buf); orig_chksum = (frag->data[hdr_len + 2] << 8) + frag->data[hdr_len + 3]; @@ -352,13 +352,13 @@ void main(void) frag = net_nbuf_get_reserve_data(sizeof(struct net_eth_hdr)); net_buf_frag_add(buf, frag); - net_nbuf_ll_reserve(buf) = sizeof(struct net_eth_hdr); + net_nbuf_set_ll_reserve(buf, sizeof(struct net_eth_hdr)); memcpy(net_nbuf_ll(buf), pkt5, sizeof(pkt5)); net_buf_add(frag, sizeof(pkt5) - sizeof(struct net_eth_hdr)); - net_nbuf_ip_hdr_len(buf) = sizeof(struct net_ipv4_hdr); - net_nbuf_family(buf) = AF_INET; - net_nbuf_ext_len(buf) = 0; + net_nbuf_set_ip_hdr_len(buf, sizeof(struct net_ipv4_hdr)); + net_nbuf_set_family(buf, AF_INET); + net_nbuf_set_ext_len(buf, 0); hdr_len = net_nbuf_ip_hdr_len(buf); orig_chksum = (frag->data[hdr_len + 2] << 8) + frag->data[hdr_len + 3];