--- zzzz-none-000/linux-5.15.111/net/ipv4/icmp.c 2023-05-11 14:00:40.000000000 +0000 +++ puma7-atom-6670-761/linux-5.15.111/net/ipv4/icmp.c 2024-02-07 10:23:30.000000000 +0000 @@ -92,6 +92,7 @@ #include #include #include +#include /* * Build xmit assembly blocks @@ -434,6 +435,9 @@ inet->tos = ip_hdr(skb)->tos; ipc.sockc.mark = mark; daddr = ipc.addr = ip_hdr(skb)->saddr; +#ifdef CONFIG_TI_META_DATA + ipc.ti_meta_info = 0; +#endif saddr = fib_compute_spec_dst(skb); if (icmp_param->replyopts.opt.opt.optlen) { @@ -449,6 +453,12 @@ fl4.flowi4_tos = RT_TOS(ip_hdr(skb)->tos); fl4.flowi4_proto = IPPROTO_ICMP; fl4.flowi4_oif = l3mdev_master_ifindex(skb->dev); + +#ifdef CONFIG_INTEL_DOCSIS_ICMP_IIF + if(skb->docsis_icmp_iif) + fl4.flowi4_oif = skb->docsis_icmp_iif; +#endif /* CONFIG_INTEL_DOCSIS_ICMP_IIF */ + security_skb_classify_flow(skb, flowi4_to_flowi_common(&fl4)); rt = ip_route_output_key(net, &fl4); if (IS_ERR(rt)) @@ -739,6 +749,9 @@ ipc.opt = &icmp_param.replyopts.opt; ipc.sockc.mark = mark; +#ifdef CONFIG_TI_META_DATA + ipc.ti_meta_info = 0; +#endif rt = icmp_route_lookup(net, &fl4, skb_in, iph, saddr, tos, mark, type, code, &icmp_param); if (IS_ERR(rt)) @@ -1265,6 +1278,8 @@ } } + avm_pa_add_local_session(AVM_PA_NET_IP_DEVINFO(dev_net(skb->dev)), skb, NULL); + success = icmp_pointers[icmph->type].handler(skb); success_check: if (success) {