net: ipv6: Refactor IPv6 header length handling
Change the length to uint16_t and work with it through standard htons/ntohs() macros. Signed-off-by: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com>
This commit is contained in:
parent
7d55b7f11a
commit
ac92a01f5a
13 changed files with 53 additions and 73 deletions
|
@ -269,7 +269,7 @@ struct net_ipv6_hdr {
|
||||||
u8_t vtc;
|
u8_t vtc;
|
||||||
u8_t tcflow;
|
u8_t tcflow;
|
||||||
u16_t flow;
|
u16_t flow;
|
||||||
u8_t len[2];
|
u16_t len;
|
||||||
u8_t nexthdr;
|
u8_t nexthdr;
|
||||||
u8_t hop_limit;
|
u8_t hop_limit;
|
||||||
struct in6_addr src;
|
struct in6_addr src;
|
||||||
|
|
|
@ -1366,8 +1366,7 @@ end:
|
||||||
|
|
||||||
/* Set IPv6 header and UDP (if next header is) length */
|
/* Set IPv6 header and UDP (if next header is) length */
|
||||||
len = net_pkt_get_len(pkt) - NET_IPV6H_LEN;
|
len = net_pkt_get_len(pkt) - NET_IPV6H_LEN;
|
||||||
ipv6->len[0] = len >> 8;
|
ipv6->len = htons(len);
|
||||||
ipv6->len[1] = (u8_t)len;
|
|
||||||
|
|
||||||
if (ipv6->nexthdr == IPPROTO_UDP && udp) {
|
if (ipv6->nexthdr == IPPROTO_UDP && udp) {
|
||||||
udp->len = htons(len);
|
udp->len = htons(len);
|
||||||
|
|
|
@ -870,8 +870,7 @@ enum net_verdict net_conn_input(enum net_ip_protocol proto, struct net_pkt *pkt)
|
||||||
data_len = ntohs(NET_IPV4_HDR(pkt)->len);
|
data_len = ntohs(NET_IPV4_HDR(pkt)->len);
|
||||||
} else if (IS_ENABLED(CONFIG_NET_IPV6) &&
|
} else if (IS_ENABLED(CONFIG_NET_IPV6) &&
|
||||||
net_pkt_family(pkt) == AF_INET6) {
|
net_pkt_family(pkt) == AF_INET6) {
|
||||||
data_len = NET_IPV6_HDR(pkt)->len[0] * 256 +
|
data_len = ntohs(NET_IPV6_HDR(pkt)->len);
|
||||||
NET_IPV6_HDR(pkt)->len[1];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NET_DBG("Check %s listener for pkt %p src port %u dst port %u "
|
NET_DBG("Check %s listener for pkt %p src port %u dst port %u "
|
||||||
|
|
|
@ -86,8 +86,8 @@ static inline void setup_ipv6_header(struct net_pkt *pkt, u16_t extra_len,
|
||||||
NET_IPV6_HDR(pkt)->tcflow = 0;
|
NET_IPV6_HDR(pkt)->tcflow = 0;
|
||||||
NET_IPV6_HDR(pkt)->flow = 0;
|
NET_IPV6_HDR(pkt)->flow = 0;
|
||||||
|
|
||||||
sys_put_be16(NET_ICMPH_LEN + extra_len + NET_ICMPV6_UNUSED_LEN,
|
NET_IPV6_HDR(pkt)->len = htons(NET_ICMPH_LEN + extra_len +
|
||||||
NET_IPV6_HDR(pkt)->len);
|
NET_ICMPV6_UNUSED_LEN);
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->nexthdr = IPPROTO_ICMPV6;
|
NET_IPV6_HDR(pkt)->nexthdr = IPPROTO_ICMPV6;
|
||||||
NET_IPV6_HDR(pkt)->hop_limit = hop_limit;
|
NET_IPV6_HDR(pkt)->hop_limit = hop_limit;
|
||||||
|
@ -334,9 +334,8 @@ static enum net_verdict handle_echo_request(struct net_pkt *orig)
|
||||||
goto drop_no_pkt;
|
goto drop_no_pkt;
|
||||||
}
|
}
|
||||||
|
|
||||||
payload_len = sys_get_be16(NET_IPV6_HDR(orig)->len) -
|
payload_len = ntohs(NET_IPV6_HDR(orig)->len) - sizeof(NET_ICMPH_LEN) -
|
||||||
sizeof(NET_ICMPH_LEN) - NET_ICMPV6_UNUSED_LEN;
|
NET_ICMPV6_UNUSED_LEN;
|
||||||
|
|
||||||
frag = net_pkt_copy_all(orig, 0, PKT_WAIT_TIME);
|
frag = net_pkt_copy_all(orig, 0, PKT_WAIT_TIME);
|
||||||
if (!frag) {
|
if (!frag) {
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
|
@ -786,15 +786,11 @@ int net_ipv6_finalize(struct net_pkt *pkt, u8_t next_header_proto)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
net_pkt_compact(pkt);
|
net_pkt_compact(pkt);
|
||||||
|
|
||||||
total_len = net_pkt_get_len(pkt);
|
total_len = net_pkt_get_len(pkt) - sizeof(struct net_ipv6_hdr);
|
||||||
|
|
||||||
total_len -= sizeof(struct net_ipv6_hdr);
|
NET_IPV6_HDR(pkt)->len = htons(total_len);
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->len[0] = total_len >> 8;
|
|
||||||
NET_IPV6_HDR(pkt)->len[1] = total_len & 0xff;
|
|
||||||
|
|
||||||
#if defined(CONFIG_NET_UDP)
|
#if defined(CONFIG_NET_UDP)
|
||||||
if (next_header_proto == IPPROTO_UDP &&
|
if (next_header_proto == IPPROTO_UDP &&
|
||||||
|
@ -1260,8 +1256,7 @@ static void setup_headers(struct net_pkt *pkt, u8_t nd6_len,
|
||||||
NET_IPV6_HDR(pkt)->vtc = 0x60;
|
NET_IPV6_HDR(pkt)->vtc = 0x60;
|
||||||
NET_IPV6_HDR(pkt)->tcflow = 0;
|
NET_IPV6_HDR(pkt)->tcflow = 0;
|
||||||
NET_IPV6_HDR(pkt)->flow = 0;
|
NET_IPV6_HDR(pkt)->flow = 0;
|
||||||
NET_IPV6_HDR(pkt)->len[0] = 0;
|
NET_IPV6_HDR(pkt)->len = htons(NET_ICMPH_LEN + nd6_len);
|
||||||
NET_IPV6_HDR(pkt)->len[1] = NET_ICMPH_LEN + nd6_len;
|
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->nexthdr = IPPROTO_ICMPV6;
|
NET_IPV6_HDR(pkt)->nexthdr = IPPROTO_ICMPV6;
|
||||||
NET_IPV6_HDR(pkt)->hop_limit = NET_IPV6_ND_HOP_LIMIT;
|
NET_IPV6_HDR(pkt)->hop_limit = NET_IPV6_ND_HOP_LIMIT;
|
||||||
|
@ -2143,11 +2138,11 @@ int net_ipv6_send_ns(struct net_if *iface,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_my_address) {
|
if (is_my_address) {
|
||||||
|
u16_t len = ntohs(NET_IPV6_HDR(pkt)->len);
|
||||||
/* DAD */
|
/* DAD */
|
||||||
net_ipaddr_copy(&NET_IPV6_HDR(pkt)->src,
|
net_ipaddr_copy(&NET_IPV6_HDR(pkt)->src,
|
||||||
net_ipv6_unspecified_address());
|
net_ipv6_unspecified_address());
|
||||||
|
NET_IPV6_HDR(pkt)->len = htons(len - llao_len);
|
||||||
NET_IPV6_HDR(pkt)->len[1] -= llao_len;
|
|
||||||
} else {
|
} else {
|
||||||
if (src) {
|
if (src) {
|
||||||
net_ipaddr_copy(&NET_IPV6_HDR(pkt)->src, src);
|
net_ipaddr_copy(&NET_IPV6_HDR(pkt)->src, src);
|
||||||
|
@ -3344,8 +3339,7 @@ static void reassemble_packet(struct net_ipv6_reassembly *reass)
|
||||||
|
|
||||||
len = net_pkt_get_len(pkt) - sizeof(struct net_ipv6_hdr);
|
len = net_pkt_get_len(pkt) - sizeof(struct net_ipv6_hdr);
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->len[0] = len >> 8;
|
NET_IPV6_HDR(pkt)->len = htons(len);
|
||||||
NET_IPV6_HDR(pkt)->len[1] = len & 0xff;
|
|
||||||
|
|
||||||
NET_DBG("New pkt %p IPv6 len is %d bytes", pkt, len);
|
NET_DBG("New pkt %p IPv6 len is %d bytes", pkt, len);
|
||||||
|
|
||||||
|
@ -4095,7 +4089,7 @@ enum net_verdict net_ipv6_process_pkt(struct net_pkt *pkt)
|
||||||
{
|
{
|
||||||
struct net_ipv6_hdr *hdr = NET_IPV6_HDR(pkt);
|
struct net_ipv6_hdr *hdr = NET_IPV6_HDR(pkt);
|
||||||
int real_len = net_pkt_get_len(pkt);
|
int real_len = net_pkt_get_len(pkt);
|
||||||
int pkt_len = (hdr->len[0] << 8) + hdr->len[1] + sizeof(*hdr);
|
int pkt_len = ntohs(hdr->len) + sizeof(*hdr);
|
||||||
struct net_buf *frag;
|
struct net_buf *frag;
|
||||||
u8_t start_of_ext, prev_hdr;
|
u8_t start_of_ext, prev_hdr;
|
||||||
u8_t next, next_hdr;
|
u8_t next, next_hdr;
|
||||||
|
|
|
@ -480,8 +480,8 @@ u16_t net_calc_chksum(struct net_pkt *pkt, u8_t proto)
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_NET_IPV6)
|
#if defined(CONFIG_NET_IPV6)
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
upper_layer_len = (NET_IPV6_HDR(pkt)->len[0] << 8) +
|
upper_layer_len = ntohs(NET_IPV6_HDR(pkt)->len) -
|
||||||
NET_IPV6_HDR(pkt)->len[1] - net_pkt_ipv6_ext_len(pkt);
|
net_pkt_ipv6_ext_len(pkt);
|
||||||
sum = calc_chksum(upper_layer_len + proto,
|
sum = calc_chksum(upper_layer_len + proto,
|
||||||
(u8_t *)&NET_IPV6_HDR(pkt)->src,
|
(u8_t *)&NET_IPV6_HDR(pkt)->src,
|
||||||
2 * sizeof(struct in6_addr));
|
2 * sizeof(struct in6_addr));
|
||||||
|
|
|
@ -101,9 +101,7 @@ static inline void ethernet_update_length(struct net_if *iface,
|
||||||
if (net_pkt_family(pkt) == AF_INET) {
|
if (net_pkt_family(pkt) == AF_INET) {
|
||||||
len = ntohs(NET_IPV4_HDR(pkt)->len);
|
len = ntohs(NET_IPV4_HDR(pkt)->len);
|
||||||
} else {
|
} else {
|
||||||
len = ((NET_IPV6_HDR(pkt)->len[0] << 8) +
|
len = ntohs(NET_IPV6_HDR(pkt)->len) + NET_IPV6H_LEN;
|
||||||
NET_IPV6_HDR(pkt)->len[1]) +
|
|
||||||
NET_IPV6H_LEN;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len < NET_ETH_MINIMAL_FRAME_SIZE - sizeof(struct net_eth_hdr)) {
|
if (len < NET_ETH_MINIMAL_FRAME_SIZE - sizeof(struct net_eth_hdr)) {
|
||||||
|
|
|
@ -317,8 +317,7 @@ static void update_protocol_header_lengths(struct net_pkt *pkt, u16_t size)
|
||||||
{
|
{
|
||||||
net_pkt_set_ip_hdr_len(pkt, NET_IPV6H_LEN);
|
net_pkt_set_ip_hdr_len(pkt, NET_IPV6H_LEN);
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->len[0] = (size - NET_IPV6H_LEN) >> 8;
|
NET_IPV6_HDR(pkt)->len = htons(size - NET_IPV6H_LEN);
|
||||||
NET_IPV6_HDR(pkt)->len[1] = (u8_t) (size - NET_IPV6H_LEN);
|
|
||||||
|
|
||||||
if (NET_IPV6_HDR(pkt)->nexthdr == IPPROTO_UDP) {
|
if (NET_IPV6_HDR(pkt)->nexthdr == IPPROTO_UDP) {
|
||||||
struct net_udp_hdr hdr, *udp_hdr;
|
struct net_udp_hdr hdr, *udp_hdr;
|
||||||
|
|
|
@ -100,7 +100,7 @@ static size_t ecm_eth_size(void *ecm_pkt, size_t len)
|
||||||
ip_len = ntohs(((struct net_ipv4_hdr *)ip_data)->len);
|
ip_len = ntohs(((struct net_ipv4_hdr *)ip_data)->len);
|
||||||
break;
|
break;
|
||||||
case NET_ETH_PTYPE_IPV6:
|
case NET_ETH_PTYPE_IPV6:
|
||||||
ip_len = sys_get_be16(((struct net_ipv6_hdr *)ip_data)->len);
|
ip_len = ntohs(((struct net_ipv6_hdr *)ip_data)->len);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SYS_LOG_DBG("Unknown hdr type 0x%04x", hdr->type);
|
SYS_LOG_DBG("Unknown hdr type 0x%04x", hdr->type);
|
||||||
|
|
|
@ -358,8 +358,7 @@ static struct net_pkt *create_pkt(struct net_6lo_data *data)
|
||||||
frag->data[4] = len >> 8;
|
frag->data[4] = len >> 8;
|
||||||
frag->data[5] = (u8_t) len;
|
frag->data[5] = (u8_t) len;
|
||||||
|
|
||||||
data->ipv6.len[0] = len >> 8;
|
data->ipv6.len = htons(len);
|
||||||
data->ipv6.len[1] = (u8_t) len;
|
|
||||||
|
|
||||||
if (data->nh_udp) {
|
if (data->nh_udp) {
|
||||||
frag->data[44] = len >> 8;
|
frag->data[44] = len >> 8;
|
||||||
|
@ -397,7 +396,7 @@ static struct net_6lo_data test_data_1 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x00,
|
.ipv6.tcflow = 0x00,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam00,
|
.ipv6.src = src_sam00,
|
||||||
|
@ -416,7 +415,7 @@ static struct net_6lo_data test_data_2 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam01,
|
.ipv6.src = src_sam01,
|
||||||
|
@ -435,7 +434,7 @@ static struct net_6lo_data test_data_3 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x21,
|
.ipv6.tcflow = 0x21,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam10,
|
.ipv6.src = src_sam10,
|
||||||
|
@ -454,7 +453,7 @@ static struct net_6lo_data test_data_4 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam00,
|
.ipv6.src = src_sam00,
|
||||||
|
@ -473,7 +472,7 @@ static struct net_6lo_data test_data_5 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x23,
|
.ipv6.tcflow = 0x23,
|
||||||
.ipv6.flow = 0x4567,
|
.ipv6.flow = 0x4567,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam01,
|
.ipv6.src = src_sam01,
|
||||||
|
@ -492,7 +491,7 @@ static struct net_6lo_data test_data_6 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x0,
|
.ipv6.tcflow = 0x0,
|
||||||
.ipv6.flow = 0x0,
|
.ipv6.flow = 0x0,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam10,
|
.ipv6.src = src_sam10,
|
||||||
|
@ -511,7 +510,7 @@ static struct net_6lo_data test_data_7 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x0,
|
.ipv6.tcflow = 0x0,
|
||||||
.ipv6.flow = 0x0,
|
.ipv6.flow = 0x0,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = 0,
|
.ipv6.nexthdr = 0,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam10,
|
.ipv6.src = src_sam10,
|
||||||
|
@ -526,7 +525,7 @@ static struct net_6lo_data test_data_8 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x0,
|
.ipv6.tcflow = 0x0,
|
||||||
.ipv6.flow = 0x0,
|
.ipv6.flow = 0x0,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_ICMPV6,
|
.ipv6.nexthdr = IPPROTO_ICMPV6,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam10,
|
.ipv6.src = src_sam10,
|
||||||
|
@ -544,7 +543,7 @@ static struct net_6lo_data test_data_9 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam00,
|
.ipv6.src = src_sac1_sam00,
|
||||||
|
@ -563,7 +562,7 @@ static struct net_6lo_data test_data_10 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam00,
|
.ipv6.src = src_sac1_sam00,
|
||||||
|
@ -582,7 +581,7 @@ static struct net_6lo_data test_data_11 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = 0,
|
.ipv6.nexthdr = 0,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam00,
|
.ipv6.src = src_sac1_sam00,
|
||||||
|
@ -597,7 +596,7 @@ static struct net_6lo_data test_data_12 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_ICMPV6,
|
.ipv6.nexthdr = IPPROTO_ICMPV6,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam00,
|
.ipv6.src = src_sac1_sam00,
|
||||||
|
@ -615,7 +614,7 @@ static struct net_6lo_data test_data_13 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x21,
|
.ipv6.tcflow = 0x21,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam11,
|
.ipv6.src = src_sam11,
|
||||||
|
@ -634,7 +633,7 @@ static struct net_6lo_data test_data_14 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x00,
|
.ipv6.tcflow = 0x00,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = NET_IPV6_NEXTHDR_NONE,
|
.ipv6.nexthdr = NET_IPV6_NEXTHDR_NONE,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam00,
|
.ipv6.src = src_sac1_sam00,
|
||||||
|
@ -650,7 +649,7 @@ static struct net_6lo_data test_data_15 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam01,
|
.ipv6.src = src_sac1_sam01,
|
||||||
|
@ -669,7 +668,7 @@ static struct net_6lo_data test_data_16 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x21,
|
.ipv6.tcflow = 0x21,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam10,
|
.ipv6.src = src_sac1_sam10,
|
||||||
|
@ -688,7 +687,7 @@ static struct net_6lo_data test_data_17 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x21,
|
.ipv6.tcflow = 0x21,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam11,
|
.ipv6.src = src_sac1_sam11,
|
||||||
|
@ -707,7 +706,7 @@ static struct net_6lo_data test_data_18 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam01,
|
.ipv6.src = src_sam01,
|
||||||
|
@ -726,7 +725,7 @@ static struct net_6lo_data test_data_19 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam01,
|
.ipv6.src = src_sac1_sam01,
|
||||||
|
@ -745,7 +744,7 @@ static struct net_6lo_data test_data_20 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x23,
|
.ipv6.tcflow = 0x23,
|
||||||
.ipv6.flow = 0x4567,
|
.ipv6.flow = 0x4567,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam01,
|
.ipv6.src = src_sac1_sam01,
|
||||||
|
@ -763,7 +762,7 @@ static struct net_6lo_data test_data_21 = {
|
||||||
.ipv6.vtc = 0x61,
|
.ipv6.vtc = 0x61,
|
||||||
.ipv6.tcflow = 0x23,
|
.ipv6.tcflow = 0x23,
|
||||||
.ipv6.flow = 0x4567,
|
.ipv6.flow = 0x4567,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam01,
|
.ipv6.src = src_sac1_sam01,
|
||||||
|
@ -782,7 +781,7 @@ static struct net_6lo_data test_data_22 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x0,
|
.ipv6.tcflow = 0x0,
|
||||||
.ipv6.flow = 0x0,
|
.ipv6.flow = 0x0,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam10,
|
.ipv6.src = src_sac1_sam10,
|
||||||
|
@ -801,7 +800,7 @@ static struct net_6lo_data test_data_23 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x0,
|
.ipv6.tcflow = 0x0,
|
||||||
.ipv6.flow = 0x0,
|
.ipv6.flow = 0x0,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = 0,
|
.ipv6.nexthdr = 0,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam11,
|
.ipv6.src = src_sac1_sam11,
|
||||||
|
@ -816,7 +815,7 @@ static struct net_6lo_data test_data_24 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x20,
|
.ipv6.tcflow = 0x20,
|
||||||
.ipv6.flow = 0x3412,
|
.ipv6.flow = 0x3412,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sam00,
|
.ipv6.src = src_sam00,
|
||||||
|
@ -835,7 +834,7 @@ static struct net_6lo_data test_data_25 = {
|
||||||
.ipv6.vtc = 0x60,
|
.ipv6.vtc = 0x60,
|
||||||
.ipv6.tcflow = 0x00,
|
.ipv6.tcflow = 0x00,
|
||||||
.ipv6.flow = 0x00,
|
.ipv6.flow = 0x00,
|
||||||
.ipv6.len = { 0x00, 0x00 },
|
.ipv6.len = 0,
|
||||||
.ipv6.nexthdr = IPPROTO_UDP,
|
.ipv6.nexthdr = IPPROTO_UDP,
|
||||||
.ipv6.hop_limit = 0xff,
|
.ipv6.hop_limit = 0xff,
|
||||||
.ipv6.src = src_sac1_sam00,
|
.ipv6.src = src_sac1_sam00,
|
||||||
|
|
|
@ -1554,8 +1554,7 @@ static void test_send_ipv6_fragment(void)
|
||||||
|
|
||||||
zassert_equal(pkt_data_len, count * data_len, "Data size mismatch");
|
zassert_equal(pkt_data_len, count * data_len, "Data size mismatch");
|
||||||
|
|
||||||
total_len = net_pkt_get_len(pkt);
|
total_len = net_pkt_get_len(pkt) - sizeof(struct net_ipv6_hdr);
|
||||||
total_len -= sizeof(struct net_ipv6_hdr);
|
|
||||||
|
|
||||||
DBG("Sending %zd bytes of which ext %d and data %d bytes\n",
|
DBG("Sending %zd bytes of which ext %d and data %d bytes\n",
|
||||||
total_len, net_pkt_ipv6_ext_len(pkt), pkt_data_len);
|
total_len, net_pkt_ipv6_ext_len(pkt), pkt_data_len);
|
||||||
|
@ -1563,9 +1562,7 @@ static void test_send_ipv6_fragment(void)
|
||||||
zassert_equal(total_len - net_pkt_ipv6_ext_len(pkt) - 8, pkt_data_len,
|
zassert_equal(total_len - net_pkt_ipv6_ext_len(pkt) - 8, pkt_data_len,
|
||||||
"Packet size invalid");
|
"Packet size invalid");
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->len[0] = total_len / 256;
|
NET_IPV6_HDR(pkt)->len = htons(total_len);
|
||||||
NET_IPV6_HDR(pkt)->len[1] = total_len -
|
|
||||||
NET_IPV6_HDR(pkt)->len[0] * 256;
|
|
||||||
|
|
||||||
net_udp_set_chksum(pkt, pkt->frags);
|
net_udp_set_chksum(pkt, pkt->frags);
|
||||||
|
|
||||||
|
|
|
@ -247,8 +247,7 @@ static void setup_ipv6_tcp(struct net_pkt *pkt,
|
||||||
ipv6.vtc = 0x60;
|
ipv6.vtc = 0x60;
|
||||||
ipv6.tcflow = 0;
|
ipv6.tcflow = 0;
|
||||||
ipv6.flow = 0;
|
ipv6.flow = 0;
|
||||||
ipv6.len[0] = 0;
|
ipv6.len = htons(NET_TCPH_LEN + sizeof(data));
|
||||||
ipv6.len[1] = NET_TCPH_LEN + sizeof(data);
|
|
||||||
ipv6.nexthdr = IPPROTO_TCP;
|
ipv6.nexthdr = IPPROTO_TCP;
|
||||||
ipv6.hop_limit = 255;
|
ipv6.hop_limit = 255;
|
||||||
|
|
||||||
|
@ -336,9 +335,8 @@ static void setup_ipv6_tcp_long(struct net_pkt *pkt,
|
||||||
ipv6.vtc = 0x60;
|
ipv6.vtc = 0x60;
|
||||||
ipv6.tcflow = 0;
|
ipv6.tcflow = 0;
|
||||||
ipv6.flow = 0;
|
ipv6.flow = 0;
|
||||||
ipv6.len[0] = 0;
|
ipv6.len = htons(NET_TCPH_LEN + sizeof(data) +
|
||||||
ipv6.len[1] = NET_TCPH_LEN + sizeof(data) +
|
sizeof(ipv6_hop_by_hop_ext_hdr));
|
||||||
sizeof(ipv6_hop_by_hop_ext_hdr);
|
|
||||||
|
|
||||||
ipv6.nexthdr = 0; /* Hop-by-hop option */
|
ipv6.nexthdr = 0; /* Hop-by-hop option */
|
||||||
ipv6.hop_limit = 255;
|
ipv6.hop_limit = 255;
|
||||||
|
|
|
@ -192,8 +192,7 @@ static void setup_ipv6_udp(struct net_pkt *pkt,
|
||||||
NET_IPV6_HDR(pkt)->vtc = 0x60;
|
NET_IPV6_HDR(pkt)->vtc = 0x60;
|
||||||
NET_IPV6_HDR(pkt)->tcflow = 0;
|
NET_IPV6_HDR(pkt)->tcflow = 0;
|
||||||
NET_IPV6_HDR(pkt)->flow = 0;
|
NET_IPV6_HDR(pkt)->flow = 0;
|
||||||
NET_IPV6_HDR(pkt)->len[0] = 0;
|
NET_IPV6_HDR(pkt)->len = htons(NET_UDPH_LEN + strlen(payload));
|
||||||
NET_IPV6_HDR(pkt)->len[1] = NET_UDPH_LEN + strlen(payload);
|
|
||||||
|
|
||||||
NET_IPV6_HDR(pkt)->nexthdr = IPPROTO_UDP;
|
NET_IPV6_HDR(pkt)->nexthdr = IPPROTO_UDP;
|
||||||
NET_IPV6_HDR(pkt)->hop_limit = 255;
|
NET_IPV6_HDR(pkt)->hop_limit = 255;
|
||||||
|
@ -256,9 +255,8 @@ static void setup_ipv6_udp_long(struct net_pkt *pkt,
|
||||||
ipv6.vtc = 0x60;
|
ipv6.vtc = 0x60;
|
||||||
ipv6.tcflow = 0;
|
ipv6.tcflow = 0;
|
||||||
ipv6.flow = 0;
|
ipv6.flow = 0;
|
||||||
ipv6.len[0] = 0;
|
ipv6.len = htons(NET_UDPH_LEN + strlen(payload) +
|
||||||
ipv6.len[1] = NET_UDPH_LEN + strlen(payload) +
|
sizeof(ipv6_hop_by_hop_ext_hdr));
|
||||||
sizeof(ipv6_hop_by_hop_ext_hdr);
|
|
||||||
|
|
||||||
ipv6.nexthdr = 0; /* HBHO */
|
ipv6.nexthdr = 0; /* HBHO */
|
||||||
ipv6.hop_limit = 255;
|
ipv6.hop_limit = 255;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue