interface ip arp

Li, Qing qing.li at bluecoat.com
Tue May 3 19:38:13 UTC 2011


Okay, please give the following patch a try, which should give the behaviors that
you observe in R6.x and R7.x.

	http://people.freebsd.org/~qingli/arp3.patch

Thanks,

--Qing


> -----Original Message-----
> From: Arnaud Lacombe [mailto:lacombar at gmail.com]
> Sent: Monday, May 02, 2011 9:06 AM
> To: Li, Qing
> Cc: freebsd-net at freebsd.org; Ingo Flaschberger
> Subject: Re: interface ip arp
> 
> Hi,
> 
> On Mon, May 2, 2011 at 4:03 AM, Li, Qing <qing.li at bluecoat.com> wrote:
> > Please give this patch a try for IPv4 ARP
> >
> > http://people.freebsd.org/~qingli/arp2.patch
> >
> Your patch works; the manually added address is kept upon a up/down/up
> transition. However, the interface address is still flush, which I
> find inconsistent with it being marked 'permanent'.
> 
>  - Arnaud
> 
> > --Qing
> >
> > ________________________________________
> > From: owner-freebsd-net at freebsd.org [owner-freebsd-net at freebsd.org]
> on behalf of Li, Qing
> > Sent: Monday, May 02, 2011 12:45 AM
> > To: Arnaud Lacombe
> > Cc: freebsd-net at freebsd.org; Ingo Flaschberger
> > Subject: RE: interface ip arp
> >
> > Your patch doesn't work because the in_lltable_prefix_free() is  a
> generic function.
> >
> > The static entries are kept only when issuing if-down command,
> however, if the interface
> > address is being removed, permanent static entries are gone and have
> to be reinstalled.
> >
> > I already have a working patch for IPv4, just going over the IPv6
> code.
> >
> > I will post the patch in a few minutes.
> >
> > -- Qing
> >
> > ________________________________________
> > From: Arnaud Lacombe [lacombar at gmail.com]
> > Sent: Monday, May 02, 2011 12:41 AM
> > To: Li, Qing
> > Cc: Ingo Flaschberger; freebsd-net at freebsd.org
> > Subject: Re: interface ip arp
> >
> > Hi,
> >
> > On Sun, May 1, 2011 at 10:50 PM, Li, Qing <qing.li at bluecoat.com>
> wrote:
> >> jeez, this bug has been around for quite a while ...
> >>
> >> Please try patch at  http://people.freebsd.org/~qingli/arp.patch
> >>
> > d'oh!... Concerning Ingo's bug, your patch do the job, my report was
> > bad, 4.9-RELEASE and 7.x show the same behavior:
> >
> > # uname -a
> > FreeBSD server 7.1-RELEASE-p13 FreeBSD 7.1-RELEASE-p13
> > # ifconfig em0 up 192.168.45.200/24
> > # arp -n 192.168.45.200
> > ? (192.168.45.200) at 00:03:2d:16:6e:fc on em0 permanent [ethernet]
> > # ifconfig em0 down
> > # arp -n 192.168.45.200
> > 192.168.45.200 (192.168.45.200) -- no entry
> > # ifconfig em0 up
> > # arp -n 192.168.45.200
> > 192.168.45.200 (192.168.45.200) -- no entry
> >
> > The behavioral change I noticed is that permanent address (manually
> > added) in the ARP table are flushed along with all other addresses on
> >>8.x (cf. the script output of my previous mail) while they are kept
> > in the cache on <7.x during a down/up transition. The following patch:
> >
> > diff --git a/sys/netinet/in.c b/sys/netinet/in.c
> > index 1012012..27e44a2 100644
> > --- a/sys/netinet/in.c
> > +++ b/sys/netinet/in.c
> > @@ -1372,6 +1372,8 @@ in_lltable_prefix_free(struct lltable *llt,
> >
> >        for (i=0; i < LLTBL_HASHTBL_SIZE; i++) {
> >                LIST_FOREACH_SAFE(lle, &llt->lle_head[i], lle_next,
> next) {
> > +                       if (lle->la_flags & LLE_STATIC)
> > +                               continue;
> >                        if (IN_ARE_MASKED_ADDR_EQUAL((struct
> > sockaddr_in *)L3_ADDR(lle),
> >                                                     pfx, msk)) {
> >
> > partially restores the old behavior. Only partially as before 8.x,
> > interface addresses were not marked as 'permanent'. You could
> manually
> > add a 'permanent' entry for this address in such a way it would
> > survive the down/up transition. In 8.x, the interface address is
> > marked as 'permanent', but is removed explicitly by arp_ifscrub(). So
> > even the above change would not work for the interface address.
> >
> > Shouldn't this address be removed later when "removing all L2 entries
> > on the given prefix", in which case it would not have to be re-added
> > again, if marking it 'permanent' is deliberate ?
> >
> > Thanks,
> >  - Arnaud
> > _______________________________________________
> > freebsd-net at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-net
> > To unsubscribe, send any mail to "freebsd-net-
> unsubscribe at freebsd.org"
> >


More information about the freebsd-net mailing list