--- zzzz-none-000/linux-4.9.279/net/ipv4/icmp.c 2021-08-08 06:38:54.000000000 +0000 +++ puma7-atom-6591-750/linux-4.9.279/net/ipv4/icmp.c 2023-02-08 11:43:43.000000000 +0000 @@ -97,6 +97,7 @@ #include #include #include +#include /* * Build xmit assembly blocks @@ -414,6 +415,9 @@ inet->tos = ip_hdr(skb)->tos; sk->sk_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); ipc.opt = NULL; ipc.tx_flags = 0; @@ -429,9 +433,16 @@ fl4.daddr = daddr; fl4.saddr = saddr; fl4.flowi4_mark = mark; + fl4.flowi4_uid = sock_net_uid(net, NULL); 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(&fl4)); rt = ip_route_output_key(net, &fl4); if (IS_ERR(rt)) @@ -477,6 +488,7 @@ param->replyopts.opt.opt.faddr : iph->saddr); fl4->saddr = saddr; fl4->flowi4_mark = mark; + fl4->flowi4_uid = sock_net_uid(net, NULL); fl4->flowi4_tos = RT_TOS(tos); fl4->flowi4_proto = IPPROTO_ICMP; fl4->fl4_icmp_type = type; @@ -706,6 +718,9 @@ ipc.ttl = 0; ipc.tos = -1; +#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)) @@ -1089,6 +1104,8 @@ } } + avm_pa_add_local_session(AVM_PA_NET_IP_DEVINFO(dev_net(skb->dev)), skb, NULL); + success = icmp_pointers[icmph->type].handler(skb); if (success) {