diff options
author | harti <harti@FreeBSD.org> | 2006-02-10 16:49:49 +0000 |
---|---|---|
committer | harti <harti@FreeBSD.org> | 2006-02-10 16:49:49 +0000 |
commit | 6f93f5275eb1ab97042df92082f4645e71c907a0 (patch) | |
tree | 14b738cbf02256ab0d740715bc355e0ff3241b53 /contrib | |
parent | ad4bab46b0fd2bbc790195fcf0334169a05b1410 (diff) | |
parent | af0ed09791e779050efb210d9304ae1e7100c129 (diff) | |
download | FreeBSD-src-6f93f5275eb1ab97042df92082f4645e71c907a0.zip FreeBSD-src-6f93f5275eb1ab97042df92082f4645e71c907a0.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r155506,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/bsnmp/snmp_mibII/mibII.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/contrib/bsnmp/snmp_mibII/mibII.c b/contrib/bsnmp/snmp_mibII/mibII.c index aa5cb83..98a16d4 100644 --- a/contrib/bsnmp/snmp_mibII/mibII.c +++ b/contrib/bsnmp/snmp_mibII/mibII.c @@ -306,15 +306,17 @@ mib_fetch_ifmib(struct mibif *ifp) return (-1); } - if (ifp->trap_enable) { - if (!(oldmib.ifmd_flags & IFF_UP)) { - if (ifp->mib.ifmd_flags & IFF_UP) - link_trap(ifp, 1); - } else { - if (!(ifp->mib.ifmd_flags & IFF_UP)) - link_trap(ifp, 0); - } - } + /* + * Quoting RFC2863, 3.1.15: "... LinkUp and linkDown traps are + * generated just after ifOperStatus leaves, or just before it + * enters, the down state, respectively;" + */ + if (ifp->trap_enable && ifp->mib.ifmd_data.ifi_link_state != + oldmib.ifmd_data.ifi_link_state && + (ifp->mib.ifmd_data.ifi_link_state == LINK_STATE_DOWN || + oldmib.ifmd_data.ifi_link_state == LINK_STATE_DOWN)) + link_trap(ifp, ifp->mib.ifmd_data.ifi_link_state == + LINK_STATE_UP ? 1 : 0); ifp->flags &= ~(MIBIF_HIGHSPEED | MIBIF_VERYHIGHSPEED); if (ifp->mib.ifmd_data.ifi_baudrate > 20000000) { @@ -625,6 +627,7 @@ mibif_create(u_int sysindex, const char *name) ifp->counter_disc = get_ticks(); } ifp->index = map->ifindex; + ifp->mib.ifmd_data.ifi_link_state = LINK_STATE_UNKNOWN; INSERT_OBJECT_INT(ifp, &mibif_list); mib_if_number++; |