svn commit: r186029 -
projects/arpv2_merge_1/contrib/bsnmp/snmp_mibII
Kip Macy
kmacy at FreeBSD.org
Fri Dec 12 23:03:17 PST 2008
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();
}
More information about the svn-src-projects
mailing list