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:
parent
07d34b0f3e
commit
2a18ec99bf
@ -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;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user