From owner-freebsd-net@FreeBSD.ORG Mon May 2 16:05:43 2011 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AED61106566B for ; Mon, 2 May 2011 16:05:43 +0000 (UTC) (envelope-from lacombar@gmail.com) Received: from mail-iw0-f182.google.com (mail-iw0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id 6E8368FC0A for ; Mon, 2 May 2011 16:05:43 +0000 (UTC) Received: by iwn33 with SMTP id 33so6664317iwn.13 for ; Mon, 02 May 2011 09:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=PYESEjW3x6x6LUxxIht6fAATcsgIEwN8yyFwWtxW7RM=; b=AT3wDHWPwdcSEVqKJnTUxU5z3lJKEZNSEK6vMMASiPZgK42Fpvn3p+S/C+864Wm0nF CyDTyQhQNl7kR2LrRjC+0YC/UJFol7GSsIR2ABBoATnraBA9vt++C1YaP5skta5Z0QVL Jv1/GzprKXBtpzPWauoaQ1vqe/VQ9tpZkidZk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=rQz+PDqkke1ezjAVECNgezT2d921bc2/AGeqPGFZ5WuhjkakxWo9kVvO5LQ6wAsiIO ydsULzcNFU0CXU+GYtetUxQ59k1kCKEt8RUO5qwwAN+/VFuFNR+SUEy1MBGyiKYvgz3v dHuo3+fVgzMZvdKgqRU8Ahp34xgPByl1xuk0g= MIME-Version: 1.0 Received: by 10.42.139.5 with SMTP id e5mr5990801icu.136.1304352342380; Mon, 02 May 2011 09:05:42 -0700 (PDT) Received: by 10.42.165.132 with HTTP; Mon, 2 May 2011 09:05:42 -0700 (PDT) In-Reply-To: References: <10E473DB-A690-4468-953A-08D87AE07F68@bluecoat.com> Date: Mon, 2 May 2011 12:05:42 -0400 Message-ID: From: Arnaud Lacombe To: "Li, Qing" Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: "freebsd-net@freebsd.org" , Ingo Flaschberger Subject: Re: interface ip arp X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 May 2011 16:05:43 -0000 Hi, On Mon, May 2, 2011 at 4:03 AM, Li, Qing 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@freebsd.org [owner-freebsd-net@freebsd.org] on be= half of Li, Qing > Sent: Monday, May 02, 2011 12:45 AM > To: Arnaud Lacombe > Cc: freebsd-net@freebsd.org; Ingo Flaschberger > Subject: RE: interface ip arp > > Your patch doesn't work because the in_lltable_prefix_free() is =A0a gene= ric function. > > The static entries are kept only when issuing if-down command, however, i= f the interface > address is being removed, permanent static entries are gone and have to b= e 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@gmail.com] > Sent: Monday, May 02, 2011 12:41 AM > To: Li, Qing > Cc: Ingo Flaschberger; freebsd-net@freebsd.org > Subject: Re: interface ip arp > > Hi, > > On Sun, May 1, 2011 at 10:50 PM, Li, Qing wrote: >> jeez, this bug has been around for quite a while ... >> >> Please try patch at =A0http://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, > > =A0 =A0 =A0 =A0for (i=3D0; i < LLTBL_HASHTBL_SIZE; i++) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0LIST_FOREACH_SAFE(lle, &llt->lle_head[i], = lle_next, next) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (lle->la_flags & LLE_STA= TIC) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 continue; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (IN_ARE_MASKED_ADDR_EQU= AL((struct > sockaddr_in *)L3_ADDR(lle), > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 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, > =A0- Arnaud > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >