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 memcpy(net_pkt_lladdr_dst(pkt)->addr, pkt->buffer->data, in net_icmpv6_send_error()
270 ret = net_pkt_write(pkt, net_pkt_lladdr_dst(orig)->addr, in net_icmpv6_send_error()
277 net_buf_pull_mem(pkt->buffer, net_pkt_lladdr_dst(orig)->len); in net_icmpv6_send_error()
279 memcpy(net_pkt_lladdr_src(pkt)->addr, pkt->buffer->data, in net_icmpv6_send_error()
282 net_buf_pull_mem(pkt->buffer, net_pkt_lladdr_src(orig)->len); in net_icmpv6_send_error()
284 net_pkt_lladdr_src(pkt)->len = net_pkt_lladdr_dst(orig)->len; in net_icmpv6_send_error()
285 net_pkt_lladdr_dst(pkt)->len = net_pkt_lladdr_src(orig)->len; in net_icmpv6_send_error()
288 src = net_if_ipv6_select_src_addr(net_pkt_iface(pkt), in net_icmpv6_send_error()
294 if (net_ipv6_create(pkt, src, (struct in6_addr *)ip_hdr->src) || in net_icmpv6_send_error()
295 net_icmpv6_create(pkt, type, code)) { in net_icmpv6_send_error()
302 err = net_pkt_write_be32(pkt, param); in net_icmpv6_send_error()
304 err = net_pkt_memset(pkt, 0, NET_ICMPV6_UNUSED_LEN); in net_icmpv6_send_error()
310 copy_len = net_pkt_available_buffer(pkt); in net_icmpv6_send_error()
312 if (err || net_pkt_copy(pkt, orig, copy_len)) { in net_icmpv6_send_error()
316 net_pkt_cursor_init(pkt); in net_icmpv6_send_error()
317 net_ipv6_finalize(pkt, IPPROTO_ICMPV6); in net_icmpv6_send_error()
324 if (net_try_send_data(pkt, K_NO_WAIT) >= 0) { in net_icmpv6_send_error()
325 net_stats_update_icmp_sent(net_pkt_iface(pkt)); in net_icmpv6_send_error()
330 net_pkt_unref(pkt); in net_icmpv6_send_error()
338 enum net_verdict net_icmpv6_input(struct net_pkt *pkt, in net_icmpv6_input() argument
346 icmp_hdr = (struct net_icmp_hdr *)net_pkt_get_data(pkt, &icmp_access); in net_icmpv6_input()
353 if (net_if_need_calc_rx_checksum(net_pkt_iface(pkt), NET_IF_CHECKSUM_IPV6_ICMP) || in net_icmpv6_input()
354 net_pkt_is_ip_reassembled(pkt)) { in net_icmpv6_input()
355 if (net_calc_chksum_icmpv6(pkt) != 0U) { in net_icmpv6_input()
361 net_pkt_acknowledge_data(pkt, &icmp_access); in net_icmpv6_input()
367 net_stats_update_icmp_recv(net_pkt_iface(pkt)); in net_icmpv6_input()
369 ret = net_icmp_call_ipv6_handlers(pkt, ip_hdr, icmp_hdr); in net_icmpv6_input()
374 net_pkt_unref(pkt); in net_icmpv6_input()
379 net_stats_update_icmp_drop(net_pkt_iface(pkt)); in net_icmpv6_input()