Hi,
This patch adds a bit in in_ifaddr.ifa_flag (IFA_F_NO_NDISC). If it is
set, the host doesn't answer to the neighbour's discovery request
for this address. Currently it is honored only by ipv4/arp.
This feature is usefull to support VRRP(rfc2338) which requires
to answer the ARP request for a 'virtual ip' with the proper
'virtual MAC'(rfc2338 section 8.2). So to potentially answer
a particular MAC for a particular IP, and not with the primary
MAC. As far as i know, it is currently impossible because linux
assumes to have a single MAC per physical interface. My plan is
to prevent the kernel from answering for the virtual ip addresses
and to answer from userspace.
It is the less intrusive solution i found to support several
'virtual routers' per physical interface. My vrrpd implementation
runs entirely in userspace but without this feature it can't support
several virtual routers per physical interface.
I am not sure that read_lock(&in_dev->lock) in inet_ifa_bylocal()
is the good way to lock but it seems the most reasonable to me.
please correct me if needed.
The patch is in 2 parts:
o the kernel 2.4.0-test1 modifications
o the iproute2-2.2.4-now-ss000305 modifications to set/report
the no_ndisc bit from userspace.
patch_no_ndisc.kernel
Description: Text document
patch_no_ndisc.iproute2
Description: Text document
|