Greetings,

I use the IP_PKTINFO to detect ipi_ifindex from which the packet was arrived, it used to work for local addresses also.

For local addresses ipi_ifindex always returned 1, but starting from Linux 4.14 ip_ifindex began to return various values.

Example host configuration:
1:  lo:   127.0.0.1
2:  eth0: 192.168.3.45
3:  eth1: 192.168.4.45

I use sendto() with addresses {127.0.0.1, 192.168.3.45 and 192.168.4.45}, call recvmsg() and than use standard procedure to get ipi_ifindex, it shows results:

                 |      ipi_ifindex     |      ipi_ifindex
 sendto(address) |   Linux ver < 4.14   |   Linux ver >= 4.14
---------------------------------------------------------------
  127.0.0.1      |          1           |           1
---------------------------------------------------------------
  192.168.3.45   |          1           |           2
---------------------------------------------------------------
  192.168.4.45   |          1           |           3


It seems that this behavior depends from commit:
net: ipv4: set orig_oif based on fib result for local traffic

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.14.y&id=839da4d98960bcc68e6b7b945b33ad3916ec1e92

I believe that ipi_ifindex for local addresses should be 1.
Is there a Bug for Linux >= 4.14 or is this a valid behavior?



************************
Thanks,
Damir Mansurov
dn...@oktetlabs.ru

Reply via email to