tests/net: Switch ipv6 test to new net_pkt API

Switch to new allocators and r/w functions.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
diff --git a/tests/net/ipv6/src/main.c b/tests/net/ipv6/src/main.c
index 4c09270..d0664ea 100644
--- a/tests/net/ipv6/src/main.c
+++ b/tests/net/ipv6/src/main.c
@@ -171,40 +171,37 @@
  */
 static void prepare_ra_message(struct net_pkt *pkt)
 {
-	struct net_eth_hdr *hdr;
-	struct net_buf *frag;
+	struct net_eth_hdr hdr;
 
-	/* Let's cleanup the frag entirely */
-	frag = pkt->frags;
-	pkt->frags = NULL;
+	net_buf_unref(pkt->buffer);
+	pkt->buffer = NULL;
 
-	net_buf_unref(frag);
+	net_pkt_alloc_buffer(pkt, sizeof(struct net_eth_hdr) +
+			     sizeof(icmpv6_ra), AF_UNSPEC, 0);
+	net_pkt_cursor_init(pkt);
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-	net_pkt_frag_add(pkt, frag);
-
-	hdr = (struct net_eth_hdr *)frag->data;
-
-	memset(&hdr->src, 0, sizeof(struct net_eth_addr));
-	memcpy(&hdr->dst, net_pkt_iface(pkt)->if_dev->link_addr.addr,
+	hdr.type = htons(NET_ETH_PTYPE_IPV6);
+	memset(&hdr.src, 0, sizeof(struct net_eth_addr));
+	memcpy(&hdr.dst, net_pkt_iface(pkt)->if_dev->link_addr.addr,
 	       sizeof(struct net_eth_addr));
-	hdr->type = htons(NET_ETH_PTYPE_IPV6);
 
-	net_buf_add(frag, sizeof(struct net_eth_hdr));
+	net_pkt_set_overwrite(pkt, false);
 
-	memcpy(net_buf_add(frag, sizeof(icmpv6_ra)),
-	       icmpv6_ra, sizeof(icmpv6_ra));
+	net_pkt_write_new(pkt, &hdr, sizeof(struct net_eth_hdr));
+	net_pkt_write_new(pkt, icmpv6_ra, sizeof(icmpv6_ra));
+
+	net_pkt_cursor_init(pkt);
 }
 
 static struct net_icmp_hdr *get_icmp_hdr(struct net_pkt *pkt)
 {
 	NET_PKT_DATA_ACCESS_CONTIGUOUS_DEFINE(icmp_access, struct net_icmp_hdr);
 	/* First frag is the ll header */
-	struct net_buf *bak = pkt->frags;
+	struct net_buf *bak = pkt->buffer;
 	struct net_pkt_cursor backup;
 	struct net_icmp_hdr *hdr;
 
-	pkt->frags = bak->frags;
+	pkt->buffer = bak->frags;
 
 	net_pkt_cursor_backup(pkt, &backup);
 	net_pkt_cursor_init(pkt);
@@ -218,7 +215,7 @@
 	hdr = (struct net_icmp_hdr *)net_pkt_get_data_new(pkt, &icmp_access);
 
 out:
-	pkt->frags = bak;
+	pkt->buffer = bak;
 
 	net_pkt_cursor_restore(pkt, &backup);
 
@@ -230,7 +227,7 @@
 {
 	struct net_icmp_hdr *icmp;
 
-	if (!pkt->frags) {
+	if (!pkt->buffer) {
 		TC_ERROR("No data to send!\n");
 		return -ENODATA;
 	}
@@ -449,28 +446,18 @@
 static void test_send_ns_extra_options(void)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
+	pkt = net_pkt_alloc_with_buffer(iface, sizeof(icmpv6_ns_invalid),
+					AF_UNSPEC, 0, K_FOREVER);
 
 	NET_ASSERT_INFO(pkt, "Out of TX packets");
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
+	net_pkt_write_new(pkt, icmpv6_ns_invalid, sizeof(icmpv6_ns_invalid));
 	net_pkt_lladdr_clear(pkt);
 
-	memcpy(net_buf_add(frag, sizeof(icmpv6_ns_invalid)),
-	       icmpv6_ns_invalid, sizeof(icmpv6_ns_invalid));
-
 	zassert_false((net_recv_data(iface, pkt) < 0),
 		      "Data receive for invalid NS failed.");
 
@@ -482,28 +469,18 @@
 static void test_send_ns_no_options(void)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
+	pkt = net_pkt_alloc_with_buffer(iface, sizeof(icmpv6_ns_no_sllao),
+					AF_UNSPEC, 0, K_FOREVER);
 
 	NET_ASSERT_INFO(pkt, "Out of TX packets");
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
+	net_pkt_write_new(pkt, icmpv6_ns_no_sllao, sizeof(icmpv6_ns_no_sllao));
 	net_pkt_lladdr_clear(pkt);
 
-	memcpy(net_buf_add(frag, sizeof(icmpv6_ns_no_sllao)),
-	       icmpv6_ns_no_sllao, sizeof(icmpv6_ns_no_sllao));
-
 	zassert_false((net_recv_data(iface, pkt) < 0),
 		      "Data receive for invalid NS failed.");
 }
@@ -608,29 +585,20 @@
 static void test_hbho_message(void)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
+	pkt = net_pkt_alloc_with_buffer(iface, sizeof(ipv6_hbho),
+					AF_UNSPEC, 0, K_FOREVER);
 
 	NET_ASSERT_INFO(pkt, "Out of TX packets");
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
+	net_pkt_write_new(pkt, ipv6_hbho, sizeof(ipv6_hbho));
 	net_pkt_lladdr_clear(pkt);
 
-	memcpy(net_buf_add(frag, sizeof(ipv6_hbho)),
-	       ipv6_hbho, sizeof(ipv6_hbho));
-
-	zassert_false(net_recv_data(iface, pkt) < 0, "Data receive for HBHO failed.");
+	zassert_false(net_recv_data(iface, pkt) < 0,
+		      "Data receive for HBHO failed.");
 }
 
 /* IPv6 hop-by-hop option in the message HBHO (72 Bytes) */
@@ -668,29 +636,19 @@
 static void test_hbho_message_1(void)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
-	u16_t pos;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
+	pkt = net_pkt_alloc_with_buffer(iface, sizeof(ipv6_hbho_1),
+					AF_UNSPEC, 0, K_FOREVER);
 
 	NET_ASSERT_INFO(pkt, "Out of TX packets");
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
+	net_pkt_write_new(pkt, ipv6_hbho_1, sizeof(ipv6_hbho_1));
 
 	net_pkt_lladdr_clear(pkt);
 
-	net_pkt_write(pkt, pkt->frags, 0, &pos, sizeof(ipv6_hbho_1),
-		      (u8_t *)ipv6_hbho_1, K_FOREVER);
-
 	zassert_false(net_recv_data(iface, pkt) < 0,
 		      "Data receive for HBHO failed.");
 
@@ -738,29 +696,19 @@
 static void test_hbho_message_2(void)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
-	u16_t pos;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
+	pkt = net_pkt_alloc_with_buffer(iface, sizeof(ipv6_hbho_2),
+					AF_UNSPEC, 0, K_FOREVER);
 
 	NET_ASSERT_INFO(pkt, "Out of TX packets");
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
 
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
+	net_pkt_write_new(pkt, ipv6_hbho_2, sizeof(ipv6_hbho_2));
 	net_pkt_lladdr_clear(pkt);
 
-	net_pkt_write(pkt, pkt->frags, 0, &pos, sizeof(ipv6_hbho_2),
-		      (u8_t *)ipv6_hbho_2, K_FOREVER);
-
 	zassert_false(net_recv_data(iface, pkt) < 0,
 		      "Data receive for HBHO failed.");
 
@@ -911,29 +859,18 @@
 static void test_hbho_message_3(void)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
-	u16_t pos;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
+	pkt = net_pkt_alloc_with_buffer(iface, sizeof(ipv6_hbho_3),
+					AF_UNSPEC, 0, K_FOREVER);
 
 	NET_ASSERT_INFO(pkt, "Out of TX packets");
 
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
+	net_pkt_write_new(pkt, ipv6_hbho_3, sizeof(ipv6_hbho_3));
 	net_pkt_lladdr_clear(pkt);
 
-	net_pkt_write(pkt, pkt->frags, 0, &pos, sizeof(ipv6_hbho_3),
-		      (u8_t *)ipv6_hbho_3, K_FOREVER);
-
 	zassert_false(net_recv_data(iface, pkt) < 0,
 		      "Data receive for HBHO failed.");
 
@@ -1019,8 +956,6 @@
 	static u8_t new_mac[] = { 00, 01, 02, 03, 04, 05 };
 	struct net_linkaddr_storage *ll;
 	struct net_linkaddr *ll_iface;
-	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct in6_addr dst;
 	struct net_if *iface;
 	struct net_nbr *nbr;
@@ -1031,18 +966,6 @@
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
-
-	NET_ASSERT_INFO(pkt, "Out of TX packets");
-
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
 	flags = NET_ICMPV6_NA_FLAG_ROUTER |
 		NET_ICMPV6_NA_FLAG_OVERRIDE;
 
@@ -1117,13 +1040,17 @@
 
 #define NET_UDP_HDR(pkt)  ((struct net_udp_hdr *)(net_udp_get_hdr(pkt, NULL)))
 
-static void setup_ipv6_udp(struct net_pkt *pkt,
-			   struct in6_addr *local_addr,
-			   struct in6_addr *remote_addr,
-			   u16_t local_port,
-			   u16_t remote_port)
+static struct net_pkt *setup_ipv6_udp(struct net_if *iface,
+				      struct in6_addr *local_addr,
+				      struct in6_addr *remote_addr,
+				      u16_t local_port,
+				      u16_t remote_port)
 {
 	static const char payload[] = "foobar";
+	struct net_pkt *pkt;
+
+	pkt = net_pkt_alloc_with_buffer(iface, strlen(payload),
+					AF_INET6, IPPROTO_UDP, K_FOREVER);
 
 	NET_IPV6_HDR(pkt)->vtc = 0x60;
 	NET_IPV6_HDR(pkt)->tcflow = 0;
@@ -1139,40 +1066,27 @@
 	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
 	net_pkt_set_ipv6_ext_len(pkt, 0);
 
-	net_buf_add(pkt->frags, net_pkt_ip_hdr_len(pkt) +
-				sizeof(struct net_udp_hdr));
+	net_buf_add(pkt->buffer, net_pkt_ip_hdr_len(pkt) +
+		    sizeof(struct net_udp_hdr));
 
 	NET_UDP_HDR(pkt)->src_port = htons(local_port);
 	NET_UDP_HDR(pkt)->dst_port = htons(remote_port);
 
-	net_buf_add_mem(pkt->frags, payload, strlen(payload));
+	net_buf_add_mem(pkt->buffer, payload, strlen(payload));
+
+	net_pkt_cursor_init(pkt);
+
+	return pkt;
 }
 
 static enum net_verdict recv_msg(struct in6_addr *src, struct in6_addr *dst)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
-
-	NET_ASSERT_INFO(pkt, "Out of TX packets");
-
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
-	net_pkt_lladdr_clear(pkt);
-
-	setup_ipv6_udp(pkt, src, dst, 4242, 4321);
-
-	net_pkt_cursor_init(pkt);
+	pkt = setup_ipv6_udp(iface, src, dst, 4242, 4321);
 
 	/* We by-pass the normal packet receiving flow in this case in order
 	 * to simplify the testing.
@@ -1183,26 +1097,11 @@
 static int send_msg(struct in6_addr *src, struct in6_addr *dst)
 {
 	struct net_pkt *pkt;
-	struct net_buf *frag;
 	struct net_if *iface;
 
 	iface = net_if_get_default();
 
-	pkt = net_pkt_get_reserve_tx(K_FOREVER);
-
-	NET_ASSERT_INFO(pkt, "Out of TX packets");
-
-	frag = net_pkt_get_frag(pkt, K_FOREVER);
-
-	net_pkt_frag_add(pkt, frag);
-
-	net_pkt_set_iface(pkt, iface);
-	net_pkt_set_family(pkt, AF_INET6);
-	net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv6_hdr));
-
-	net_pkt_lladdr_clear(pkt);
-
-	setup_ipv6_udp(pkt, src, dst, 4242, 4321);
+	pkt = setup_ipv6_udp(iface, src, dst, 4242, 4321);
 
 	return net_send_data(pkt);
 }