From owner-svn-src-projects@FreeBSD.ORG Sat Dec 13 07:03:17 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 380EF106567F; Sat, 13 Dec 2008 07:03:17 +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 284568FC26; Sat, 13 Dec 2008 07:03:17 +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 mBD73HWO021813; Sat, 13 Dec 2008 07:03:17 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mBD73HGn021812; Sat, 13 Dec 2008 07:03:17 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200812130703.mBD73HGn021812@svn.freebsd.org> From: Kip Macy Date: Sat, 13 Dec 2008 07:03:17 +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: r186029 - projects/arpv2_merge_1/contrib/bsnmp/snmp_mibII 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: Sat, 13 Dec 2008 07:03:17 -0000 Author: kmacy Date: Sat Dec 13 07:03:16 2008 New Revision: 186029 URL: http://svn.freebsd.org/changeset/base/186029 Log: Traversing the routing table is no longer necessary for "discovering" new ARP entries. We can now obtain all arp entries by way of the sysctl. Simplify the RTM_{GET,ADD} code to reflect this. Modified: projects/arpv2_merge_1/contrib/bsnmp/snmp_mibII/mibII.c Modified: projects/arpv2_merge_1/contrib/bsnmp/snmp_mibII/mibII.c ============================================================================== --- projects/arpv2_merge_1/contrib/bsnmp/snmp_mibII/mibII.c Sat Dec 13 06:50:52 2008 (r186028) +++ projects/arpv2_merge_1/contrib/bsnmp/snmp_mibII/mibII.c Sat Dec 13 07:03:16 2008 (r186029) @@ -48,15 +48,8 @@ static void *route_fd; /* if-index allocator */ static uint32_t next_if_index = 1; -#if 0 -/* - * XXX - Qing - * - */ -/* re-fetch arp table */ -static int update_arp; +/* currently fetching the arp table */ static int in_update_arp; -#endif /* OR registrations */ static u_int ifmib_reg; @@ -916,39 +909,6 @@ mib_find_ifa(struct in_addr addr) return (NULL); } -#if 0 -/* - * Qing -- fix - * Process a new ARP entry - */ - -static void -process_arp(const struct rt_msghdr *rtm, const struct sockaddr_dl *sdl, - const struct sockaddr_in *sa) -{ - struct mibif *ifp; - struct mibarp *at; - - /* IP arp table entry */ - if (sdl->sdl_alen == 0) { - update_arp = 1; - return; - } - if ((ifp = mib_find_if_sys(sdl->sdl_index)) == NULL) - return; - /* have a valid entry */ - if ((at = mib_find_arp(ifp, sa->sin_addr)) == NULL && - (at = mib_arp_create(ifp, sa->sin_addr, - sdl->sdl_data + sdl->sdl_nlen, sdl->sdl_alen)) == NULL) - return; - - if (rtm->rtm_rmx.rmx_expire == 0) - at->flags |= MIBARP_PERM; - else - at->flags &= ~MIBARP_PERM; - at->flags |= MIBARP_FOUND; -} -#endif /* * Handle a routing socket message. */ @@ -1089,62 +1049,12 @@ handle_rtmsg(struct rt_msghdr *rtm) } break; #endif - case RTM_GET: - mib_extract_addrs(rtm->rtm_addrs, (u_char *)(rtm + 1), addrs); -#if 0 - /* - * XXX - Qing fix - * - */ - if (rtm->rtm_flags & RTF_LLINFO) { - if (addrs[RTAX_DST] == NULL || - addrs[RTAX_GATEWAY] == NULL || - addrs[RTAX_DST]->sa_family != AF_INET || - addrs[RTAX_GATEWAY]->sa_family != AF_LINK) - break; - process_arp(rtm, - (struct sockaddr_dl *)(void *)addrs[RTAX_GATEWAY], - (struct sockaddr_in *)(void *)addrs[RTAX_DST]); - } else { -#endif - if (rtm->rtm_errno == 0 && (rtm->rtm_flags & RTF_UP)) - mib_sroute_process(rtm, addrs[RTAX_GATEWAY], - addrs[RTAX_DST], addrs[RTAX_NETMASK]); -#if 0 - } -#endif - break; - case RTM_ADD: - mib_extract_addrs(rtm->rtm_addrs, (u_char *)(rtm + 1), addrs); -#if 0 - /* - * XXX - Qing fix - * - */ - if (rtm->rtm_flags & RTF_LLINFO) { - if (addrs[RTAX_DST] == NULL || - addrs[RTAX_GATEWAY] == NULL || - addrs[RTAX_DST]->sa_family != AF_INET || - addrs[RTAX_GATEWAY]->sa_family != AF_LINK) - break; - process_arp(rtm, - (struct sockaddr_dl *)(void *)addrs[RTAX_GATEWAY], - (struct sockaddr_in *)(void *)addrs[RTAX_DST]); - } else { -#endif - if (rtm->rtm_errno == 0 && (rtm->rtm_flags & RTF_UP)) - mib_sroute_process(rtm, addrs[RTAX_GATEWAY], - addrs[RTAX_DST], addrs[RTAX_NETMASK]); -#if 0 - } -#endif - break; - case RTM_DELETE: mib_extract_addrs(rtm->rtm_addrs, (u_char *)(rtm + 1), addrs); - if (rtm->rtm_errno == 0) + + if (rtm->rtm_errno == 0 && (rtm->rtm_flags & RTF_UP)) mib_sroute_process(rtm, addrs[RTAX_GATEWAY], addrs[RTAX_DST], addrs[RTAX_NETMASK]); break; @@ -1315,9 +1225,7 @@ update_ifa_info(void) /* * Update arp table * - * XXX - Qing */ -#if 0 void mib_arp_update(void) { @@ -1333,11 +1241,7 @@ mib_arp_update(void) TAILQ_FOREACH(at, &mibarp_list, link) at->flags &= ~MIBARP_FOUND; - /* - * XXX - Qing fix - * - */ - if ((buf = mib_fetch_rtab(AF_INET, NET_RT_FLAGS, RTF_LLINFO, &needed)) == NULL) { + if ((buf = mib_fetch_rtab(AF_INET, NET_RT_FLAGS, 0, &needed)) == NULL) { in_update_arp = 0; return; } @@ -1358,10 +1262,8 @@ mib_arp_update(void) at = at1; } mibarpticks = get_ticks(); - update_arp = 0; in_update_arp = 0; } -#endif /* @@ -1664,22 +1566,11 @@ mibII_idle(void) mib_refresh_iflist(); update_ifa_info(); -#if 0 - /* - * XXX Qing - * - */ mib_arp_update(); -#endif mib_iflist_bad = 0; } -#if 0 - /* - * XXX Qing - */ - if (update_arp) - mib_arp_update(); -#endif + + mib_arp_update(); }