handling of (output interface == input interface)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

I am looking at a case to see how Linux handles a (broadcast) packet NOT
meant for the machine, that somehow gets to ip_rcv() obviously through
non-Ethernet hardware e.g. over a serial link.

I have spent some time trying to understanding the ip_rcv_finish() and
ip_route_input() code and it seems that it just sets the flags for
REDIRECT and calls ip_forward().

---------- snippet of ip_route_input_slow() in route.c -------------

if (out_dev == in_dev && err && !(flags & (RTCF_NAT | RTCF_MASQ)) &&
	    (IN_DEV_SHARED_MEDIA(out_dev) ||
	     inet_addr_onlink(out_dev, saddr, FIB_RES_GW(res))))
		flags |= RTCF_DOREDIRECT;
--------------------------------------------------------------------

Thus, the packet is sent out over the incoming interface and a ICMP
redirect is sent.

Is this understanding correct?

TIA.

Regards,
Amit

-- 
----------------------------------------------------------------------
Amit Kucheria          akucheria@ NOSPAM metricsystems.com
Metric Systems Corp.   2320 Cousteau Court, Suite 201, Vista, CA 92083
----------------------------------------------------------------------

-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux