diff options
| author | Hartmut Brandt <harti@FreeBSD.org> | 2005-11-02 14:05:49 +0000 |
|---|---|---|
| committer | Hartmut Brandt <harti@FreeBSD.org> | 2005-11-02 14:05:49 +0000 |
| commit | 1f467eaaf82a9b863fc6264c7c8e6b40fffdb357 (patch) | |
| tree | b99c1b2110c61f5fc8a4325c5414f7d1ab98ec89 | |
| parent | cb92d4d58f289f2dc253ec7a03729d87eb5c1378 (diff) | |
| parent | 361b40a30dd450a1b651f9f7e2f49a8e57cf2b8e (diff) | |
Notes
| -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 1c0826007626..d3211d01192a 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: |
