summaryrefslogtreecommitdiff
path: root/sysutils/ups-nut/patches/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/ups-nut/patches/patch-ab')
-rw-r--r--sysutils/ups-nut/patches/patch-ab105
1 files changed, 0 insertions, 105 deletions
diff --git a/sysutils/ups-nut/patches/patch-ab b/sysutils/ups-nut/patches/patch-ab
deleted file mode 100644
index 467e3cf4ee6..00000000000
--- a/sysutils/ups-nut/patches/patch-ab
+++ /dev/null
@@ -1,105 +0,0 @@
-$NetBSD: patch-ab,v 1.12 2013/02/16 17:34:58 jdf Exp $
-
-Keep trying initialisation if we get a timeout or network error while
-probing the device.
-Submitted upstream as tracker #313195
-
---- drivers/snmp-ups.c.orig 2013-02-08 15:39:09.000000000 +0100
-+++ drivers/snmp-ups.c 2013-02-08 15:39:13.000000000 +0100
-@@ -90,6 +90,9 @@
- const char *mibname;
- const char *mibvers;
-
-+int nut_snmp_err; /* saved snmp error from nut_snmp_get */
-+int nut_sys_err; /* saved system errno from nut_snmp_get */
-+
- static void disable_transfer_oids(void);
-
- #define DRIVER_NAME "Generic SNMP UPS driver"
-@@ -266,15 +269,15 @@
-
- /* FIXME: first test if the device is reachable to avoid timeouts! */
-
-- /* Load the SNMP to NUT translation data */
-- load_mib2nut(mibs);
--
- /* init polling frequency */
- if (getval(SU_VAR_POLLFREQ))
- pollfreq = atoi(getval(SU_VAR_POLLFREQ));
- else
- pollfreq = DEFAULT_POLLFREQ;
-
-+ /* Load the SNMP to NUT translation data */
-+ load_mib2nut(mibs);
-+
- /* Get UPS Model node to see if there's a MIB */
- su_info_p = su_find_info("ups.model");
- status = nut_snmp_get_str(su_info_p->OID, model, sizeof(model), NULL);
-@@ -477,6 +480,9 @@
- size_t name_len = MAX_OID_LEN;
- static unsigned int numerr = 0;
-
-+ nut_sys_err = 0;
-+ nut_snmp_err = 0;
-+
- upsdebugx(3, "nut_snmp_get(%s)", OID);
-
- /* create and send request. */
-@@ -495,8 +501,10 @@
-
- status = snmp_synch_response(g_snmp_sess_p, pdu, &response);
-
-- if (!response)
-+ if (!response) {
-+ snmp_error(g_snmp_sess_p, &nut_sys_err, &nut_snmp_err, NULL);
- return NULL;
-+ }
-
- if (!((status == STAT_SUCCESS) && (response->errstat == SNMP_ERR_NOERROR)))
- {
-@@ -876,6 +884,7 @@
- bool_t load_mib2nut(const char *mib)
- {
- int i;
-+ int snmp_timeout = 0;
- char buf[LARGEBUF];
- mib2nut_info_t *m2n = NULL;
-
-@@ -893,6 +902,7 @@
- /* Otherwise, revert to the classic method */
- if (m2n == NULL)
- {
-+again:
- for (i = 0; mib2nut[i] != NULL; i++) {
- /* Is there already a MIB name provided? */
- if (strcmp(mib, "auto") && strcmp(mib, mib2nut[i]->mib_name)) {
-@@ -902,6 +912,9 @@
-
- /* Classic method: test an OID specific to this MIB */
- if (!nut_snmp_get_str(mib2nut[i]->oid_auto_check, buf, sizeof(buf), NULL)) {
-+ if (nut_snmp_err == SNMPERR_BAD_SENDTO ||
-+ nut_snmp_err == SNMPERR_TIMEOUT)
-+ snmp_timeout++;
- continue;
- }
- /* MIB found */
-@@ -920,6 +933,19 @@
- upsdebugx(1, "load_mib2nut: using %s mib", mibname);
- return TRUE;
- }
-+ if (snmp_timeout > 0) {
-+ upslogx(LOG_WARNING, "timeout while probing %s",
-+ upsname?upsname:device_name);
-+ snmp_timeout = 0;
-+ if (sleep(pollfreq) == 0) {
-+ /*
-+ * we're likely to end up in background if started
-+ * from upsdrvctl so enable syslog now
-+ */
-+ syslogbit_set();
-+ goto again;
-+ }
-+ }
-
- /* Did we find something or is it really an unknown mib */
- if (strcmp(mib, "auto") != 0) {