tests/net: Switch MLD to new net_pkt API

Switch to new allocators and r/w functions.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
Tomasz Bursztyka 2019-03-06 14:34:51 +01:00 committed by Anas Nashif
parent 07d34b0f3e
commit 2a18ec99bf

View File

@ -110,7 +110,7 @@ static int tester_send(struct device *dev, struct net_pkt *pkt)
{
struct net_icmp_hdr *icmp;
if (!pkt->frags) {
if (!pkt->buffer) {
TC_ERROR("No data to send!\n");
return -ENODATA;
}
@ -320,60 +320,50 @@ static void send_query(struct net_if *iface)
{
struct net_pkt *pkt;
struct in6_addr dst;
u16_t pos;
/* Sent to all MLDv2-capable routers */
net_ipv6_addr_create(&dst, 0xff02, 0, 0, 0, 0, 0, 0, 0x0016);
pkt = net_pkt_get_reserve_tx(K_FOREVER);
/* router alert opt + icmpv6 reserved space + mldv2 mcast record */
pkt = net_pkt_alloc_with_buffer(iface, 144, AF_INET6,
IPPROTO_ICMPV6, K_FOREVER);
pkt = net_ipv6_create(pkt,
&peer_addr,
&dst,
iface,
NET_IPV6_NEXTHDR_HBHO);
NET_IPV6_HDR(pkt)->hop_limit = 1; /* RFC 3810 ch 7.4 */
net_pkt_set_ipv6_hop_limit(pkt, 1); /* RFC 3810 ch 7.4 */
net_ipv6_create_new(pkt, &peer_addr, &dst);
/* Add hop-by-hop option and router alert option, RFC 3810 ch 5. */
net_pkt_append_u8(pkt, IPPROTO_ICMPV6);
net_pkt_append_u8(pkt, 0); /* length (0 means 8 bytes) */
net_pkt_write_u8_new(pkt, IPPROTO_ICMPV6);
net_pkt_write_u8_new(pkt, 0); /* length (0 means 8 bytes) */
#define ROUTER_ALERT_LEN 8
/* IPv6 router alert option is described in RFC 2711. */
net_pkt_append_be16(pkt, 0x0502); /* RFC 2711 ch 2.1 */
net_pkt_append_be16(pkt, 0); /* pkt contains MLD msg */
net_pkt_write_be16_new(pkt, 0x0502); /* RFC 2711 ch 2.1 */
net_pkt_write_be16_new(pkt, 0); /* pkt contains MLD msg */
net_pkt_append_u8(pkt, 1); /* padn */
net_pkt_append_u8(pkt, 0); /* padn len */
/* ICMPv6 header */
net_pkt_append_u8(pkt, NET_ICMPV6_MLD_QUERY); /* type */
net_pkt_append_u8(pkt, 0); /* code */
net_pkt_append_be16(pkt, 0); /* chksum */
net_pkt_append_be16(pkt, 3); /* maximum response code */
net_pkt_append_be16(pkt, 0); /* reserved field */
net_pkt_append_all(pkt, sizeof(struct in6_addr),
(const u8_t *)net_ipv6_unspecified_address(),
K_FOREVER); /* multicast address */
net_pkt_append_be16(pkt, 0); /* Resv, S, QRV and QQIC */
net_pkt_append_be16(pkt, 0); /* number of addresses */
net_pkt_write_u8_new(pkt, 1); /* padn */
net_pkt_write_u8_new(pkt, 0); /* padn len */
net_pkt_set_ipv6_ext_len(pkt, ROUTER_ALERT_LEN);
/* ICMPv6 header */
net_icmpv6_create(pkt, NET_ICMPV6_MLD_QUERY, 0);
net_pkt_write_be16_new(pkt, 3); /* maximum response code */
net_pkt_write_be16_new(pkt, 0); /* reserved field */
net_pkt_set_ipv6_next_hdr(pkt, NET_IPV6_NEXTHDR_HBHO);
net_pkt_write_be16_new(pkt, 0); /* Resv, S, QRV and QQIC */
net_pkt_write_be16_new(pkt, 0); /* number of addresses */
net_pkt_write_new(pkt, net_ipv6_unspecified_address(),
sizeof(struct in6_addr));
net_pkt_cursor_init(pkt);
net_ipv6_finalize(pkt, NET_IPV6_NEXTHDR_HBHO);
net_pkt_set_iface(pkt, iface);
net_pkt_write_be16(pkt, pkt->frags,
NET_IPV6H_LEN + ROUTER_ALERT_LEN + 2,
&pos, ntohs(net_calc_chksum_icmpv6(pkt)));
net_ipv6_finalize(pkt, IPPROTO_ICMPV6);
net_pkt_cursor_init(pkt);
net_recv_data(iface, pkt);
}
@ -384,6 +374,8 @@ static enum net_verdict handle_mld_query(struct net_pkt *pkt,
{
is_query_received = true;
NET_DBG("Handling MLD query");
return NET_DROP;
}
@ -412,15 +404,12 @@ static void catch_query(void)
}
is_query_received = false;
net_icmpv6_unregister_handler(&mld_query_input_handler);
}
static void verify_send_report(void)
{
/* We need to remove our temporary handler so that the
* stack handler is called instead.
*/
net_icmpv6_unregister_handler(&mld_query_input_handler);
is_query_received = false;
is_report_sent = false;