Lines Matching refs:pkt
35 int net_ipv4_create_full(struct net_pkt *pkt, in net_ipv4_create_full() argument
46 ipv4_hdr = (struct net_ipv4_hdr *)net_pkt_get_data(pkt, &ipv4_access); in net_ipv4_create_full()
59 ipv4_hdr->ttl = net_pkt_ipv4_ttl(pkt); in net_ipv4_create_full()
62 if (net_pkt_context(pkt) != NULL) { in net_ipv4_create_full()
64 net_context_get_ipv4_mcast_ttl(net_pkt_context(pkt)); in net_ipv4_create_full()
66 ipv4_hdr->ttl = net_if_ipv4_get_mcast_ttl(net_pkt_iface(pkt)); in net_ipv4_create_full()
69 if (net_pkt_context(pkt) != NULL) { in net_ipv4_create_full()
71 net_context_get_ipv4_ttl(net_pkt_context(pkt)); in net_ipv4_create_full()
73 ipv4_hdr->ttl = net_if_ipv4_get_ttl(net_pkt_iface(pkt)); in net_ipv4_create_full()
84 net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv4_hdr)); in net_ipv4_create_full()
86 return net_pkt_set_data(pkt, &ipv4_access); in net_ipv4_create_full()
89 int net_ipv4_create(struct net_pkt *pkt, in net_ipv4_create() argument
97 net_ipv4_set_dscp(&tos, net_pkt_ip_dscp(pkt)); in net_ipv4_create()
98 net_ipv4_set_ecn(&tos, net_pkt_ip_ecn(pkt)); in net_ipv4_create()
101 if (IS_ENABLED(CONFIG_NET_IPV4_PMTU) && net_pkt_ipv4_pmtu(pkt)) { in net_ipv4_create()
105 return net_ipv4_create_full(pkt, src, dst, tos, 0U, flags, 0U); in net_ipv4_create()
108 int net_ipv4_finalize(struct net_pkt *pkt, uint8_t next_header_proto) in net_ipv4_finalize() argument
113 net_pkt_set_overwrite(pkt, true); in net_ipv4_finalize()
115 ipv4_hdr = (struct net_ipv4_hdr *)net_pkt_get_data(pkt, &ipv4_access); in net_ipv4_finalize()
121 if (net_pkt_ipv4_opts_len(pkt)) { in net_ipv4_finalize()
123 ((net_pkt_ip_hdr_len(pkt) + in net_ipv4_finalize()
124 net_pkt_ipv4_opts_len(pkt)) / 4U)); in net_ipv4_finalize()
128 ipv4_hdr->len = htons(net_pkt_get_len(pkt)); in net_ipv4_finalize()
131 if (net_if_need_calc_tx_checksum(net_pkt_iface(pkt), NET_IF_CHECKSUM_IPV4_HEADER)) { in net_ipv4_finalize()
132 ipv4_hdr->chksum = net_calc_chksum_ipv4(pkt); in net_ipv4_finalize()
135 net_pkt_set_data(pkt, &ipv4_access); in net_ipv4_finalize()
139 return net_udp_finalize(pkt, false); in net_ipv4_finalize()
142 return net_tcp_finalize(pkt, false); in net_ipv4_finalize()
144 return net_icmpv4_finalize(pkt, false); in net_ipv4_finalize()
151 int net_ipv4_parse_hdr_options(struct net_pkt *pkt, in net_ipv4_parse_hdr_options() argument
163 net_pkt_cursor_backup(pkt, &cur); in net_ipv4_parse_hdr_options()
164 net_pkt_cursor_init(pkt); in net_ipv4_parse_hdr_options()
166 if (net_pkt_skip(pkt, sizeof(struct net_ipv4_hdr))) { in net_ipv4_parse_hdr_options()
170 total_opts_len = net_pkt_ipv4_opts_len(pkt); in net_ipv4_parse_hdr_options()
176 if (net_pkt_read_u8(pkt, &opt_type)) { in net_ipv4_parse_hdr_options()
184 if (net_pkt_read_u8(pkt, &opt_len)) { in net_ipv4_parse_hdr_options()
215 if (net_pkt_read(pkt, opt_data, opt_len)) { in net_ipv4_parse_hdr_options()
225 if (net_pkt_skip(pkt, opt_len)) { in net_ipv4_parse_hdr_options()
235 net_pkt_cursor_restore(pkt, &cur); in net_ipv4_parse_hdr_options()
241 enum net_verdict net_ipv4_input(struct net_pkt *pkt, bool is_loopback) in net_ipv4_input() argument
246 int real_len = net_pkt_get_len(pkt); in net_ipv4_input()
258 net_pkt_cursor_backup(pkt, &hdr_start); in net_ipv4_input()
261 net_stats_update_ipv4_recv(net_pkt_iface(pkt)); in net_ipv4_input()
263 hdr = (struct net_ipv4_hdr *)net_pkt_get_data(pkt, &ipv4_access); in net_ipv4_input()
275 net_pkt_set_ip_hdr_len(pkt, sizeof(struct net_ipv4_hdr)); in net_ipv4_input()
278 net_pkt_set_ip_dscp(pkt, net_ipv4_get_dscp(hdr->tos)); in net_ipv4_input()
279 net_pkt_set_ip_ecn(pkt, net_ipv4_get_ecn(hdr->tos)); in net_ipv4_input()
291 net_pkt_set_ipv4_opts_len(pkt, opts_len); in net_ipv4_input()
299 net_pkt_update_length(pkt, pkt_len); in net_ipv4_input()
320 if (net_ipv4_is_addr_bcast(net_pkt_iface(pkt), (struct in_addr *)hdr->src)) { in net_ipv4_input()
326 !net_ipv4_is_addr_bcast(net_pkt_iface(pkt), (struct in_addr *)hdr->dst) && in net_ipv4_input()
332 if (net_if_need_calc_rx_checksum(net_pkt_iface(pkt), NET_IF_CHECKSUM_IPV4_HEADER) && in net_ipv4_input()
333 net_calc_chksum_ipv4(pkt) != 0U) { in net_ipv4_input()
338 net_pkt_set_ipv4_ttl(pkt, hdr->ttl); in net_ipv4_input()
340 net_pkt_set_family(pkt, PF_INET); in net_ipv4_input()
342 if (!net_pkt_filter_ip_recv_ok(pkt)) { in net_ipv4_input()
355 net_dhcpv4_accept_unicast(pkt)))) || in net_ipv4_input()
357 net_ipv4_is_addr_bcast(net_pkt_iface(pkt), (struct in_addr *)hdr->dst))) { in net_ipv4_input()
362 net_pkt_acknowledge_data(pkt, &ipv4_access); in net_ipv4_input()
366 if (net_pkt_skip(pkt, opts_len)) { in net_ipv4_input()
376 return net_ipv4_handle_fragment_hdr(pkt, hdr); in net_ipv4_input()
386 verdict = net_icmpv4_input(pkt, hdr); in net_ipv4_input()
393 verdict = net_ipv4_igmp_input(pkt, hdr); in net_ipv4_input()
400 proto_hdr.tcp = net_tcp_input(pkt, &tcp_access); in net_ipv4_input()
406 proto_hdr.udp = net_udp_input(pkt, &udp_access); in net_ipv4_input()
421 net_pkt_set_remote_address(pkt, (struct sockaddr *)&remote_addr, in net_ipv4_input()
425 net_pkt_cursor_restore(pkt, &hdr_start); in net_ipv4_input()
426 net_pkt_pull(pkt, net_pkt_ip_hdr_len(pkt) + in net_ipv4_input()
427 net_pkt_ipv4_opts_len(pkt)); in net_ipv4_input()
429 tunnel_iface = net_ipip_get_virtual_interface(net_pkt_iface(pkt)); in net_ipv4_input()
431 return net_if_l2(tunnel_iface)->recv(net_pkt_iface(pkt), pkt); in net_ipv4_input()
443 verdict = net_conn_input(pkt, &ip, hdr->proto, &proto_hdr); in net_ipv4_input()
449 net_stats_update_ipv4_drop(net_pkt_iface(pkt)); in net_ipv4_input()
453 enum net_verdict net_ipv4_prepare_for_send(struct net_pkt *pkt) in net_ipv4_prepare_for_send() argument
463 NET_IPV4_HDR(pkt)->dst); in net_ipv4_prepare_for_send()
467 net_if_get_mtu(net_pkt_iface(pkt))); in net_ipv4_prepare_for_send()
477 return net_ipv4_prepare_for_send_fragment(pkt); in net_ipv4_prepare_for_send()