diff options
author | harti <harti@FreeBSD.org> | 2005-11-02 14:05:49 +0000 |
---|---|---|
committer | harti <harti@FreeBSD.org> | 2005-11-02 14:05:49 +0000 |
commit | d71eb4d4b2745ee963e4695a91c085a1a3855991 (patch) | |
tree | b99c1b2110c61f5fc8a4325c5414f7d1ab98ec89 /contrib | |
parent | ea9959fde3470076f9f0784a1b2a6b07e29fc535 (diff) | |
parent | ac5d1bb3eaf4c98e3a71e21f0cee4e9e68e0fbbb (diff) | |
download | FreeBSD-src-d71eb4d4b2745ee963e4695a91c085a1a3855991.zip FreeBSD-src-d71eb4d4b2745ee963e4695a91c085a1a3855991.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r151970,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/bsnmp/snmp_mibII/mibII_interfaces.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/contrib/bsnmp/snmp_mibII/mibII_interfaces.c b/contrib/bsnmp/snmp_mibII/mibII_interfaces.c index 1c08260..d3211d0 100644 --- a/contrib/bsnmp/snmp_mibII/mibII_interfaces.c +++ b/contrib/bsnmp/snmp_mibII/mibII_interfaces.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Begemot: bsnmp/snmp_mibII/mibII_interfaces.c,v 1.15 2005/05/23 09:03:39 brandt_h Exp $ + * $Begemot: bsnmp/snmp_mibII/mibII_interfaces.c,v 1.16 2005/11/02 12:07:40 brandt_h Exp $ * * Interfaces group. */ @@ -280,8 +280,22 @@ op_ifentry(struct snmp_context *ctx, struct snmp_value *value, break; case LEAF_ifOperStatus: - value->v.integer = - (ifp->mib.ifmd_flags & IFF_RUNNING) ? 1 : 2; + /* + * According to RFC 2863 the state should be Up if the + * interface is ready to transmit packets. We takes this to + * mean that the interface should be running and should have + * a carrier. If it is running and has no carrier we interpret + * this as 'waiting for an external event' (plugging in the + * cable) and hence return 'dormant'. + */ + if (ifp->mib.ifmd_flags & IFF_RUNNING) { + if (ifp->mib.ifmd_data.ifi_link_state == + LINK_STATE_DOWN) + value->v.integer = 5; /* state dormant */ + else + value->v.integer = 1; /* state up */ + } else + value->v.integer = 2; /* state down */ break; case LEAF_ifLastChange: |