Lines Matching refs:pkt
60 int net_icmpv6_finalize(struct net_pkt *pkt, bool force_chksum) in net_icmpv6_finalize() argument
66 icmp_hdr = (struct net_icmp_hdr *)net_pkt_get_data(pkt, &icmp_access); in net_icmpv6_finalize()
72 if (net_if_need_calc_tx_checksum(net_pkt_iface(pkt), NET_IF_CHECKSUM_IPV6_ICMP) || in net_icmpv6_finalize()
74 icmp_hdr->chksum = net_calc_chksum_icmpv6(pkt); in net_icmpv6_finalize()
75 net_pkt_set_chksum_done(pkt, true); in net_icmpv6_finalize()
78 return net_pkt_set_data(pkt, &icmp_access); in net_icmpv6_finalize()
81 int net_icmpv6_create(struct net_pkt *pkt, uint8_t icmp_type, uint8_t icmp_code) in net_icmpv6_create() argument
87 icmp_hdr = (struct net_icmp_hdr *)net_pkt_get_data(pkt, &icmp_access); in net_icmpv6_create()
96 return net_pkt_set_data(pkt, &icmp_access); in net_icmpv6_create()
100 struct net_pkt *pkt, in icmpv6_handle_echo_request() argument
118 net_pkt_ipv6_ext_len(pkt) - NET_ICMPH_LEN; in icmpv6_handle_echo_request()
124 reply = net_pkt_alloc_with_buffer(net_pkt_iface(pkt), payload_len, in icmpv6_handle_echo_request()
133 src = net_if_ipv6_select_src_addr(net_pkt_iface(pkt), in icmpv6_handle_echo_request()
151 net_pkt_set_ip_dscp(reply, net_pkt_ip_dscp(pkt)); in icmpv6_handle_echo_request()
152 net_pkt_set_ip_ecn(reply, net_pkt_ip_ecn(pkt)); in icmpv6_handle_echo_request()
160 net_pkt_copy(reply, pkt, payload_len)) { in icmpv6_handle_echo_request()
185 net_stats_update_icmp_drop(net_pkt_iface(pkt)); in icmpv6_handle_echo_request()
197 struct net_pkt *pkt; in net_icmpv6_send_error() local
236 pkt = net_pkt_alloc_with_buffer(net_pkt_iface(orig), in net_icmpv6_send_error()
241 if (!pkt) { in net_icmpv6_send_error()
260 ret = net_pkt_write(pkt, net_pkt_lladdr_src(orig)->addr, in net_icmpv6_send_error()
267 net_pkt_lladdr_dst(pkt)->addr = pkt->buffer->data; in net_icmpv6_send_error()
269 ret = net_pkt_write(pkt, net_pkt_lladdr_dst(orig)->addr, in net_icmpv6_send_error()
276 net_buf_pull_mem(pkt->buffer, net_pkt_lladdr_dst(orig)->len); in net_icmpv6_send_error()
278 net_pkt_lladdr_src(pkt)->addr = pkt->buffer->data; in net_icmpv6_send_error()
280 net_buf_pull_mem(pkt->buffer, net_pkt_lladdr_src(orig)->len); in net_icmpv6_send_error()
282 net_pkt_lladdr_src(pkt)->len = net_pkt_lladdr_dst(orig)->len; in net_icmpv6_send_error()
283 net_pkt_lladdr_dst(pkt)->len = net_pkt_lladdr_src(orig)->len; in net_icmpv6_send_error()
286 src = net_if_ipv6_select_src_addr(net_pkt_iface(pkt), in net_icmpv6_send_error()
292 if (net_ipv6_create(pkt, src, (struct in6_addr *)ip_hdr->src) || in net_icmpv6_send_error()
293 net_icmpv6_create(pkt, type, code)) { in net_icmpv6_send_error()
300 err = net_pkt_write_be32(pkt, param); in net_icmpv6_send_error()
302 err = net_pkt_memset(pkt, 0, NET_ICMPV6_UNUSED_LEN); in net_icmpv6_send_error()
308 copy_len = net_pkt_available_buffer(pkt); in net_icmpv6_send_error()
310 if (err || net_pkt_copy(pkt, orig, copy_len)) { in net_icmpv6_send_error()
314 net_pkt_cursor_init(pkt); in net_icmpv6_send_error()
315 net_ipv6_finalize(pkt, IPPROTO_ICMPV6); in net_icmpv6_send_error()
322 if (net_send_data(pkt) >= 0) { in net_icmpv6_send_error()
323 net_stats_update_icmp_sent(net_pkt_iface(pkt)); in net_icmpv6_send_error()
328 net_pkt_unref(pkt); in net_icmpv6_send_error()
336 enum net_verdict net_icmpv6_input(struct net_pkt *pkt, in net_icmpv6_input() argument
344 icmp_hdr = (struct net_icmp_hdr *)net_pkt_get_data(pkt, &icmp_access); in net_icmpv6_input()
351 if (net_if_need_calc_rx_checksum(net_pkt_iface(pkt), NET_IF_CHECKSUM_IPV6_ICMP) || in net_icmpv6_input()
352 net_pkt_is_ip_reassembled(pkt)) { in net_icmpv6_input()
353 if (net_calc_chksum_icmpv6(pkt) != 0U) { in net_icmpv6_input()
359 net_pkt_acknowledge_data(pkt, &icmp_access); in net_icmpv6_input()
365 net_stats_update_icmp_recv(net_pkt_iface(pkt)); in net_icmpv6_input()
367 ret = net_icmp_call_ipv6_handlers(pkt, ip_hdr, icmp_hdr); in net_icmpv6_input()
372 net_pkt_unref(pkt); in net_icmpv6_input()
377 net_stats_update_icmp_drop(net_pkt_iface(pkt)); in net_icmpv6_input()