Date: Mon, 15 Dec 2008 02:06:02 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r186109 - in projects/arpv2_merge_1/sys: netinet netinet6 Message-ID: <200812150206.mBF262dM081118@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812150206.mBF262dM081118>