From owner-svn-src-projects@FreeBSD.ORG Mon Dec 15 02:06:02 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE50C1065670; Mon, 15 Dec 2008 02:06:02 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BA5688FC16; Mon, 15 Dec 2008 02:06:02 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mBF262OT081120; Mon, 15 Dec 2008 02:06:02 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mBF262dM081118; Mon, 15 Dec 2008 02:06:02 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812150206.mBF262dM081118@svn.freebsd.org> From: Kip Macy Date: Mon, 15 Dec 2008 02:06:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r186109 - in projects/arpv2_merge_1/sys: netinet netinet6 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Dec 2008 02:06:03 -0000 Author: kmacy Date: Mon Dec 15 02:06:02 2008 New Revision: 186109 URL: http://svn.freebsd.org/changeset/base/186109 Log: move LLE_VALID check earlier in the loop to avoid passing invalid entries back to userland Modified: projects/arpv2_merge_1/sys/netinet/in.c projects/arpv2_merge_1/sys/netinet6/in6.c Modified: projects/arpv2_merge_1/sys/netinet/in.c ============================================================================== --- projects/arpv2_merge_1/sys/netinet/in.c Mon Dec 15 01:44:23 2008 (r186108) +++ projects/arpv2_merge_1/sys/netinet/in.c Mon Dec 15 02:06:02 2008 (r186109) @@ -1185,8 +1185,10 @@ in_lltable_dump(struct lltable *llt, str error = 0; for (i = 0; i < LLTBL_HASHTBL_SIZE; i++) { LIST_FOREACH(lle, &llt->lle_head[i], lle_next) { + struct sockaddr_dl *sdl; + /* skip deleted entries */ - if (lle->la_flags & LLE_DELETED) + if ((lle->la_flags & (LLE_DELETED|LLE_VALID)) != LLE_VALID) continue; /* * produce a msg made of: @@ -1196,7 +1198,6 @@ in_lltable_dump(struct lltable *llt, str */ bzero(&arpc, sizeof(arpc)); arpc.rtm.rtm_msglen = sizeof(arpc); - arpc.sin.sin_family = AF_INET; arpc.sin.sin_len = sizeof(arpc.sin); arpc.sin.sin_addr.s_addr = SIN(lle)->sin_addr.s_addr; @@ -1209,16 +1210,14 @@ in_lltable_dump(struct lltable *llt, str arpc.sin.sin_other = SIN_PROXY; } - if (lle->la_flags & LLE_VALID) { /* valid MAC */ - struct sockaddr_dl *sdl = &arpc.sdl; + sdl = &arpc.sdl; + sdl->sdl_family = AF_LINK; + sdl->sdl_len = sizeof(*sdl); + sdl->sdl_alen = ifp->if_addrlen; + sdl->sdl_index = ifp->if_index; + sdl->sdl_type = ifp->if_type; + bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen); - sdl->sdl_family = AF_LINK; - sdl->sdl_len = sizeof(*sdl); - sdl->sdl_alen = ifp->if_addrlen; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = ifp->if_type; - bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen); - } arpc.rtm.rtm_rmx.rmx_expire = lle->la_flags & LLE_STATIC ? 0 : lle->la_expire; arpc.rtm.rtm_flags |= RTF_HOST; Modified: projects/arpv2_merge_1/sys/netinet6/in6.c ============================================================================== --- projects/arpv2_merge_1/sys/netinet6/in6.c Mon Dec 15 01:44:23 2008 (r186108) +++ projects/arpv2_merge_1/sys/netinet6/in6.c Mon Dec 15 02:06:02 2008 (r186109) @@ -2242,8 +2242,10 @@ in6_lltable_dump(struct lltable *llt, st error = 0; for (i = 0; i < LLTBL_HASHTBL_SIZE; i++) { LIST_FOREACH(lle, &llt->lle_head[i], lle_next) { - /* skip deleted entries */ - if (lle->la_flags & LLE_DELETED) + struct sockaddr_dl *sdl; + + /* skip deleted or invalid entries */ + if ((lle->la_flags & (LLE_DELETED|LLE_VALID)) != LLE_VALID) continue; /* * produce a msg made of: @@ -2253,7 +2255,6 @@ in6_lltable_dump(struct lltable *llt, st */ bzero(&ndpc, sizeof(ndpc)); ndpc.rtm.rtm_msglen = sizeof(ndpc); - ndpc.sin6.sin6_family = AF_INET6; ndpc.sin6.sin6_len = sizeof(ndpc.sin6); bcopy(L3_ADDR(lle), &ndpc.sin6, L3_ADDR_LEN(lle)); @@ -2262,16 +2263,13 @@ in6_lltable_dump(struct lltable *llt, st if (lle->la_flags & LLE_PUB) ndpc.rtm.rtm_flags |= RTF_ANNOUNCE; - if (lle->la_flags & LLE_VALID) { /* valid MAC */ - struct sockaddr_dl *sdl = &ndpc.sdl; - - sdl->sdl_family = AF_LINK; - sdl->sdl_len = sizeof(*sdl); - sdl->sdl_alen = ifp->if_addrlen; - sdl->sdl_index = ifp->if_index; - sdl->sdl_type = ifp->if_type; - bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen); - } + sdl = &ndpc.sdl; + sdl->sdl_family = AF_LINK; + sdl->sdl_len = sizeof(*sdl); + sdl->sdl_alen = ifp->if_addrlen; + sdl->sdl_index = ifp->if_index; + sdl->sdl_type = ifp->if_type; + bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen); ndpc.rtm.rtm_rmx.rmx_expire = lle->la_flags & LLE_STATIC ? 0 : lle->la_expire; ndpc.rtm.rtm_flags |= RTF_HOST;