export SNMP-TARGET-MIB::{snmpUnavailableContexts,snmpUnknownContexts}
authormartijn <martijn@openbsd.org>
Wed, 8 Nov 2023 19:46:28 +0000 (19:46 +0000)
committermartijn <martijn@openbsd.org>
Wed, 8 Nov 2023 19:46:28 +0000 (19:46 +0000)
via application_internal.

OK tb@

usr.sbin/snmpd/application.c
usr.sbin/snmpd/application.h
usr.sbin/snmpd/application_internal.c

index 1f96e9f..1c5b9b7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: application.c,v 1.30 2023/11/06 11:02:57 martijn Exp $        */
+/*     $OpenBSD: application.c,v 1.31 2023/11/08 19:46:28 martijn Exp $        */
 
 /*
  * Copyright (c) 2021 Martijn van Duren <martijn@openbsd.org>
@@ -431,6 +431,23 @@ appl_sysortable_getnext(int8_t include, struct ber_oid *oid)
        return value;
 }
 
+struct ber_element *
+appl_targetmib(struct ber_oid *oid)
+{
+       struct ber_element *value = NULL;
+
+       if (ober_oid_cmp(oid, &OID(MIB_snmpUnavailableContexts, 0)) == 0)
+               value = ober_add_integer(NULL,
+                   snmp_target_mib.snmp_unavailablecontexts);
+       else if (ober_oid_cmp(oid, &OID(MIB_snmpUnknownContexts, 0)) == 0)
+               value = ober_add_integer(NULL,
+                   snmp_target_mib.snmp_unknowncontexts);
+
+       if (value != NULL)
+               ober_set_header(value, BER_CLASS_APPLICATION, SNMP_T_COUNTER32);
+       return value;
+}
+
 enum appl_error
 appl_region(struct appl_context *ctx, uint32_t timeout, uint8_t priority,
     struct ber_oid *oid, int instance, int subtree,
index ecbc7da..30657c5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: application.h,v 1.9 2023/11/06 11:02:57 martijn Exp $ */
+/*     $OpenBSD: application.h,v 1.10 2023/11/08 19:46:28 martijn Exp $        */
 
 /*
  * Copyright (c) 2021 Martijn van Duren <martijn@openbsd.org>
@@ -130,6 +130,7 @@ enum appl_error appl_removeagentcaps(const char *, struct ber_oid *,
 struct ber_element *appl_sysorlastchange(struct ber_oid *);
 struct ber_element *appl_sysortable(struct ber_oid *);
 struct ber_element *appl_sysortable_getnext(int8_t, struct ber_oid *);
+struct ber_element *appl_targetmib(struct ber_oid *);
 enum appl_error appl_register(const char *, uint32_t, uint8_t, struct ber_oid *,
     int, int, uint8_t, uint32_t, struct appl_backend *);
 enum appl_error appl_unregister(const char *, uint8_t, struct ber_oid *,
index 4221dca..a59fe5a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: application_internal.c,v 1.6 2023/11/06 11:02:57 martijn Exp $        */
+/*     $OpenBSD: application_internal.c,v 1.7 2023/11/08 19:46:28 martijn Exp $        */
 
 /*
  * Copyright (c) 2023 Martijn van Duren <martijn@openbsd.org>
@@ -161,6 +161,11 @@ appl_internal_init(void)
        appl_internal_object(&OID(MIB_snmpEngineMaxMsgSize),
            appl_internal_engine, NULL);
 
+       appl_internal_object(&OID(MIB_snmpUnavailableContexts),
+           appl_targetmib, NULL);
+       appl_internal_object(&OID(MIB_snmpUnknownContexts),
+           appl_targetmib, NULL);
+
        appl_internal_object(&OID(MIB_usmStatsUnsupportedSecLevels),
            appl_internal_usmstats, NULL);
        appl_internal_object(&OID(MIB_usmStatsNotInTimeWindow),