Lines Matching refs:pkt
45 struct net_pkt *pkt; member
50 static int mld_create(struct net_pkt *pkt, in mld_create() argument
59 net_pkt_get_data(pkt, &mld_access); in mld_create()
70 if (net_pkt_set_data(pkt, &mld_access)) { in mld_create()
77 static int mld_create_packet(struct net_pkt *pkt, uint16_t count) in mld_create_packet() argument
84 net_pkt_set_ipv6_hop_limit(pkt, 1); /* RFC 3810 ch 7.4 */ in mld_create_packet()
86 if (net_ipv6_create(pkt, net_if_ipv6_select_src_addr( in mld_create_packet()
87 net_pkt_iface(pkt), &dst), in mld_create_packet()
93 if (net_pkt_write_u8(pkt, IPPROTO_ICMPV6) || in mld_create_packet()
94 net_pkt_write_u8(pkt, 0)) { in mld_create_packet()
103 if (net_pkt_write_be16(pkt, 0x0502) || in mld_create_packet()
104 net_pkt_write_be16(pkt, 0) || in mld_create_packet()
105 net_pkt_write_be16(pkt, 0)) { in mld_create_packet()
109 net_pkt_set_ipv6_ext_len(pkt, IPV6_OPT_HDR_ROUTER_ALERT_LEN); in mld_create_packet()
114 if (net_icmpv6_create(pkt, NET_ICMPV6_MLDv2, 0) || in mld_create_packet()
115 net_pkt_write_be16(pkt, 0) || in mld_create_packet()
116 net_pkt_write_be16(pkt, count)) { in mld_create_packet()
120 net_pkt_set_ipv6_next_hdr(pkt, NET_IPV6_NEXTHDR_HBHO); in mld_create_packet()
125 static int mld_send(struct net_pkt *pkt) in mld_send() argument
129 net_pkt_cursor_init(pkt); in mld_send()
130 net_ipv6_finalize(pkt, IPPROTO_ICMPV6); in mld_send()
132 ret = net_send_data(pkt); in mld_send()
134 net_stats_update_icmp_drop(net_pkt_iface(pkt)); in mld_send()
135 net_stats_update_ipv6_mld_drop(net_pkt_iface(pkt)); in mld_send()
137 net_pkt_unref(pkt); in mld_send()
142 net_stats_update_icmp_sent(net_pkt_iface(pkt)); in mld_send()
143 net_stats_update_ipv6_mld_sent(net_pkt_iface(pkt)); in mld_send()
175 info->status = mld_create(info->pkt, &entry->group, NET_IPV6_MLDv2_MODE_IS_EXCLUDE); in append_mcast_routes()
181 struct net_pkt *pkt; in net_ipv6_mld_send_single() local
184 pkt = net_pkt_alloc_with_buffer(iface, IPV6_OPT_HDR_ROUTER_ALERT_LEN + in net_ipv6_mld_send_single()
190 if (!pkt) { in net_ipv6_mld_send_single()
194 if (mld_create_packet(pkt, 1) || in net_ipv6_mld_send_single()
195 mld_create(pkt, addr, mode)) { in net_ipv6_mld_send_single()
200 ret = mld_send(pkt); in net_ipv6_mld_send_single()
208 net_pkt_unref(pkt); in net_ipv6_mld_send_single()
289 struct net_pkt *pkt; in send_mld_report() local
311 pkt = net_pkt_alloc_with_buffer(iface, IPV6_OPT_HDR_ROUTER_ALERT_LEN + in send_mld_report()
316 if (!pkt) { in send_mld_report()
320 ret = mld_create_packet(pkt, count); in send_mld_report()
330 ret = mld_create(pkt, &ipv6->mcast[i].address.in6_addr, in send_mld_report()
344 info.pkt = pkt; in send_mld_report()
359 net_pkt_cursor_init(pkt); in send_mld_report()
360 net_pkt_set_overwrite(pkt, true); in send_mld_report()
362 net_pkt_skip(pkt, net_pkt_ip_hdr_len(pkt) + net_pkt_ipv6_ext_len(pkt) + in send_mld_report()
367 ret = net_pkt_write_be16(pkt, count); in send_mld_report()
372 net_pkt_remove_tail(pkt, info.skipped * sizeof(struct net_icmpv6_mld_mcast_record)); in send_mld_report()
376 ret = mld_send(pkt); in send_mld_report()
384 net_pkt_unref(pkt); in send_mld_report()
400 struct net_pkt *pkt, in handle_mld_query() argument
408 uint16_t length = net_pkt_get_len(pkt); in handle_mld_query()
413 if (net_pkt_remaining_data(pkt) < sizeof(struct net_icmpv6_mld_query)) { in handle_mld_query()
420 net_pkt_get_data(pkt, &mld_access); in handle_mld_query()
426 net_pkt_acknowledge_data(pkt, &mld_access); in handle_mld_query()
430 net_stats_update_ipv6_mld_recv(net_pkt_iface(pkt)); in handle_mld_query()
434 pkt_len = sizeof(struct net_ipv6_hdr) + net_pkt_ipv6_ext_len(pkt) + in handle_mld_query()
451 return send_mld_report(net_pkt_iface(pkt)); in handle_mld_query()
454 net_stats_update_ipv6_mld_drop(net_pkt_iface(pkt)); in handle_mld_query()