Thank you. Would it be better to do instead: + if_index = skb->skb_iif;
or + if_index = ip_version == 4 ? inet_iif(skb) : skb->skb_iif; > On Mar 19, 2021, at 7:55 AM, David Ahern <dsah...@gmail.com> wrote: > > On 3/17/21 4:19 PM, ishaangandhi wrote: >> +void icmp_identify_arrival_interface(struct sk_buff *skb, struct net *net, >> int room, >> + char *icmph, int ip_version) >> +{ >> + unsigned int ext_len, orig_len, word_aligned_orig_len, offset, >> extra_space_needed, >> + if_index, mtu = 0, name_len = 0, name_subobj_len = 0; >> + struct interface_ipv4_addr_sub_obj ip4_addr_subobj = {.addr = 0}; >> + struct interface_ipv6_addr_sub_obj ip6_addr_subobj; >> + struct icmp_extobj_hdr *iio_hdr; >> + struct inet6_ifaddr ip6_ifaddr; >> + struct inet6_dev *dev6 = NULL; >> + struct icmp_ext_hdr *ext_hdr; >> + char *name = NULL, ctype; >> + struct net_device *dev; >> + void *subobj_offset; >> + >> + skb_linearize(skb); >> + if_index = inet_iif(skb); > > inet_iif is an IPv4 helper; it should not be used for v6 skb's. >