On Tue, Jul 14, 2015 at 07:57:32PM +0200, Martin Pieuchot wrote: > On 07/07/15(Tue) 18:02, Martin Pieuchot wrote: > > Maybe not yet but at least I'd like to do the ARP request a bit later. > > > > We create a RTF_LOCAL route entry for every configured address. So > > use this information to emit a "who-has" for the configured address. > > > > This also has the advantage of *not* sending an ARP request if > > something wrong happens between the SIOCSIFADDR ioctl and the > > RTF_LOCAL route creation. > > Anybody? >
OK claudio@ > > Ok? > > > > Index: netinet/if_ether.c > > =================================================================== > > RCS file: /cvs/src/sys/netinet/if_ether.c,v > > retrieving revision 1.157 > > diff -u -p -r1.157 if_ether.c > > --- netinet/if_ether.c 7 Jul 2015 14:22:25 -0000 1.157 > > +++ netinet/if_ether.c 7 Jul 2015 15:56:15 -0000 > > @@ -196,8 +196,11 @@ arp_rtrequest(int req, struct rtentry *r > > if ((rt->rt_flags & RTF_CLONING) != 0) > > break; > > } > > - /* Announce a new entry if requested. */ > > - if (rt->rt_flags & RTF_ANNOUNCE) > > + /* > > + * Announce a new entry if requested or warn the user > > + * if another station has this IP address. > > + */ > > + if (rt->rt_flags & (RTF_ANNOUNCE|RTF_LOCAL)) > > arprequest(ifp, > > &satosin(rt_key(rt))->sin_addr.s_addr, > > &satosin(rt_key(rt))->sin_addr.s_addr, > > @@ -850,12 +853,6 @@ arpproxy(struct in_addr in, u_int rdomai > > void > > arp_ifinit(struct arpcom *ac, struct ifaddr *ifa) > > { > > - > > - /* Warn the user if another station has this IP address. */ > > - arprequest(&ac->ac_if, > > - &satosin(ifa->ifa_addr)->sin_addr.s_addr, > > - &satosin(ifa->ifa_addr)->sin_addr.s_addr, > > - ac->ac_enaddr); > > ifa->ifa_rtrequest = arp_rtrequest; > > } > > > > > -- :wq Claudio