Compare commits
151 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28e611c958 | ||
|
|
649594e0a8 | ||
|
|
baccc928a0 | ||
|
|
7f44925712 | ||
|
|
7043b42227 | ||
|
|
f11e93ce09 | ||
|
|
0d287ccdd2 | ||
|
|
40d9093621 | ||
|
|
7f7d58eaf7 | ||
|
|
f3f8339154 | ||
|
|
15cedc2c45 | ||
|
|
656ebdb245 | ||
|
|
6410ad3116 | ||
|
|
0e6b0aaa6a | ||
|
|
a63df16547 | ||
|
|
45a2bb2eea | ||
| d883c76d95 | |||
|
|
603f908db1 | ||
|
|
edd9638ab3 |
||
|
|
7c1240fe6b | ||
|
|
4b676c579c | ||
|
74f2032ae1 |
|||
|
|
d33a163529 | ||
|
|
a1c4087963 | ||
|
|
9c65dec8e9 | ||
|
|
e1ae9a2b12 | ||
|
|
ad9d539156 | ||
|
|
ae7481e93f | ||
|
|
8ca1417603 | ||
|
|
f4c324fcef | ||
|
|
e50eb6982b | ||
|
|
1f70924d0a | ||
|
|
0a09d4c2db | ||
|
|
a1af22f206 | ||
|
|
0f69787599 | ||
|
|
0867787a38 | ||
|
|
491853f2e5 | ||
|
|
e4b67c5f99 | ||
|
|
88d41bd5db | ||
|
|
f12e2cf5d7 | ||
|
|
47260a4a3a | ||
|
|
96bb8ca49d | ||
|
|
18351a3904 | ||
|
|
f9c2f25179 | ||
|
|
5567bd7e3e | ||
|
|
689c725c34 | ||
|
|
8718f62cb2 | ||
| a55907366f | |||
|
|
71fd62d403 | ||
|
|
d622fc4df5 | ||
|
|
309b687c1e | ||
|
|
fc25bbe4da | ||
|
|
8c84e94b7d | ||
|
|
c7a2182909 | ||
|
|
888f62f4d4 | ||
|
|
94800d9ce0 | ||
|
|
0da701e098 | ||
|
|
e7210d3f0a | ||
|
|
31a7f8be0f | ||
|
|
0e8b4706fe | ||
|
|
3b0b966b01 | ||
|
|
2f2718771d | ||
|
|
5ca895838f | ||
|
|
ea2a4871cc | ||
|
|
25af5a1169 | ||
| 1e1e50aae2 | |||
|
|
4643516582 | ||
|
|
e80342ac5a | ||
|
|
b47ab87730 | ||
|
|
14b4835cfb | ||
|
|
0dba34c092 | ||
|
|
47adcde62f | ||
|
|
4efbf707c2 | ||
|
|
9fa55abb4b | ||
|
|
f532a181bf | ||
|
|
8c24d14eac | ||
|
|
07d64d3ffe | ||
|
|
91a48da872 | ||
|
|
b6b01ca16f | ||
|
|
4d7a6a1463 | ||
|
|
5573ec507b | ||
|
|
911fab38f4 | ||
|
|
be26e76db3 | ||
|
|
d9dc99b36b | ||
|
|
03eed47b24 | ||
|
|
f028a843ff | ||
|
|
c829d67c13 | ||
|
|
c384b83a3c | ||
|
|
c664a21037 | ||
|
|
172d7325f8 | ||
|
|
001fdfb203 | ||
|
|
1dbc8dd231 | ||
|
|
69b13ec687 | ||
|
|
b2ce63191d | ||
|
|
b0ffa68e22 | ||
|
|
55bd9e1c49 | ||
|
|
72112e3c24 | ||
|
|
d0ef14dd43 | ||
|
|
975f13d14c | ||
|
|
81c40c1ab4 | ||
|
|
7dc11217ec | ||
|
|
e2746cbe5d | ||
|
|
4dc72487ac | ||
|
|
f5c7c112d1 | ||
|
|
0e8117956a | ||
|
|
1c3bbf5bde | ||
|
|
2bee86eba7 | ||
|
|
1382878e8a | ||
|
|
a20598cfce | ||
|
a6f4811b0c |
|||
|
9c5bf4babd |
|||
|
|
5ca3ab167a | ||
|
|
aff1706e3d | ||
|
|
cbcf8637b1 | ||
|
|
ec72bd7624 | ||
|
70f4aab30e |
|||
|
|
a8f57f7b85 | ||
|
|
f1611a2293 | ||
|
|
1a7562dd84 | ||
|
|
e06ca157cf | ||
|
|
d64ff7d777 | ||
|
|
cc67225c40 | ||
|
|
22cf4e9086 | ||
|
|
3278a0ee02 | ||
|
|
68a361f3b1 | ||
|
7309d216b3 |
|||
|
|
d9674fbb26 | ||
|
|
996278ef68 | ||
|
|
d3febaaaa0 | ||
|
|
4b1b37eb16 | ||
|
|
9e592fe1d9 | ||
|
|
4a9c0ab606 | ||
|
|
3d45358cc7 | ||
|
|
a99b865945 | ||
|
|
fd2b06be09 | ||
|
|
38fee6398d | ||
|
|
7486c6880d | ||
|
|
08064860dd | ||
|
|
4309199ccc | ||
|
|
080b7fe91d | ||
|
|
7212e26760 | ||
|
|
16f1271cc2 | ||
|
2e5c96fba6 |
|||
|
|
e256d0f874 | ||
|
|
345f177703 | ||
|
|
d5a8b7b457 | ||
|
79ba60ff69 |
|||
|
|
7d2e1491d1 | ||
|
|
6abaaecb39 | ||
| 56522679a8 | |||
| 7c43e1c753 |
59 changed files with 3173 additions and 6235 deletions
1
.fmf/version
Normal file
1
.fmf/version
Normal file
|
|
@ -0,0 +1 @@
|
|||
1
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -5,3 +5,9 @@ net-snmp-5.5.tar.gz
|
|||
/net-snmp-5.7.1.tar.gz
|
||||
/net-snmp-5.7.2.tar.gz
|
||||
/net-snmp-5.7.3.tar.gz
|
||||
/net-snmp-5.8.tar.gz
|
||||
/net-snmp-5.9.tar.gz
|
||||
/net-snmp-5.9.1.tar.gz
|
||||
/net-snmp-5.9.3.tar.gz
|
||||
/net-snmp-5.9.4.tar.gz
|
||||
/net-snmp-5.9.5.2.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
From 9432f629e66e4f9500f6335eab3ad427f84523b2 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Thu, 20 Jul 2017 10:31:47 -0700
|
||||
Subject: [PATCH] Link libnetsnmptrapd against MYSQL_LIBS
|
||||
|
||||
When building with MySQL (MariaDB) support, this library must
|
||||
be linked against the MySQL client library, or else it will
|
||||
have unresolved symbols.
|
||||
---
|
||||
apps/Makefile.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/apps/Makefile.in b/apps/Makefile.in
|
||||
index 77404dd89..7da434522 100644
|
||||
--- a/apps/Makefile.in
|
||||
+++ b/apps/Makefile.in
|
||||
@@ -204,7 +204,7 @@ snmpdf$(EXEEXT): snmpdf.$(OSUFFIX) $(USELIBS)
|
||||
$(LINK) ${CFLAGS} -o $@ snmpdf.$(OSUFFIX) ${LDFLAGS} ${LIBS}
|
||||
|
||||
libnetsnmptrapd.$(LIB_EXTENSION)$(LIB_VERSION): $(LLIBTRAPD_OBJS)
|
||||
- $(LIB_LD_CMD) $@ ${LLIBTRAPD_OBJS} $(MIBLIB) $(USELIBS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS)
|
||||
+ $(LIB_LD_CMD) $@ ${LLIBTRAPD_OBJS} $(MIBLIB) $(USELIBS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) $(MYSQL_LIBS)
|
||||
$(RANLIB) $@
|
||||
|
||||
snmpinforminstall:
|
||||
--
|
||||
2.13.0
|
||||
|
||||
177
0001-Use-OpenSSL-accessors-for-opaque-structs.patch
Normal file
177
0001-Use-OpenSSL-accessors-for-opaque-structs.patch
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
From 338d289f1e14650edf0bd7e960272871029131e1 Mon Sep 17 00:00:00 2001
|
||||
From: Simo Sorce <simo@redhat.com>
|
||||
Date: Fri, 17 Apr 2026 12:47:18 -0400
|
||||
Subject: [PATCH] Use OpenSSL accessors for opaque structs
|
||||
|
||||
Replaced direct access to `ASN1_STRING` fields with OpenSSL accessor functions
|
||||
(e.g., `ASN1_STRING_type`, `ASN1_STRING_length`, `ASN1_STRING_get0_data`) and
|
||||
updated `X509_NAME` and `X509_EXTENSION` pointers to `const`. This is required
|
||||
to maintain compatibility with newer OpenSSL versions (4.0+) where these
|
||||
structures were made opaque.
|
||||
|
||||
Co-authored-by: Gemini <gemini@google.com>
|
||||
Signed-off-by: Simo Sorce <simo@redhat.com>
|
||||
---
|
||||
snmplib/snmp_openssl.c | 74 ++++++++++++++++++++++--------------------
|
||||
1 file changed, 39 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
|
||||
index 4471a7a..658841a 100644
|
||||
--- a/snmplib/snmp_openssl.c
|
||||
+++ b/snmplib/snmp_openssl.c
|
||||
@@ -147,7 +147,7 @@ void netsnmp_init_openssl(void) {
|
||||
static char *
|
||||
_cert_get_name(X509 *ocert, int which, char **buf, int *len, int flags)
|
||||
{
|
||||
- X509_NAME *osubj_name;
|
||||
+ const X509_NAME *osubj_name;
|
||||
int space;
|
||||
char *buf_ptr;
|
||||
|
||||
@@ -187,7 +187,7 @@ _cert_get_name(X509 *ocert, int which, char **buf, int *len, int flags)
|
||||
char *
|
||||
netsnmp_openssl_cert_get_subjectName(X509 *ocert, char **buf, int *len)
|
||||
{
|
||||
- X509_NAME *osubj_name;
|
||||
+ const X509_NAME *osubj_name;
|
||||
int space;
|
||||
char *buf_ptr;
|
||||
|
||||
@@ -233,11 +233,11 @@ netsnmp_openssl_cert_get_commonName(X509 *ocert, char **buf, int *len)
|
||||
void
|
||||
netsnmp_openssl_cert_dump_names(X509 *ocert)
|
||||
{
|
||||
- int i, onid;
|
||||
- X509_NAME_ENTRY *oname_entry;
|
||||
- ASN1_STRING *oname_value;
|
||||
- X509_NAME *osubj_name;
|
||||
- const char *prefix_short, *prefix_long;
|
||||
+ int i, onid;
|
||||
+ const X509_NAME_ENTRY *oname_entry;
|
||||
+ const ASN1_STRING *oname_value;
|
||||
+ const X509_NAME *osubj_name;
|
||||
+ const char *prefix_short, *prefix_long;
|
||||
|
||||
if (NULL == ocert)
|
||||
return;
|
||||
@@ -253,7 +253,7 @@ netsnmp_openssl_cert_dump_names(X509 *ocert)
|
||||
netsnmp_assert(NULL != oname_entry);
|
||||
oname_value = X509_NAME_ENTRY_get_data(oname_entry);
|
||||
|
||||
- if (oname_value->type != V_ASN1_PRINTABLESTRING)
|
||||
+ if (ASN1_STRING_type(oname_value) != V_ASN1_PRINTABLESTRING)
|
||||
continue;
|
||||
|
||||
/** get NID */
|
||||
@@ -268,7 +268,7 @@ netsnmp_openssl_cert_dump_names(X509 *ocert)
|
||||
|
||||
DEBUGMSGT(("9:cert:dump:names",
|
||||
"[%02d] NID type %d, ASN type %d\n", i, onid,
|
||||
- oname_value->type));
|
||||
+ ASN1_STRING_type(oname_value)));
|
||||
DEBUGMSGT(("9:cert:dump:names", "%s/%s: '%s'\n", prefix_long,
|
||||
prefix_short, ASN1_STRING_get0_data(oname_value)));
|
||||
}
|
||||
@@ -276,7 +276,7 @@ netsnmp_openssl_cert_dump_names(X509 *ocert)
|
||||
#endif /* NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES */
|
||||
|
||||
static char *
|
||||
-_cert_get_extension(X509_EXTENSION *oext, char **buf, int *len, int flags)
|
||||
+_cert_get_extension(const X509_EXTENSION *oext, char **buf, int *len, int flags)
|
||||
{
|
||||
int space;
|
||||
char *buf_ptr = NULL;
|
||||
@@ -327,10 +327,10 @@ out:
|
||||
*/
|
||||
/** instead of exposing this function, make helper functions for each
|
||||
* field, like netsnmp_openssl_cert_get_subjectAltName, below */
|
||||
-X509_EXTENSION *
|
||||
+const X509_EXTENSION *
|
||||
_cert_get_extension_at(X509 *ocert, int pos, char **buf, int *len, int flags)
|
||||
{
|
||||
- X509_EXTENSION *oext;
|
||||
+ const X509_EXTENSION *oext;
|
||||
|
||||
if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
|
||||
return NULL;
|
||||
@@ -354,7 +354,7 @@ static char *
|
||||
_cert_get_extension_str_at(X509 *ocert, int pos, char **buf, int *len,
|
||||
int flags)
|
||||
{
|
||||
- X509_EXTENSION *oext;
|
||||
+ const X509_EXTENSION *oext;
|
||||
|
||||
if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
|
||||
return NULL;
|
||||
@@ -374,7 +374,7 @@ _cert_get_extension_str_at(X509 *ocert, int pos, char **buf, int *len,
|
||||
*/
|
||||
/** instead of exposing this function, make helper functions for each
|
||||
* field, like netsnmp_openssl_cert_get_subjectAltName, below */
|
||||
-X509_EXTENSION *
|
||||
+const X509_EXTENSION *
|
||||
_cert_get_extension_id(X509 *ocert, int which, char **buf, int *len, int flags)
|
||||
{
|
||||
int pos;
|
||||
@@ -434,27 +434,31 @@ _extract_oname(const GENERAL_NAME *oname)
|
||||
break;
|
||||
|
||||
case GEN_IPADD:
|
||||
- if (oname->d.iPAddress->length == 4) {
|
||||
- sprintf(ipbuf, "%d.%d.%d.%d", oname->d.iPAddress->data[0],
|
||||
- oname->d.iPAddress->data[1],
|
||||
- oname->d.iPAddress->data[2],
|
||||
- oname->d.iPAddress->data[3]);
|
||||
- rtn = strdup(ipbuf);
|
||||
- }
|
||||
- else if ((oname->d.iPAddress->length == 16) ||
|
||||
- (oname->d.iPAddress->length == 20)) {
|
||||
- char *pos = ipbuf;
|
||||
- int j;
|
||||
- for(j = 0; j < oname->d.iPAddress->length; ++j) {
|
||||
- *pos++ = VAL2HEX(oname->d.iPAddress->data[j]);
|
||||
- *pos++ = ':';
|
||||
+ {
|
||||
+ int ipaddr_len = ASN1_STRING_length(oname->d.iPAddress);
|
||||
+ const unsigned char *ipaddr_data = ASN1_STRING_get0_data(oname->d.iPAddress);
|
||||
+ if (ipaddr_len == 4) {
|
||||
+ sprintf(ipbuf, "%d.%d.%d.%d", ipaddr_data[0],
|
||||
+ ipaddr_data[1],
|
||||
+ ipaddr_data[2],
|
||||
+ ipaddr_data[3]);
|
||||
+ rtn = strdup(ipbuf);
|
||||
+ }
|
||||
+ else if ((ipaddr_len == 16) ||
|
||||
+ (ipaddr_len == 20)) {
|
||||
+ char *pos = ipbuf;
|
||||
+ int j;
|
||||
+ for(j = 0; j < ipaddr_len; ++j) {
|
||||
+ *pos++ = VAL2HEX(ipaddr_data[j]);
|
||||
+ *pos++ = ':';
|
||||
+ }
|
||||
+ *pos = '\0';
|
||||
+ rtn = strdup(ipbuf);
|
||||
}
|
||||
- *pos = '\0';
|
||||
- rtn = strdup(ipbuf);
|
||||
+ else
|
||||
+ NETSNMP_LOGONCE((LOG_WARNING, "unexpected ip addr length %d\n",
|
||||
+ ipaddr_len));
|
||||
}
|
||||
- else
|
||||
- NETSNMP_LOGONCE((LOG_WARNING, "unexpected ip addr length %d\n",
|
||||
- oname->d.iPAddress->length));
|
||||
|
||||
break;
|
||||
default:
|
||||
@@ -485,7 +489,7 @@ netsnmp_openssl_cert_get_subjectAltNames(X509 *ocert, char **buf, int *len)
|
||||
void
|
||||
netsnmp_openssl_cert_dump_extensions(X509 *ocert)
|
||||
{
|
||||
- X509_EXTENSION *extension;
|
||||
+ const X509_EXTENSION *extension;
|
||||
const char *extension_name;
|
||||
char buf[SNMP_MAXBUF], *buf_ptr = buf, *str, *lf;
|
||||
int i, num_extensions, buf_len, nid;
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
|
@ -1,270 +0,0 @@
|
|||
955511 - net-snmpd crash on time out
|
||||
969061 - net-snmpd crash on time out
|
||||
1038011 - net-snmp: snmpd crashes/hangs when AgentX subagent times-out
|
||||
|
||||
Based on usptream commit 793d596838ff7cb48a73b675d62897c56c9e62df,
|
||||
heavily backported to net-snmp-5.5
|
||||
|
||||
diff -up net-snmp-5.7.2/agent/mibgroup/agentx/master_admin.c.disconnect-crash net-snmp-5.7.2/agent/mibgroup/agentx/master_admin.c
|
||||
--- net-snmp-5.7.2/agent/mibgroup/agentx/master_admin.c.disconnect-crash 2013-07-03 15:26:35.884813210 +0200
|
||||
+++ net-snmp-5.7.2/agent/mibgroup/agentx/master_admin.c 2013-07-03 15:26:35.908813135 +0200
|
||||
@@ -158,6 +158,7 @@ close_agentx_session(netsnmp_session * s
|
||||
for (sp = session->subsession; sp != NULL; sp = sp->next) {
|
||||
|
||||
if (sp->sessid == sessid) {
|
||||
+ netsnmp_remove_delegated_requests_for_session(sp);
|
||||
unregister_mibs_by_session(sp);
|
||||
unregister_index_by_session(sp);
|
||||
unregister_sysORTable_by_session(sp);
|
||||
diff -up net-snmp-5.7.2/agent/mibgroup/agentx/master.c.disconnect-crash net-snmp-5.7.2/agent/mibgroup/agentx/master.c
|
||||
--- net-snmp-5.7.2/agent/mibgroup/agentx/master.c.disconnect-crash 2013-07-03 15:26:35.000000000 +0200
|
||||
+++ net-snmp-5.7.2/agent/mibgroup/agentx/master.c 2013-07-03 15:29:00.644362208 +0200
|
||||
@@ -222,7 +222,7 @@ agentx_got_response(int operation,
|
||||
/* response is too late, free the cache */
|
||||
if (magic)
|
||||
netsnmp_free_delegated_cache((netsnmp_delegated_cache*) magic);
|
||||
- return 0;
|
||||
+ return 1;
|
||||
}
|
||||
requests = cache->requests;
|
||||
|
||||
diff -up net-snmp-5.7.2/agent/snmp_agent.c.disconnect-crash net-snmp-5.7.2/agent/snmp_agent.c
|
||||
--- net-snmp-5.7.2/agent/snmp_agent.c.disconnect-crash 2013-07-03 15:26:35.893813182 +0200
|
||||
+++ net-snmp-5.7.2/agent/snmp_agent.c 2013-07-03 15:28:28.979460861 +0200
|
||||
@@ -1446,6 +1446,7 @@ free_agent_snmp_session(netsnmp_agent_se
|
||||
netsnmp_free_cachemap(asp->cache_store);
|
||||
asp->cache_store = NULL;
|
||||
}
|
||||
+ agent_snmp_session_release_cancelled(asp);
|
||||
SNMP_FREE(asp);
|
||||
}
|
||||
|
||||
@@ -1457,6 +1458,11 @@ netsnmp_check_for_delegated(netsnmp_agen
|
||||
|
||||
if (NULL == asp->treecache)
|
||||
return 0;
|
||||
+
|
||||
+ if (agent_snmp_session_is_cancelled(asp)) {
|
||||
+ printf("request %p cancelled\n", asp);
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
for (i = 0; i <= asp->treecache_num; i++) {
|
||||
for (request = asp->treecache[i].requests_begin; request;
|
||||
@@ -1535,39 +1541,48 @@ int
|
||||
netsnmp_remove_delegated_requests_for_session(netsnmp_session *sess)
|
||||
{
|
||||
netsnmp_agent_session *asp;
|
||||
- int count = 0;
|
||||
+ int total_count = 0;
|
||||
|
||||
for (asp = agent_delegated_list; asp; asp = asp->next) {
|
||||
/*
|
||||
* check each request
|
||||
*/
|
||||
+ int i;
|
||||
+ int count = 0;
|
||||
netsnmp_request_info *request;
|
||||
- for(request = asp->requests; request; request = request->next) {
|
||||
- /*
|
||||
- * check session
|
||||
- */
|
||||
- netsnmp_assert(NULL!=request->subtree);
|
||||
- if(request->subtree->session != sess)
|
||||
- continue;
|
||||
+ for (i = 0; i <= asp->treecache_num; i++) {
|
||||
+ for (request = asp->treecache[i].requests_begin; request;
|
||||
+ request = request->next) {
|
||||
+ /*
|
||||
+ * check session
|
||||
+ */
|
||||
+ netsnmp_assert(NULL!=request->subtree);
|
||||
+ if(request->subtree->session != sess)
|
||||
+ continue;
|
||||
|
||||
- /*
|
||||
- * matched! mark request as done
|
||||
- */
|
||||
- netsnmp_request_set_error(request, SNMP_ERR_GENERR);
|
||||
- ++count;
|
||||
+ /*
|
||||
+ * matched! mark request as done
|
||||
+ */
|
||||
+ netsnmp_request_set_error(request, SNMP_ERR_GENERR);
|
||||
+ ++count;
|
||||
+ }
|
||||
+ }
|
||||
+ if (count) {
|
||||
+ agent_snmp_session_mark_cancelled(asp);
|
||||
+ total_count += count;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* if we found any, that request may be finished now
|
||||
*/
|
||||
- if(count) {
|
||||
+ if(total_count) {
|
||||
DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session "
|
||||
- "%8p\n", count, sess));
|
||||
- netsnmp_check_outstanding_agent_requests();
|
||||
+ "%8p\n", total_count, sess));
|
||||
+ netsnmp_check_delegated_requests();
|
||||
}
|
||||
|
||||
- return count;
|
||||
+ return total_count;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -2739,19 +2754,11 @@ handle_var_requests(netsnmp_agent_sessio
|
||||
return final_status;
|
||||
}
|
||||
|
||||
-/*
|
||||
- * loop through our sessions known delegated sessions and check to see
|
||||
- * if they've completed yet. If there are no more delegated sessions,
|
||||
- * check for and process any queued requests
|
||||
- */
|
||||
void
|
||||
-netsnmp_check_outstanding_agent_requests(void)
|
||||
+netsnmp_check_delegated_requests(void)
|
||||
{
|
||||
netsnmp_agent_session *asp, *prev_asp = NULL, *next_asp = NULL;
|
||||
|
||||
- /*
|
||||
- * deal with delegated requests
|
||||
- */
|
||||
for (asp = agent_delegated_list; asp; asp = next_asp) {
|
||||
next_asp = asp->next; /* save in case we clean up asp */
|
||||
if (!netsnmp_check_for_delegated(asp)) {
|
||||
@@ -2790,6 +2797,22 @@ netsnmp_check_outstanding_agent_requests
|
||||
prev_asp = asp;
|
||||
}
|
||||
}
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * loop through our sessions known delegated sessions and check to see
|
||||
+ * if they've completed yet. If there are no more delegated sessions,
|
||||
+ * check for and process any queued requests
|
||||
+ */
|
||||
+void
|
||||
+netsnmp_check_outstanding_agent_requests(void)
|
||||
+{
|
||||
+ netsnmp_agent_session *asp;
|
||||
+
|
||||
+ /*
|
||||
+ * deal with delegated requests
|
||||
+ */
|
||||
+ netsnmp_check_delegated_requests();
|
||||
|
||||
/*
|
||||
* if we are processing a set and there are more delegated
|
||||
@@ -2819,7 +2842,8 @@ netsnmp_check_outstanding_agent_requests
|
||||
|
||||
netsnmp_processing_set = netsnmp_agent_queued_list;
|
||||
DEBUGMSGTL(("snmp_agent", "SET request remains queued while "
|
||||
- "delegated requests finish, asp = %8p\n", asp));
|
||||
+ "delegated requests finish, asp = %8p\n",
|
||||
+ agent_delegated_list));
|
||||
break;
|
||||
}
|
||||
#endif /* NETSNMP_NO_WRITE_SUPPORT */
|
||||
@@ -2880,6 +2904,11 @@ check_delayed_request(netsnmp_agent_sess
|
||||
case SNMP_MSG_GETBULK:
|
||||
case SNMP_MSG_GETNEXT:
|
||||
netsnmp_check_all_requests_status(asp, 0);
|
||||
+ if (agent_snmp_session_is_cancelled(asp)) {
|
||||
+ printf("request %p is cancelled\n", asp);
|
||||
+ DEBUGMSGTL(("snmp_agent","canceling next walk for asp %p\n", asp));
|
||||
+ break;
|
||||
+ }
|
||||
handle_getnext_loop(asp);
|
||||
if (netsnmp_check_for_delegated(asp) &&
|
||||
netsnmp_check_transaction_id(asp->pdu->transid) !=
|
||||
@@ -3838,4 +3867,73 @@ netsnmp_set_all_requests_error(netsnmp_a
|
||||
return error_value;
|
||||
}
|
||||
#endif /* NETSNMP_FEATURE_REMOVE_SET_ALL_REQUESTS_ERROR */
|
||||
+
|
||||
+/*
|
||||
+ * Ugly hack to fix bug #950602 and preserve ABI
|
||||
+ * (the official patch adds netsnmp_agent_session->flags).
|
||||
+ * We must create parallel database of netsnmp_agent_sessions
|
||||
+ * and put cancelled requests there instead of marking
|
||||
+ * netsnmp_agent_session->flags.
|
||||
+ */
|
||||
+static netsnmp_agent_session **cancelled_agent_snmp_sessions;
|
||||
+static int cancelled_agent_snmp_sessions_count;
|
||||
+static int cancelled_agent_snmp_sessions_max;
|
||||
+
|
||||
+int
|
||||
+agent_snmp_session_mark_cancelled(netsnmp_agent_session *session)
|
||||
+{
|
||||
+ DEBUGMSGTL(("agent:cancelled", "Cancelling session %p\n", session));
|
||||
+ if (!session)
|
||||
+ return 0;
|
||||
+ if (cancelled_agent_snmp_sessions_count + 1 > cancelled_agent_snmp_sessions_max) {
|
||||
+ netsnmp_agent_session **aux;
|
||||
+ int max = cancelled_agent_snmp_sessions_max + 10;
|
||||
+ aux = realloc(cancelled_agent_snmp_sessions, sizeof(netsnmp_agent_session*) * max);
|
||||
+ if (!aux)
|
||||
+ return SNMP_ERR_GENERR;
|
||||
+ cancelled_agent_snmp_sessions = aux;
|
||||
+ cancelled_agent_snmp_sessions_max = max;
|
||||
+ }
|
||||
+ cancelled_agent_snmp_sessions[cancelled_agent_snmp_sessions_count] = session;
|
||||
+ cancelled_agent_snmp_sessions_count++;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+agent_snmp_session_is_cancelled(netsnmp_agent_session *session)
|
||||
+{
|
||||
+ int i;
|
||||
+ for (i=0; i<cancelled_agent_snmp_sessions_count; i++)
|
||||
+ if (cancelled_agent_snmp_sessions[i] == session) {
|
||||
+ DEBUGMSGTL(("agent:cancelled", "session %p is cancelled\n", session));
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+agent_snmp_session_release_cancelled(netsnmp_agent_session *session)
|
||||
+{
|
||||
+ int i, j;
|
||||
+
|
||||
+ if (!session)
|
||||
+ return 0;
|
||||
+
|
||||
+ DEBUGMSGTL(("agent:cancelled", "Removing session %p\n", session));
|
||||
+
|
||||
+ /* delete the session from cancelled_agent_snmp_sessions */
|
||||
+ for (i=0, j=0; j<cancelled_agent_snmp_sessions_count; i++, j++)
|
||||
+ if (cancelled_agent_snmp_sessions[j] == session)
|
||||
+ i--; /* don't increase i in this loop iteration */
|
||||
+ else
|
||||
+ cancelled_agent_snmp_sessions[i] = cancelled_agent_snmp_sessions[j];
|
||||
+
|
||||
+ cancelled_agent_snmp_sessions_count = i;
|
||||
+
|
||||
+ for (; i< cancelled_agent_snmp_sessions_max; i++)
|
||||
+ cancelled_agent_snmp_sessions[i] = NULL;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/** @} */
|
||||
+
|
||||
diff -up net-snmp-5.7.2/include/net-snmp/agent/snmp_agent.h.disconnect-crash net-snmp-5.7.2/include/net-snmp/agent/snmp_agent.h
|
||||
--- net-snmp-5.7.2/include/net-snmp/agent/snmp_agent.h.disconnect-crash 2012-10-10 00:28:58.000000000 +0200
|
||||
+++ net-snmp-5.7.2/include/net-snmp/agent/snmp_agent.h 2013-07-03 15:26:35.909813132 +0200
|
||||
@@ -240,6 +240,7 @@ extern "C" {
|
||||
int init_master_agent(void);
|
||||
void shutdown_master_agent(void);
|
||||
int agent_check_and_process(int block);
|
||||
+ void netsnmp_check_delegated_requests(void);
|
||||
void netsnmp_check_outstanding_agent_requests(void);
|
||||
|
||||
int netsnmp_request_set_error(netsnmp_request_info *request,
|
||||
|
|
@ -1,354 +0,0 @@
|
|||
Add APSL 2.0 license to the COPYING file.
|
||||
|
||||
There is only one file covered by this license:
|
||||
net-snmp-5.5/agent/mibgroup/host/data_access/swrun_darwin.c
|
||||
|
||||
This file is not used on Linux at all, it's only present in source
|
||||
tarball and net-snmp.src.rpm.
|
||||
|
||||
In addition, it's licensed under APSL 1.1, but it allows to relicense
|
||||
the code to 'any subsequent version of this License published by Apple'.
|
||||
According to http://fedoraproject.org/wiki/Licensing, APSL ver. 2.0 is
|
||||
better for us.
|
||||
|
||||
diff -up net-snmp-5.7.3/COPYING.skiFvk net-snmp-5.7.3/COPYING
|
||||
--- net-snmp-5.7.3/COPYING.skiFvk 2015-02-17 13:33:15.963257594 +0100
|
||||
+++ net-snmp-5.7.3/COPYING 2015-02-17 13:33:37.931241818 +0100
|
||||
@@ -325,3 +325,337 @@ PROFITS; OR BUSINESS INTERRUPTION) HOWEV
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+
|
||||
+---- Part 11: APPLE PUBLIC SOURCE LICENSE (APSL 2.0) ----
|
||||
+
|
||||
+Version 2.0 - August 6, 2003
|
||||
+
|
||||
+Please read this License carefully before downloading this software. By
|
||||
+downloading or using this software, you are agreeing to be bound by the terms
|
||||
+of this License. If you do not or cannot agree to the terms of this License,
|
||||
+please do not download or use the software.
|
||||
+
|
||||
+Apple Note: In January 2007, Apple changed its corporate name from "Apple
|
||||
+Computer, Inc." to "Apple Inc." This change has been reflected below and
|
||||
+copyright years updated, but no other changes have been made to the APSL 2.0.
|
||||
+
|
||||
+1. General; Definitions. This License applies to any program or other
|
||||
+work which Apple Inc. ("Apple") makes publicly available and which contains a
|
||||
+notice placed by Apple identifying such program or work as "Original Code" and
|
||||
+stating that it is subject to the terms of this Apple Public Source License
|
||||
+version 2.0 ("License"). As used in this License:
|
||||
+
|
||||
+1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the
|
||||
+grantor of rights, (i) claims of patents that are now or hereafter acquired,
|
||||
+owned by or assigned to Apple and (ii) that cover subject matter contained in
|
||||
+the Original Code, but only to the extent necessary to use, reproduce and/or
|
||||
+distribute the Original Code without infringement; and (b) in the case where
|
||||
+You are the grantor of rights, (i) claims of patents that are now or hereafter
|
||||
+acquired, owned by or assigned to You and (ii) that cover subject matter in
|
||||
+Your Modifications, taken alone or in combination with Original Code.
|
||||
+
|
||||
+1.2 "Contributor" means any person or entity that creates or contributes to
|
||||
+the creation of Modifications.
|
||||
+
|
||||
+1.3 "Covered Code" means the Original Code, Modifications, the combination
|
||||
+of Original Code and any Modifications, and/or any respective portions thereof.
|
||||
+
|
||||
+1.4 "Externally Deploy" means: (a) to sublicense, distribute or otherwise
|
||||
+make Covered Code available, directly or indirectly, to anyone other than You;
|
||||
+and/or (b) to use Covered Code, alone or as part of a Larger Work, in any way
|
||||
+to provide a service, including but not limited to delivery of content, through
|
||||
+electronic communication with a client other than You.
|
||||
+
|
||||
+1.5 "Larger Work" means a work which combines Covered Code or portions
|
||||
+thereof with code not governed by the terms of this License.
|
||||
+
|
||||
+1.6 "Modifications" mean any addition to, deletion from, and/or change to,
|
||||
+the substance and/or structure of the Original Code, any previous
|
||||
+Modifications, the combination of Original Code and any previous Modifications,
|
||||
+and/or any respective portions thereof. When code is released as a series of
|
||||
+files, a Modification is: (a) any addition to or deletion from the contents of
|
||||
+a file containing Covered Code; and/or (b) any new file or other representation
|
||||
+of computer program statements that contains any part of Covered Code.
|
||||
+
|
||||
+1.7 "Original Code" means (a) the Source Code of a program or other work as
|
||||
+originally made available by Apple under this License, including the Source
|
||||
+Code of any updates or upgrades to such programs or works made available by
|
||||
+Apple under this License, and that has been expressly identified by Apple as
|
||||
+such in the header file(s) of such work; and (b) the object code compiled from
|
||||
+such Source Code and originally made available by Apple under this License
|
||||
+
|
||||
+1.8 "Source Code" means the human readable form of a program or other work
|
||||
+that is suitable for making modifications to it, including all modules it
|
||||
+contains, plus any associated interface definition files, scripts used to
|
||||
+control compilation and installation of an executable (object code).
|
||||
+
|
||||
+1.9 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
+under this License. For legal entities, "You" or "Your" includes any entity
|
||||
+which controls, is controlled by, or is under common control with, You, where
|
||||
+"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
+management of such entity, whether by contract or otherwise, or (b) ownership
|
||||
+of fifty percent (50%) or more of the outstanding shares or beneficial
|
||||
+ownership of such entity.
|
||||
+
|
||||
+2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
+conditions of this License, Apple hereby grants You, effective on the date You
|
||||
+accept this License and download the Original Code, a world-wide, royalty-free,
|
||||
+non-exclusive license, to the extent of Apple's Applicable Patent Rights and
|
||||
+copyrights covering the Original Code, to do the following:
|
||||
+
|
||||
+2.1 Unmodified Code. You may use, reproduce, display, perform, internally
|
||||
+distribute within Your organization, and Externally Deploy verbatim, unmodified
|
||||
+copies of the Original Code, for commercial or non-commercial purposes,
|
||||
+provided that in each instance:
|
||||
+
|
||||
+(a) You must retain and reproduce in all copies of Original Code the
|
||||
+copyright and other proprietary notices and disclaimers of Apple as they appear
|
||||
+in the Original Code, and keep intact all notices in the Original Code that
|
||||
+refer to this License; and
|
||||
+
|
||||
+(b) You must include a copy of this License with every copy of Source Code
|
||||
+of Covered Code and documentation You distribute or Externally Deploy, and You
|
||||
+may not offer or impose any terms on such Source Code that alter or restrict
|
||||
+this License or the recipients' rights hereunder, except as permitted under
|
||||
+Section 6.
|
||||
+
|
||||
+2.2 Modified Code. You may modify Covered Code and use, reproduce,
|
||||
+display, perform, internally distribute within Your organization, and
|
||||
+Externally Deploy Your Modifications and Covered Code, for commercial or
|
||||
+non-commercial purposes, provided that in each instance You also meet all of
|
||||
+these conditions:
|
||||
+
|
||||
+(a) You must satisfy all the conditions of Section 2.1 with respect to the
|
||||
+Source Code of the Covered Code;
|
||||
+
|
||||
+(b) You must duplicate, to the extent it does not already exist, the notice
|
||||
+in Exhibit A in each file of the Source Code of all Your Modifications, and
|
||||
+cause the modified files to carry prominent notices stating that You changed
|
||||
+the files and the date of any change; and
|
||||
+
|
||||
+(c) If You Externally Deploy Your Modifications, You must make Source Code
|
||||
+of all Your Externally Deployed Modifications either available to those to whom
|
||||
+You have Externally Deployed Your Modifications, or publicly available. Source
|
||||
+Code of Your Externally Deployed Modifications must be released under the terms
|
||||
+set forth in this License, including the license grants set forth in Section 3
|
||||
+below, for as long as you Externally Deploy the Covered Code or twelve (12)
|
||||
+months from the date of initial External Deployment, whichever is longer. You
|
||||
+should preferably distribute the Source Code of Your Externally Deployed
|
||||
+Modifications electronically (e.g. download from a web site).
|
||||
+
|
||||
+2.3 Distribution of Executable Versions. In addition, if You Externally
|
||||
+Deploy Covered Code (Original Code and/or Modifications) in object code,
|
||||
+executable form only, You must include a prominent notice, in the code itself
|
||||
+as well as in related documentation, stating that Source Code of the Covered
|
||||
+Code is available under the terms of this License with information on how and
|
||||
+where to obtain such Source Code.
|
||||
+
|
||||
+2.4 Third Party Rights. You expressly acknowledge and agree that although
|
||||
+Apple and each Contributor grants the licenses to their respective portions of
|
||||
+the Covered Code set forth herein, no assurances are provided by Apple or any
|
||||
+Contributor that the Covered Code does not infringe the patent or other
|
||||
+intellectual property rights of any other entity. Apple and each Contributor
|
||||
+disclaim any liability to You for claims brought by any other entity based on
|
||||
+infringement of intellectual property rights or otherwise. As a condition to
|
||||
+exercising the rights and licenses granted hereunder, You hereby assume sole
|
||||
+responsibility to secure any other intellectual property rights needed, if any.
|
||||
+For example, if a third party patent license is required to allow You to
|
||||
+distribute the Covered Code, it is Your responsibility to acquire that license
|
||||
+before distributing the Covered Code.
|
||||
+
|
||||
+3. Your Grants. In consideration of, and as a condition to, the licenses
|
||||
+granted to You under this License, You hereby grant to any person or entity
|
||||
+receiving or distributing Covered Code under this License a non-exclusive,
|
||||
+royalty-free, perpetual, irrevocable license, under Your Applicable Patent
|
||||
+Rights and other intellectual property rights (other than patent) owned or
|
||||
+controlled by You, to use, reproduce, display, perform, modify, sublicense,
|
||||
+distribute and Externally Deploy Your Modifications of the same scope and
|
||||
+extent as Apple's licenses under Sections 2.1 and 2.2 above.
|
||||
+
|
||||
+4. Larger Works. You may create a Larger Work by combining Covered Code
|
||||
+with other code not governed by the terms of this License and distribute the
|
||||
+Larger Work as a single product. In each such instance, You must make sure the
|
||||
+requirements of this License are fulfilled for the Covered Code or any portion
|
||||
+thereof.
|
||||
+
|
||||
+5. Limitations on Patent License. Except as expressly stated in Section
|
||||
+2, no other patent rights, express or implied, are granted by Apple herein.
|
||||
+Modifications and/or Larger Works may require additional patent licenses from
|
||||
+Apple which Apple may grant in its sole discretion.
|
||||
+
|
||||
+6. Additional Terms. You may choose to offer, and to charge a fee for,
|
||||
+warranty, support, indemnity or liability obligations and/or other rights
|
||||
+consistent with the scope of the license granted herein ("Additional Terms") to
|
||||
+one or more recipients of Covered Code. However, You may do so only on Your own
|
||||
+behalf and as Your sole responsibility, and not on behalf of Apple or any
|
||||
+Contributor. You must obtain the recipient's agreement that any such Additional
|
||||
+Terms are offered by You alone, and You hereby agree to indemnify, defend and
|
||||
+hold Apple and every Contributor harmless for any liability incurred by or
|
||||
+claims asserted against Apple or such Contributor by reason of any such
|
||||
+Additional Terms.
|
||||
+
|
||||
+7. Versions of the License. Apple may publish revised and/or new versions
|
||||
+of this License from time to time. Each version will be given a distinguishing
|
||||
+version number. Once Original Code has been published under a particular
|
||||
+version of this License, You may continue to use it under the terms of that
|
||||
+version. You may also choose to use such Original Code under the terms of any
|
||||
+subsequent version of this License published by Apple. No one other than Apple
|
||||
+has the right to modify the terms applicable to Covered Code created under this
|
||||
+License.
|
||||
+
|
||||
+8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in
|
||||
+part pre-release, untested, or not fully tested works. The Covered Code may
|
||||
+contain errors that could cause failures or loss of data, and may be incomplete
|
||||
+or contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
+Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
+COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
+ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE"
|
||||
+FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
|
||||
+ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
|
||||
+LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
+SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF
|
||||
+QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH
|
||||
+CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
+COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
+REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
+ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
+WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED
|
||||
+REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You acknowledge
|
||||
+that the Covered Code is not intended for use in the operation of nuclear
|
||||
+facilities, aircraft navigation, communication systems, or air traffic control
|
||||
+machines in which case the failure of the Covered Code could lead to death,
|
||||
+personal injury, or severe physical or environmental damage.
|
||||
+
|
||||
+9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO
|
||||
+EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
+INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
+YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
+UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS
|
||||
+LIABILITY OR OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF
|
||||
+THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL
|
||||
+PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF
|
||||
+LIABILITY OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT
|
||||
+APPLY TO YOU. In no event shall Apple's total liability to You for all damages
|
||||
+(other than as may be required by applicable law) under this License exceed the
|
||||
+amount of fifty dollars ($50.00).
|
||||
+
|
||||
+10. Trademarks. This License does not grant any rights to use the
|
||||
+trademarks or trade names "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime
|
||||
+Streaming Server" or any other trademarks, service marks, logos or trade names
|
||||
+belonging to Apple (collectively "Apple Marks") or to any trademark, service
|
||||
+mark, logo or trade name belonging to any Contributor. You agree not to use
|
||||
+any Apple Marks in or as part of the name of products derived from the Original
|
||||
+Code or to endorse or promote products derived from the Original Code other
|
||||
+than as expressly permitted by and in strict compliance at all times with
|
||||
+Apple's third party trademark usage guidelines which are posted at
|
||||
+http://www.apple.com/legal/guidelinesfor3rdparties.html.
|
||||
+
|
||||
+11. Ownership. Subject to the licenses granted under this License, each
|
||||
+Contributor retains all rights, title and interest in and to any Modifications
|
||||
+made by such Contributor. Apple retains all rights, title and interest in and
|
||||
+to the Original Code and any Modifications made by or on behalf of Apple
|
||||
+("Apple Modifications"), and such Apple Modifications will not be automatically
|
||||
+subject to this License. Apple may, at its sole discretion, choose to license
|
||||
+such Apple Modifications under this License, or on different terms from those
|
||||
+contained in this License or may choose not to license them at all.
|
||||
+
|
||||
+12. Termination.
|
||||
+
|
||||
+12.1 Termination. This License and the rights granted hereunder will
|
||||
+terminate:
|
||||
+
|
||||
+(a) automatically without notice from Apple if You fail to comply with any
|
||||
+term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
+aware of such breach; (b) immediately in the event of the circumstances
|
||||
+described in Section 13.5(b); or (c) automatically without notice from Apple
|
||||
+if You, at any time during the term of this License, commence an action for
|
||||
+patent infringement against Apple; provided that Apple did not first commence
|
||||
+an action for patent infringement against You in that instance.
|
||||
+
|
||||
+12.2 Effect of Termination. Upon termination, You agree to immediately stop
|
||||
+any further use, reproduction, modification, sublicensing and distribution of
|
||||
+the Covered Code. All sublicenses to the Covered Code which have been properly
|
||||
+granted prior to termination shall survive any termination of this License.
|
||||
+Provisions which, by their nature, should remain in effect beyond the
|
||||
+termination of this License shall survive, including but not limited to
|
||||
+Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other
|
||||
+for compensation, indemnity or damages of any sort solely as a result of
|
||||
+terminating this License in accordance with its terms, and termination of this
|
||||
+License will be without prejudice to any other right or remedy of any party.
|
||||
+
|
||||
+13. Miscellaneous.
|
||||
+
|
||||
+13.1 Government End Users. The Covered Code is a "commercial item" as
|
||||
+defined in FAR 2.101. Government software and technical data rights in the
|
||||
+Covered Code include only those rights customarily provided to the public as
|
||||
+defined in this License. This customary commercial license in technical data
|
||||
+and software is provided in accordance with FAR 12.211 (Technical Data) and
|
||||
+12.212 (Computer Software) and, for Department of Defense purchases, DFAR
|
||||
+252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in
|
||||
+Commercial Computer Software or Computer Software Documentation). Accordingly,
|
||||
+all U.S. Government End Users acquire Covered Code with only those rights set
|
||||
+forth herein.
|
||||
+
|
||||
+13.2 Relationship of Parties. This License will not be construed as
|
||||
+creating an agency, partnership, joint venture or any other form of legal
|
||||
+association between or among You, Apple or any Contributor, and You will not
|
||||
+represent to the contrary, whether expressly, by implication, appearance or
|
||||
+otherwise.
|
||||
+
|
||||
+13.3 Independent Development. Nothing in this License will impair Apple's
|
||||
+right to acquire, license, develop, have others develop for it, market and/or
|
||||
+distribute technology or products that perform the same or similar functions
|
||||
+as, or otherwise compete with, Modifications, Larger Works, technology or
|
||||
+products that You may develop, produce, market or distribute.
|
||||
+
|
||||
+13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce
|
||||
+any provision of this License will not be deemed a waiver of future enforcement
|
||||
+of that or any other provision. Any law or regulation which provides that the
|
||||
+language of a contract shall be construed against the drafter will not apply to
|
||||
+this License.
|
||||
+
|
||||
+13.5 Severability. (a) If for any reason a court of competent jurisdiction
|
||||
+finds any provision of this License, or portion thereof, to be unenforceable,
|
||||
+that provision of the License will be enforced to the maximum extent
|
||||
+permissible so as to effect the economic benefits and intent of the parties,
|
||||
+and the remainder of this License will continue in full force and effect. (b)
|
||||
+Notwithstanding the foregoing, if applicable law prohibits or restricts You
|
||||
+from fully and/or specifically complying with Sections 2 and/or 3 or prevents
|
||||
+the enforceability of either of those Sections, this License will immediately
|
||||
+terminate and You must immediately discontinue any use of the Covered Code and
|
||||
+destroy all copies of it that are in your possession or control.
|
||||
+
|
||||
+13.6 Dispute Resolution. Any litigation or other dispute resolution between
|
||||
+You and Apple relating to this License shall take place in the Northern
|
||||
+District of California, and You and Apple hereby consent to the personal
|
||||
+jurisdiction of, and venue in, the state and federal courts within that
|
||||
+District with respect to this License. The application of the United Nations
|
||||
+Convention on Contracts for the International Sale of Goods is expressly
|
||||
+excluded.
|
||||
+
|
||||
+13.7 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
+agreement between the parties with respect to the subject matter hereof. This
|
||||
+License shall be governed by the laws of the United States and the State of
|
||||
+California, except that body of California law concerning conflicts of law.
|
||||
+
|
||||
+Where You are located in the province of Quebec, Canada, the following clause
|
||||
+applies: The parties hereby confirm that they have requested that this License
|
||||
+and all related documents be drafted in English. Les parties ont exige que le
|
||||
+present contrat et tous les documents connexes soient rediges en anglais.
|
||||
+
|
||||
+EXHIBIT A.
|
||||
+
|
||||
+"Portions Copyright (c) 1999-2007 Apple Inc. All Rights Reserved.
|
||||
+
|
||||
+This file contains Original Code and/or Modifications of Original Code as
|
||||
+defined in and that are subject to the Apple Public Source License Version 2.0
|
||||
+(the 'License'). You may not use this file except in compliance with the
|
||||
+License. Please obtain a copy of the License at
|
||||
+http://www.opensource.apple.com/apsl/ and read it before using this file.
|
||||
+
|
||||
+The Original Code and all software distributed under the License are
|
||||
+distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
|
||||
+OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
+LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
+PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
|
||||
+specific language governing rights and limitations under the License."
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
Let net-snmp-create-v3-user save settings into /etc/ instead of /usr/
|
||||
|
||||
diff -up net-snmp-5.5/net-snmp-create-v3-user.in.orig net-snmp-5.5/net-snmp-create-v3-user.in
|
||||
--- net-snmp-5.5/net-snmp-create-v3-user.in.orig 2008-07-22 16:33:25.000000000 +0200
|
||||
+++ net-snmp-5.5/net-snmp-create-v3-user.in 2009-09-29 16:30:36.000000000 +0200
|
||||
@@ -158,7 +158,7 @@ if test ! -d $outfile ; then
|
||||
touch $outfile
|
||||
fi
|
||||
echo $line >> $outfile
|
||||
-outfile="@datadir@/snmp/snmpd.conf"
|
||||
+outfile="/etc/snmp/snmpd.conf"
|
||||
line="$token $user"
|
||||
echo "adding the following line to $outfile:"
|
||||
echo " " $line
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
554747 - net-snmp-config should not contain perl options
|
||||
|
||||
Remove rpath from net-snmp-config --agent-libs output.
|
||||
|
||||
diff -up net-snmp-5.7/net-snmp-config.in.perl-linking net-snmp-5.7/net-snmp-config.in
|
||||
--- net-snmp-5.7/net-snmp-config.in.perl-linking 2011-07-02 00:35:46.000000000 +0200
|
||||
+++ net-snmp-5.7/net-snmp-config.in 2011-07-07 13:30:01.635798817 +0200
|
||||
@@ -50,7 +50,7 @@ NSC_LDFLAGS="@LDFLAGS@"
|
||||
|
||||
NSC_LIBS="@LIBS@"
|
||||
NSC_LNETSNMPLIBS="@LNETSNMPLIBS@"
|
||||
-NSC_LAGENTLIBS="@LAGENTLIBS@ @PERLLDOPTS_FOR_APPS@"
|
||||
+NSC_LAGENTLIBS="@LAGENTLIBS@"
|
||||
NSC_LMIBLIBS="@LMIBLIBS@"
|
||||
|
||||
NSC_INCLUDEDIR=${includedir}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
diff -up net-snmp-5.7.3/man/netsnmp_config_api.3.def.oSBcEB net-snmp-5.7.3/man/netsnmp_config_api.3.def
|
||||
--- net-snmp-5.7.3/man/netsnmp_config_api.3.def.oSBcEB 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/man/netsnmp_config_api.3.def 2015-02-17 13:32:38.903284207 +0100
|
||||
@@ -295,7 +295,7 @@ for one particular machine.
|
||||
.PP
|
||||
The default list of directories to search is \fC SYSCONFDIR/snmp\fP,
|
||||
followed by \fC DATADIR/snmp\fP,
|
||||
-followed by \fC LIBDIR/snmp\fP,
|
||||
+followed by \fC /usr/lib(64)/snmp\fP,
|
||||
followed by \fC $HOME/.snmp\fP.
|
||||
This list can be changed by setting the environmental variable
|
||||
.I SNMPCONFPATH
|
||||
@@ -365,7 +365,7 @@ function that it should abort the operat
|
||||
SNMPCONFPATH
|
||||
A colon separated list of directories to search for configuration
|
||||
files in.
|
||||
-Default: SYSCONFDIR/snmp:DATADIR/snmp:LIBDIR/snmp:$HOME/.snmp
|
||||
+Default: SYSCONFDIR/snmp:DATADIR/snmp:/usr/lib(64)/snmp:$HOME/.snmp
|
||||
.SH "SEE ALSO"
|
||||
netsnmp_mib_api(3), snmp_api(3)
|
||||
.\" Local Variables:
|
||||
diff -up net-snmp-5.7.3/man/snmp_config.5.def.oSBcEB net-snmp-5.7.3/man/snmp_config.5.def
|
||||
--- net-snmp-5.7.3/man/snmp_config.5.def.oSBcEB 2015-02-17 13:32:04.251309092 +0100
|
||||
+++ net-snmp-5.7.3/man/snmp_config.5.def 2015-02-17 13:33:09.217262438 +0100
|
||||
@@ -10,7 +10,7 @@ First off, there are numerous places tha
|
||||
found and read from. By default, the applications look for
|
||||
configuration files in the following 4 directories, in order:
|
||||
SYSCONFDIR/snmp,
|
||||
-DATADIR/snmp, LIBDIR/snmp, and $HOME/.snmp. In each of these
|
||||
+DATADIR/snmp, /usr/lib(64)/snmp, and $HOME/.snmp. In each of these
|
||||
directories, it looks for files snmp.conf, snmpd.conf and/or
|
||||
snmptrapd.conf, as well as snmp.local.conf, snmpd.local.conf
|
||||
and/or snmptrapd.local.conf. *.local.conf are always
|
||||
diff -up net-snmp-5.7.3/man/snmpd.conf.5.def.oSBcEB net-snmp-5.7.3/man/snmpd.conf.5.def
|
||||
--- net-snmp-5.7.3/man/snmpd.conf.5.def.oSBcEB 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/man/snmpd.conf.5.def 2015-02-17 13:32:04.251309092 +0100
|
||||
@@ -1502,7 +1502,7 @@ filename), and call the initialisation r
|
||||
.RS
|
||||
.IP "Note:"
|
||||
If the specified PATH is not a fully qualified filename, it will
|
||||
-be interpreted relative to LIBDIR/snmp/dlmod, and \fC.so\fR
|
||||
+be interpreted relative to /usr/lib(64)/snmp/dlmod, and \fC.so\fR
|
||||
will be appended to the filename.
|
||||
.RE
|
||||
.PP
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
Don't check tests which depend on DNS - it's disabled in Koji
|
||||
|
||||
diff -up net-snmp-5.7.2/testing/fulltests/default/T070com2sec_simple.debug net-snmp-5.7.2/testing/fulltests/default/T070com2sec_simple
|
||||
--- net-snmp-5.7.2/testing/fulltests/default/T070com2sec_simple.debug 2012-10-10 00:28:58.000000000 +0200
|
||||
+++ net-snmp-5.7.2/testing/fulltests/default/T070com2sec_simple 2012-10-18 10:16:39.276416510 +0200
|
||||
@@ -134,6 +134,10 @@ SAVECHECKAGENT '<"c406a", 255.255.255.25
|
||||
SAVECHECKAGENT 'line 30: Error:' # msg from h_strerror so it varies
|
||||
SAVECHECKAGENT 'line 31: Error:' # msg from h_strerror so it varies
|
||||
|
||||
+FINISHED
|
||||
+
|
||||
+# don't test the later, it depends on DNS, which is not available in Koji
|
||||
+
|
||||
CHECKAGENT '<"c408a"'
|
||||
if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
CHECKAGENT 'line 32: Error:'
|
||||
diff -up net-snmp-5.7.2/testing/fulltests/default/T071com2sec6_simple.debug net-snmp-5.7.2/testing/fulltests/default/T071com2sec6_simple
|
||||
--- net-snmp-5.7.2/testing/fulltests/default/T071com2sec6_simple.debug 2012-10-10 00:28:58.000000000 +0200
|
||||
+++ net-snmp-5.7.2/testing/fulltests/default/T071com2sec6_simple 2012-10-18 10:16:39.276416510 +0200
|
||||
@@ -132,6 +132,9 @@ SAVECHECKAGENT '<"c606a", ffff:ffff:ffff
|
||||
SAVECHECKAGENT 'line 27: Error:'
|
||||
SAVECHECKAGENT 'line 28: Error:'
|
||||
|
||||
+FINISHED
|
||||
+
|
||||
+# don't test the later, it depends on DNS, which is not available in Koji
|
||||
# 608
|
||||
CHECKAGENT '<"c608a"'
|
||||
if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
729738 - net-snmp dumps core in netsnmp_oid_find_prefix
|
||||
1038011 - net-snmp: snmpd crashes/hangs when AgentX subagent times-out
|
||||
|
||||
commit f9304c83f76202db0e684269ca1af32e43cd9db4
|
||||
Author: Jan Safranek <jsafranek@users.sourceforge.net>
|
||||
Date: Tue Feb 7 14:53:44 2012 +0100
|
||||
|
||||
CHANGES: PATCH 1633670: fixed snmpd crashing when an AgentX subagent disconnect in the middle of processing of a request.
|
||||
|
||||
I fixed also the memory leak reported in the tracker comments.
|
||||
|
||||
diff --git a/agent/mibgroup/agentx/master.c b/agent/mibgroup/agentx/master.c
|
||||
index c42a42a..baeebaf 100644
|
||||
--- a/agent/mibgroup/agentx/master.c
|
||||
+++ b/agent/mibgroup/agentx/master.c
|
||||
@@ -219,6 +219,9 @@ agentx_got_response(int operation,
|
||||
if (!cache) {
|
||||
DEBUGMSGTL(("agentx/master", "response too late on session %8p\n",
|
||||
session));
|
||||
+ /* response is too late, free the cache */
|
||||
+ if (magic)
|
||||
+ netsnmp_free_delegated_cache((netsnmp_delegated_cache*) magic);
|
||||
return 0;
|
||||
}
|
||||
requests = cache->requests;
|
||||
@@ -606,6 +609,8 @@ agentx_master_handler(netsnmp_mib_handler *handler,
|
||||
result = snmp_async_send(ax_session, pdu, agentx_got_response, cb_data);
|
||||
if (result == 0) {
|
||||
snmp_free_pdu(pdu);
|
||||
+ if (cb_data)
|
||||
+ netsnmp_free_delegated_cache((netsnmp_delegated_cache*) cb_data);
|
||||
}
|
||||
|
||||
return SNMP_ERR_NOERROR;
|
||||
diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c
|
||||
index f16f392..b84b85e 100644
|
||||
--- a/agent/mibgroup/agentx/master_admin.c
|
||||
+++ b/agent/mibgroup/agentx/master_admin.c
|
||||
@@ -133,11 +133,16 @@ close_agentx_session(netsnmp_session * session, int sessid)
|
||||
* requests, so that the delegated request will be completed and
|
||||
* further requests can be processed
|
||||
*/
|
||||
- netsnmp_remove_delegated_requests_for_session(session);
|
||||
+ while (netsnmp_remove_delegated_requests_for_session(session)) {
|
||||
+ DEBUGMSGTL(("agentx/master", "Continue removing delegated reqests\n"));
|
||||
+ }
|
||||
+
|
||||
if (session->subsession != NULL) {
|
||||
netsnmp_session *subsession = session->subsession;
|
||||
for(; subsession; subsession = subsession->next) {
|
||||
- netsnmp_remove_delegated_requests_for_session(subsession);
|
||||
+ while (netsnmp_remove_delegated_requests_for_session(subsession)) {
|
||||
+ DEBUGMSGTL(("agentx/master", "Continue removing delegated subsession reqests\n"));
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
926223 - net-snmp: Does not support aarch64 in f19 and rawhide
|
||||
|
||||
Update autoconf version to make the test suite happy.
|
||||
|
||||
diff -up net-snmp-5.7.2/dist/autoconf-version.autoreconf net-snmp-5.7.2/dist/autoconf-version
|
||||
--- net-snmp-5.7.2/dist/autoconf-version.autoreconf 2013-03-25 13:00:15.002745347 +0100
|
||||
+++ net-snmp-5.7.2/dist/autoconf-version 2013-03-25 13:00:17.207736442 +0100
|
||||
@@ -1 +1 @@
|
||||
-2.68
|
||||
+2.69
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
Make net-snmp-create-v3-user multilib-clean
|
||||
|
||||
The file had different NSC_AGENTLIBS on different architectures.
|
||||
|
||||
Source: upstream
|
||||
|
||||
commit 68300a9fb43568c5d833c48a2fef3ff16c2923c3
|
||||
Author: Jan Safranek <jsafranek@users.sourceforge.net>
|
||||
Date: Thu Feb 7 10:14:33 2013 +0100
|
||||
|
||||
Remove unused variables.
|
||||
|
||||
diff --git a/net-snmp-create-v3-user.in b/net-snmp-create-v3-user.in
|
||||
index 5288f3b..efa19c3 100644
|
||||
--- a/net-snmp-create-v3-user.in
|
||||
+++ b/net-snmp-create-v3-user.in
|
||||
@@ -10,23 +10,6 @@ exec_prefix=@exec_prefix@
|
||||
includedir=@includedir@
|
||||
libdir=@libdir@
|
||||
datarootdir=@datarootdir@
|
||||
-NSC_LDFLAGS="@LDFLAGS@"
|
||||
-NSC_INCLUDEDIR=${includedir}
|
||||
-NSC_LIBDIR=-L${libdir}
|
||||
-NSC_LIBS="@LIBS@"
|
||||
-NSC_AGENTLIBS="@AGENTLIBS@ @PERLLDOPTS_FOR_APPS@"
|
||||
-NSC_PREFIX=$prefix
|
||||
-NSC_EXEC_PREFIX=$exec_prefix
|
||||
-NSC_SRCDIR=@srcdir@
|
||||
-NSC_INCDIR=${NSC_PREFIX}/include
|
||||
-NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmp"
|
||||
-NSC_BASE_AGENT_LIBS="-lnetsnmpagent -lnetsnmpmibs -lnetsnmp"
|
||||
-NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs"
|
||||
-NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a snmplib/.libs/libnetsnmp.a"
|
||||
-
|
||||
-if test "x$NSC_SRCDIR" = "x." ; then
|
||||
- NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
|
||||
-fi
|
||||
|
||||
if @PSCMD@ | egrep ' snmpd *$' > /dev/null 2>&1 ; then
|
||||
echo "Apparently at least one snmpd demon is already running."
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,22 +0,0 @@
|
|||
diff -up net-snmp-5.7.3/perl/ASN/Makefile.PL.orig net-snmp-5.7.3/perl/ASN/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/ASN/Makefile.PL.orig 2016-05-06 10:35:30.005905040 +0200
|
||||
+++ net-snmp-5.7.3/perl/ASN/Makefile.PL 2016-05-06 10:35:57.518776400 +0200
|
||||
@@ -3,6 +3,7 @@ require 5;
|
||||
use Config;
|
||||
use Getopt::Long;
|
||||
my $lib_version;
|
||||
+my %MakeParams = ();
|
||||
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
diff -up net-snmp-5.7.3/perl/Makefile.PL.orig net-snmp-5.7.3/perl/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/Makefile.PL.orig 2016-05-06 10:34:38.975143641 +0200
|
||||
+++ net-snmp-5.7.3/perl/Makefile.PL 2016-05-06 10:35:13.326983024 +0200
|
||||
@@ -2,6 +2,7 @@ use ExtUtils::MakeMaker;
|
||||
use Config;
|
||||
use Getopt::Long;
|
||||
require 5;
|
||||
+my %MakeParams = ();
|
||||
|
||||
%MakeParams = InitMakeParams();
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,134 +0,0 @@
|
|||
1309080 - net-snmp-config specifies redhat-hardened-cc1 in cflags and causes gcc failure without redhat-rpm-config
|
||||
|
||||
Don't remove -Wall in perl Makefiles - it would remove -Wformat and gcc would fail with
|
||||
error: -Wformat-security ignored without -Wformat
|
||||
|
||||
+ there is one upstream patch below (to be removed on rebase)
|
||||
|
||||
diff -up net-snmp-5.7.3/perl/agent/default_store/Makefile.PL.cflags net-snmp-5.7.3/perl/agent/default_store/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/agent/default_store/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/agent/default_store/Makefile.PL 2016-02-24 12:17:05.154209526 +0100
|
||||
@@ -79,7 +79,7 @@ sub InitMakeParams {
|
||||
$Params{'LIBS'} = "-L../../../snmplib/.libs -L../../../snmplib/ " . $Params{'LIBS'};
|
||||
$Params{'CCFLAGS'} = "-I../../../include " . $Params{'CCFLAGS'};
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
diff -up net-snmp-5.7.3/perl/agent/Makefile.PL.cflags net-snmp-5.7.3/perl/agent/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/agent/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/agent/Makefile.PL 2016-02-24 12:17:05.154209526 +0100
|
||||
@@ -92,7 +92,7 @@ sub InitMakeParams {
|
||||
$Params{'LIBS'} = `$opts->{'nsconfig'} --libdir` . $Params{'LIBS'};
|
||||
# $Params{'PREREQ_PM'} = {'NetSNMP::OID' => '0.1'};
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
diff -up net-snmp-5.7.3/perl/agent/Support/Makefile.PL.cflags net-snmp-5.7.3/perl/agent/Support/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/agent/Support/Makefile.PL.cflags 2016-02-24 12:17:16.291271579 +0100
|
||||
+++ net-snmp-5.7.3/perl/agent/Support/Makefile.PL 2016-02-24 12:17:22.413305687 +0100
|
||||
@@ -86,7 +86,7 @@ sub InitMakeParams {
|
||||
$Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ " . $Params{'LIBS'};
|
||||
$Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
diff -up net-snmp-5.7.3/perl/ASN/Makefile.PL.cflags net-snmp-5.7.3/perl/ASN/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/ASN/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/ASN/Makefile.PL 2016-02-24 12:17:05.155209532 +0100
|
||||
@@ -86,7 +86,7 @@ sub InitMakeParams {
|
||||
$Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ " . $Params{'LIBS'};
|
||||
$Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
diff -up net-snmp-5.7.3/perl/default_store/Makefile.PL.cflags net-snmp-5.7.3/perl/default_store/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/default_store/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/default_store/Makefile.PL 2016-02-24 12:17:05.155209532 +0100
|
||||
@@ -79,7 +79,7 @@ sub InitMakeParams {
|
||||
$Params{'LIBS'} = "-L../../snmplib/.libs -L../../snmplib/ " . $Params{'LIBS'};
|
||||
$Params{'CCFLAGS'} = "-I../../include " . $Params{'CCFLAGS'};
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
diff -up net-snmp-5.7.3/perl/OID/Makefile.PL.cflags net-snmp-5.7.3/perl/OID/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/OID/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/OID/Makefile.PL 2016-02-24 12:17:05.155209532 +0100
|
||||
@@ -86,7 +86,7 @@ sub InitMakeParams {
|
||||
# } else {
|
||||
# $Params{'PREREQ_PM'} = {'SNMP' => '5.0'};
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'LIBS'} eq "" || $Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
diff -up net-snmp-5.7.3/perl/SNMP/Makefile.PL.cflags net-snmp-5.7.3/perl/SNMP/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/SNMP/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/SNMP/Makefile.PL 2016-02-24 12:17:05.155209532 +0100
|
||||
@@ -98,7 +98,7 @@ sub InitMakeParams {
|
||||
# } else {
|
||||
# $Params{'PREREQ_PM'} = { 'NetSNMP::default_store' => 0.01 };
|
||||
}
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if (!$ENV{'NETSNMP_PREFIX'}) {
|
||||
$prefix = `$opts->{'nsconfig'} --prefix`;
|
||||
chomp($prefix);
|
||||
diff -up net-snmp-5.7.3/perl/TrapReceiver/Makefile.PL.cflags net-snmp-5.7.3/perl/TrapReceiver/Makefile.PL
|
||||
--- net-snmp-5.7.3/perl/TrapReceiver/Makefile.PL.cflags 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/perl/TrapReceiver/Makefile.PL 2016-02-24 12:17:05.155209532 +0100
|
||||
@@ -124,7 +124,7 @@ sub InitMakeParams {
|
||||
$Params{'LIBS'} = `$opts->{'nsconfig'} --libdir` . " $Params{'LIBS'}";
|
||||
}
|
||||
|
||||
- $Params{'CCFLAGS'} =~ s/ -W(all|inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
+ $Params{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g; # ignore developer warnings
|
||||
if ($Params{'CCFLAGS'} eq "") {
|
||||
die "You need to install net-snmp first (I can't find net-snmp-config)";
|
||||
}
|
||||
|
||||
commit 127274f8f27fba264a4c0f91190fd6f8037cdf21
|
||||
Author: Jan Safranek <jsafranek@users.sourceforge.net>
|
||||
Date: Wed Feb 24 10:14:21 2016 +0100
|
||||
|
||||
Trim output of net-snmp-config --cflags.
|
||||
|
||||
We should report CFLAGS needed to import and use Net-SNMP headers, not
|
||||
CFLAGS used to compile actual Net-SNMP.
|
||||
|
||||
E.g. we should not report various distro fortify-source options.
|
||||
|
||||
diff --git a/net-snmp-config.in b/net-snmp-config.in
|
||||
index 7e34944..f3bffe9 100644
|
||||
--- a/net-snmp-config.in
|
||||
+++ b/net-snmp-config.in
|
||||
@@ -138,10 +138,10 @@ else
|
||||
;;
|
||||
#################################################### compile
|
||||
--base-cflags)
|
||||
- echo @CFLAGS@ @CPPFLAGS@ -I${NSC_INCLUDEDIR}
|
||||
+ echo -I${NSC_INCLUDEDIR}
|
||||
;;
|
||||
--cflags|--cf*)
|
||||
- echo @CFLAGS@ @DEVFLAGS@ @CPPFLAGS@ -I. -I${NSC_INCLUDEDIR}
|
||||
+ echo @DEVFLAGS@ -I. -I${NSC_INCLUDEDIR}
|
||||
;;
|
||||
--srcdir)
|
||||
echo $NSC_SRCDIR
|
||||
|
||||
|
||||
15
net-snmp-5.7.3-iterator-fix.patch
Normal file
15
net-snmp-5.7.3-iterator-fix.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/agent/mibgroup/host/data_access/swrun.c b/agent/mibgroup/host/data_access/swrun.c
|
||||
index 7b278eb..5f10ade 100644
|
||||
--- a/agent/mibgroup/host/data_access/swrun.c
|
||||
+++ b/agent/mibgroup/host/data_access/swrun.c
|
||||
@@ -143,6 +143,10 @@ swrun_count_processes_by_name( char *name )
|
||||
return 0; /* or -1 */
|
||||
|
||||
it = CONTAINER_ITERATOR( swrun_container );
|
||||
+ if((entry = (netsnmp_swrun_entry*)ITERATOR_FIRST( it )) != NULL) {
|
||||
+ if (0 == strcmp( entry->hrSWRunName, name ))
|
||||
+ i++;
|
||||
+ }
|
||||
while ((entry = (netsnmp_swrun_entry*)ITERATOR_NEXT( it )) != NULL) {
|
||||
if (0 == strcmp( entry->hrSWRunName, name ))
|
||||
i++;
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
diff -urNp old/apps/snmptrapd_sql.c new/apps/snmptrapd_sql.c
|
||||
--- old/apps/snmptrapd_sql.c 2017-07-18 09:44:00.655109694 +0200
|
||||
+++ new/apps/snmptrapd_sql.c 2017-07-19 12:51:14.836148821 +0200
|
||||
@@ -54,6 +54,7 @@
|
||||
#include <my_sys.h>
|
||||
#include <mysql.h>
|
||||
#include <errmsg.h>
|
||||
+#include <mysql_version.h>
|
||||
|
||||
netsnmp_feature_require(container_fifo)
|
||||
|
||||
@@ -437,6 +438,7 @@ netsnmp_mysql_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
+#if MYSQL_VERSION_ID < 100000
|
||||
#ifdef HAVE_BROKEN_LIBMYSQLCLIENT
|
||||
my_init();
|
||||
#else
|
||||
@@ -445,6 +447,7 @@ netsnmp_mysql_init(void)
|
||||
|
||||
/** load .my.cnf values */
|
||||
load_defaults ("my", _sql.groups, ¬_argc, ¬_argv);
|
||||
+#endif
|
||||
for(i=0; i < not_argc; ++i) {
|
||||
if (NULL == not_argv[i])
|
||||
continue;
|
||||
@@ -542,6 +545,10 @@ netsnmp_mysql_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
+#if MYSQL_VERSION_ID > 100000
|
||||
+ mysql_options(_sql.conn, MYSQL_READ_DEFAULT_GROUP, "snmptrapd");
|
||||
+#endif
|
||||
+
|
||||
/** try to connect; we'll try again later if we fail */
|
||||
(void) netsnmp_mysql_connect();
|
||||
|
||||
|
|
@ -1,374 +0,0 @@
|
|||
diff -urNp old/apps/snmpusm.c new/apps/snmpusm.c
|
||||
--- old/apps/snmpusm.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/apps/snmpusm.c 2017-02-20 15:20:36.994022905 +0100
|
||||
@@ -190,7 +190,7 @@ get_USM_DH_key(netsnmp_variable_list *va
|
||||
oid *keyoid, size_t keyoid_len) {
|
||||
u_char *dhkeychange;
|
||||
DH *dh;
|
||||
- BIGNUM *other_pub;
|
||||
+ BIGNUM *p, *g, *pub_key, *other_pub;
|
||||
u_char *key;
|
||||
size_t key_len;
|
||||
|
||||
@@ -205,25 +205,29 @@ get_USM_DH_key(netsnmp_variable_list *va
|
||||
dh = d2i_DHparams(NULL, &cp, dhvar->val_len);
|
||||
}
|
||||
|
||||
- if (!dh || !dh->g || !dh->p) {
|
||||
+ if (dh)
|
||||
+ DH_get0_pqg(dh, &p, NULL, &g);
|
||||
+
|
||||
+ if (!dh || !g || !p) {
|
||||
SNMP_FREE(dhkeychange);
|
||||
return SNMPERR_GENERR;
|
||||
}
|
||||
|
||||
- DH_generate_key(dh);
|
||||
- if (!dh->pub_key) {
|
||||
+ if (!DH_generate_key(dh)) {
|
||||
SNMP_FREE(dhkeychange);
|
||||
return SNMPERR_GENERR;
|
||||
}
|
||||
|
||||
- if (vars->val_len != (unsigned int)BN_num_bytes(dh->pub_key)) {
|
||||
+ DH_get0_key(dh, &pub_key, NULL);
|
||||
+
|
||||
+ if (vars->val_len != (unsigned int)BN_num_bytes(pub_key)) {
|
||||
SNMP_FREE(dhkeychange);
|
||||
fprintf(stderr,"incorrect diffie-helman lengths (%lu != %d)\n",
|
||||
- (unsigned long)vars->val_len, BN_num_bytes(dh->pub_key));
|
||||
+ (unsigned long)vars->val_len, BN_num_bytes(pub_key));
|
||||
return SNMPERR_GENERR;
|
||||
}
|
||||
|
||||
- BN_bn2bin(dh->pub_key, dhkeychange + vars->val_len);
|
||||
+ BN_bn2bin(pub_key, dhkeychange + vars->val_len);
|
||||
|
||||
key_len = DH_size(dh);
|
||||
if (!key_len) {
|
||||
diff -urNp old/configure new/configure
|
||||
--- old/configure 2017-02-20 10:08:16.440396223 +0100
|
||||
+++ new/configure 2017-02-20 10:57:15.749734281 +0100
|
||||
@@ -23176,9 +23176,9 @@ $as_echo "#define HAVE_AES_CFB128_ENCRYP
|
||||
fi
|
||||
|
||||
|
||||
- as_ac_Lib=`$as_echo "ac_cv_lib_${CRYPTO}''_EVP_MD_CTX_create" | $as_tr_sh`
|
||||
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_MD_CTX_create in -l${CRYPTO}" >&5
|
||||
-$as_echo_n "checking for EVP_MD_CTX_create in -l${CRYPTO}... " >&6; }
|
||||
+ as_ac_Lib=`$as_echo "ac_cv_lib_${CRYPTO}''_EVP_MD_CTX_new" | $as_tr_sh`
|
||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_MD_CTX_new in -l${CRYPTO}" >&5
|
||||
+$as_echo_n "checking for EVP_MD_CTX_new in -l${CRYPTO}... " >&6; }
|
||||
if eval \${$as_ac_Lib+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
@@ -23193,11 +23193,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
-char EVP_MD_CTX_create ();
|
||||
+char EVP_MD_CTX_new ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
-return EVP_MD_CTX_create ();
|
||||
+return EVP_MD_CTX_new ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
@@ -23216,10 +23216,10 @@ eval ac_res=\$$as_ac_Lib
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
|
||||
|
||||
-$as_echo "#define HAVE_EVP_MD_CTX_CREATE /**/" >>confdefs.h
|
||||
+$as_echo "#define HAVE_EVP_MD_CTX_NEW /**/" >>confdefs.h
|
||||
|
||||
|
||||
-$as_echo "#define HAVE_EVP_MD_CTX_DESTROY /**/" >>confdefs.h
|
||||
+$as_echo "#define HAVE_EVP_MD_CTX_FREE /**/" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
@@ -23293,7 +23293,7 @@ char SSL_library_init ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
-return SSL_library_init ();
|
||||
+return OPENSSL_init_ssl(0, NULL);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
diff -urNp old/configure.d/config_os_libs2 new/configure.d/config_os_libs2
|
||||
--- old/configure.d/config_os_libs2 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/configure.d/config_os_libs2 2017-02-20 10:56:21.041616611 +0100
|
||||
@@ -292,11 +292,11 @@ if test "x$tryopenssl" != "xno" -a "x$tr
|
||||
AC_DEFINE(HAVE_AES_CFB128_ENCRYPT, 1,
|
||||
[Define to 1 if you have the `AES_cfb128_encrypt' function.]))
|
||||
|
||||
- AC_CHECK_LIB(${CRYPTO}, EVP_MD_CTX_create,
|
||||
- AC_DEFINE([HAVE_EVP_MD_CTX_CREATE], [],
|
||||
- [Define to 1 if you have the `EVP_MD_CTX_create' function.])
|
||||
- AC_DEFINE([HAVE_EVP_MD_CTX_DESTROY], [],
|
||||
- [Define to 1 if you have the `EVP_MD_CTX_destroy' function.]))
|
||||
+ AC_CHECK_LIB(${CRYPTO}, EVP_MD_CTX_new,
|
||||
+ AC_DEFINE([HAVE_EVP_MD_CTX_NEW], [],
|
||||
+ [Define to 1 if you have the `EVP_MD_CTX_new' function.])
|
||||
+ AC_DEFINE([HAVE_EVP_MD_CTX_FREE], [],
|
||||
+ [Define to 1 if you have the `EVP_MD_CTX_free' function.]))
|
||||
fi
|
||||
if echo " $transport_result_list " | $GREP "DTLS" > /dev/null; then
|
||||
AC_CHECK_LIB(ssl, DTLSv1_method,
|
||||
@@ -307,7 +307,7 @@ if test "x$tryopenssl" != "xno" -a "x$tr
|
||||
TLSPROG=yes
|
||||
fi
|
||||
if echo " $transport_result_list " | $GREP "TLS" > /dev/null; then
|
||||
- AC_CHECK_LIB(ssl, SSL_library_init,
|
||||
+ AC_CHECK_LIB(ssl, OPENSSL_init_ssl,
|
||||
AC_DEFINE(HAVE_LIBSSL, 1,
|
||||
[Define to 1 if you have the `ssl' library (-lssl).])
|
||||
LIBCRYPTO=" -lssl $LIBCRYPTO",
|
||||
diff -urNp old/configure.systemd new/configure.systemd
|
||||
--- old/configure.systemd 2014-12-08 21:23:37.000000000 +0100
|
||||
+++ new/configure.systemd 2017-02-20 10:49:36.601692898 +0100
|
||||
@@ -23146,9 +23146,9 @@ $as_echo "#define HAVE_AES_CFB128_ENCRYP
|
||||
fi
|
||||
|
||||
|
||||
- as_ac_Lib=`$as_echo "ac_cv_lib_${CRYPTO}''_EVP_MD_CTX_create" | $as_tr_sh`
|
||||
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_MD_CTX_create in -l${CRYPTO}" >&5
|
||||
-$as_echo_n "checking for EVP_MD_CTX_create in -l${CRYPTO}... " >&6; }
|
||||
+ as_ac_Lib=`$as_echo "ac_cv_lib_${CRYPTO}''_EVP_MD_CTX_new" | $as_tr_sh`
|
||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_MD_CTX_new in -l${CRYPTO}" >&5
|
||||
+$as_echo_n "checking for EVP_MD_CTX_new in -l${CRYPTO}... " >&6; }
|
||||
if eval \${$as_ac_Lib+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
@@ -23163,11 +23163,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
-char EVP_MD_CTX_create ();
|
||||
+char EVP_MD_CTX_new ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
-return EVP_MD_CTX_create ();
|
||||
+return EVP_MD_CTX_new ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
@@ -23186,10 +23186,10 @@ eval ac_res=\$$as_ac_Lib
|
||||
$as_echo "$ac_res" >&6; }
|
||||
if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
|
||||
|
||||
-$as_echo "#define HAVE_EVP_MD_CTX_CREATE /**/" >>confdefs.h
|
||||
+$as_echo "#define HAVE_EVP_MD_CTX_NEW /**/" >>confdefs.h
|
||||
|
||||
|
||||
-$as_echo "#define HAVE_EVP_MD_CTX_DESTROY /**/" >>confdefs.h
|
||||
+$as_echo "#define HAVE_EVP_MD_CTX_FREE /**/" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
@@ -23263,7 +23263,7 @@ char SSL_library_init ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
-return SSL_library_init ();
|
||||
+return OPENSSL_init_ssl(0, NULL);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
diff -urNp old/include/net-snmp/net-snmp-config.h.in new/include/net-snmp/net-snmp-config.h.in
|
||||
--- old/include/net-snmp/net-snmp-config.h.in 2017-02-20 10:08:16.443522417 +0100
|
||||
+++ new/include/net-snmp/net-snmp-config.h.in 2017-02-20 10:24:05.790584283 +0100
|
||||
@@ -149,11 +149,11 @@
|
||||
/* Define to 1 if you have the `eval_pv' function. */
|
||||
#undef HAVE_EVAL_PV
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_create' function. */
|
||||
-#undef HAVE_EVP_MD_CTX_CREATE
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_new' function. */
|
||||
+#undef HAVE_EVP_MD_CTX_NEW
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */
|
||||
-#undef HAVE_EVP_MD_CTX_DESTROY
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_free' function. */
|
||||
+#undef HAVE_EVP_MD_CTX_FREE
|
||||
|
||||
/* Define if you have EVP_sha224/256 in openssl */
|
||||
#undef HAVE_EVP_SHA224
|
||||
diff -urNp old/include/net-snmp/net-snmp-config.h.in.systemd new/include/net-snmp/net-snmp-config.h.in.systemd
|
||||
--- old/include/net-snmp/net-snmp-config.h.in.systemd 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/include/net-snmp/net-snmp-config.h.in.systemd 2017-02-20 10:24:43.996918184 +0100
|
||||
@@ -149,11 +149,11 @@
|
||||
/* Define to 1 if you have the `eval_pv' function. */
|
||||
#undef HAVE_EVAL_PV
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_create' function. */
|
||||
-#undef HAVE_EVP_MD_CTX_CREATE
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_new' function. */
|
||||
+#undef HAVE_EVP_MD_CTX_NEW
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */
|
||||
-#undef HAVE_EVP_MD_CTX_DESTROY
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_free' function. */
|
||||
+#undef HAVE_EVP_MD_CTX_FREE
|
||||
|
||||
/* Define if you have EVP_sha224/256 in openssl */
|
||||
#undef HAVE_EVP_SHA224
|
||||
diff -urNp old/snmplib/keytools.c new/snmplib/keytools.c
|
||||
--- old/snmplib/keytools.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/snmplib/keytools.c 2017-02-20 10:30:27.412068264 +0100
|
||||
@@ -149,8 +149,8 @@ generate_Ku(const oid * hashtype, u_int
|
||||
*/
|
||||
#ifdef NETSNMP_USE_OPENSSL
|
||||
|
||||
-#ifdef HAVE_EVP_MD_CTX_CREATE
|
||||
- ctx = EVP_MD_CTX_create();
|
||||
+#ifdef HAVE_EVP_MD_CTX_NEW
|
||||
+ ctx = EVP_MD_CTX_new();
|
||||
#else
|
||||
ctx = malloc(sizeof(*ctx));
|
||||
if (!EVP_MD_CTX_init(ctx))
|
||||
@@ -259,8 +259,8 @@ generate_Ku(const oid * hashtype, u_int
|
||||
memset(buf, 0, sizeof(buf));
|
||||
#ifdef NETSNMP_USE_OPENSSL
|
||||
if (ctx) {
|
||||
-#ifdef HAVE_EVP_MD_CTX_DESTROY
|
||||
- EVP_MD_CTX_destroy(ctx);
|
||||
+#ifdef HAVE_EVP_MD_CTX_FREE
|
||||
+ EVP_MD_CTX_free(ctx);
|
||||
#else
|
||||
EVP_MD_CTX_cleanup(ctx);
|
||||
free(ctx);
|
||||
diff -urNp old/snmplib/scapi.c new/snmplib/scapi.c
|
||||
--- old/snmplib/scapi.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/snmplib/scapi.c 2017-02-20 10:27:34.152379515 +0100
|
||||
@@ -486,14 +486,14 @@ sc_hash(const oid * hashtype, size_t has
|
||||
}
|
||||
|
||||
/** initialize the pointer */
|
||||
-#ifdef HAVE_EVP_MD_CTX_CREATE
|
||||
- cptr = EVP_MD_CTX_create();
|
||||
+#ifdef HAVE_EVP_MD_CTX_NEW
|
||||
+ cptr = EVP_MD_CTX_new();
|
||||
#else
|
||||
cptr = malloc(sizeof(*cptr));
|
||||
#if defined(OLD_DES)
|
||||
memset(cptr, 0, sizeof(*cptr));
|
||||
#else
|
||||
- EVP_MD_CTX_init(cptr);
|
||||
+ EVP_MD_CTX_init(&cptr);
|
||||
#endif
|
||||
#endif
|
||||
if (!EVP_DigestInit(cptr, hashfn)) {
|
||||
@@ -507,11 +507,11 @@ sc_hash(const oid * hashtype, size_t has
|
||||
/** do the final pass */
|
||||
EVP_DigestFinal(cptr, MAC, &tmp_len);
|
||||
*MAC_len = tmp_len;
|
||||
-#ifdef HAVE_EVP_MD_CTX_DESTROY
|
||||
- EVP_MD_CTX_destroy(cptr);
|
||||
+#ifdef HAVE_EVP_MD_CTX_FREE
|
||||
+ EVP_MD_CTX_free(cptr);
|
||||
#else
|
||||
#if !defined(OLD_DES)
|
||||
- EVP_MD_CTX_cleanup(cptr);
|
||||
+ EVP_MD_CTX_cleanup(&cptr);
|
||||
#endif
|
||||
free(cptr);
|
||||
#endif
|
||||
diff -urNp old/snmplib/snmp_openssl.c new/snmplib/snmp_openssl.c
|
||||
--- old/snmplib/snmp_openssl.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/snmplib/snmp_openssl.c 2017-02-20 12:46:00.059727928 +0100
|
||||
@@ -47,7 +47,7 @@ void netsnmp_init_openssl(void) {
|
||||
DEBUGMSGTL(("snmp_openssl", "initializing\n"));
|
||||
|
||||
/* Initializing OpenSSL */
|
||||
- SSL_library_init();
|
||||
+ OPENSSL_init_ssl(0, NULL);
|
||||
SSL_load_error_strings();
|
||||
ERR_load_BIO_strings();
|
||||
OpenSSL_add_all_algorithms();
|
||||
@@ -164,11 +164,11 @@ netsnmp_openssl_cert_dump_names(X509 *oc
|
||||
oname_entry = X509_NAME_get_entry(osubj_name, i);
|
||||
netsnmp_assert(NULL != oname_entry);
|
||||
|
||||
- if (oname_entry->value->type != V_ASN1_PRINTABLESTRING)
|
||||
+ if (X509_NAME_ENTRY_get_data(oname_entry)->type != V_ASN1_PRINTABLESTRING)
|
||||
continue;
|
||||
|
||||
/** get NID */
|
||||
- onid = OBJ_obj2nid(oname_entry->object);
|
||||
+ onid = OBJ_obj2nid(X509_NAME_ENTRY_get_object(oname_entry));
|
||||
if (onid == NID_undef) {
|
||||
prefix_long = prefix_short = "UNKNOWN";
|
||||
}
|
||||
@@ -179,9 +179,9 @@ netsnmp_openssl_cert_dump_names(X509 *oc
|
||||
|
||||
DEBUGMSGT(("9:cert:dump:names",
|
||||
"[%02d] NID type %d, ASN type %d\n", i, onid,
|
||||
- oname_entry->value->type));
|
||||
+ X509_NAME_ENTRY_get_data(oname_entry)->type));
|
||||
DEBUGMSGT(("9:cert:dump:names", "%s/%s: '%s'\n", prefix_long,
|
||||
- prefix_short, ASN1_STRING_data(oname_entry->value)));
|
||||
+ prefix_short, ASN1_STRING_data(X509_NAME_ENTRY_get_data(oname_entry))));
|
||||
}
|
||||
}
|
||||
#endif /* NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES */
|
||||
@@ -470,7 +470,7 @@ netsnmp_openssl_cert_get_hash_type(X509
|
||||
if (NULL == ocert)
|
||||
return 0;
|
||||
|
||||
- return _nid2ht(OBJ_obj2nid(ocert->sig_alg->algorithm));
|
||||
+ return _nid2ht(X509_get_signature_nid(ocert));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -487,7 +487,7 @@ netsnmp_openssl_cert_get_fingerprint(X50
|
||||
if (NULL == ocert)
|
||||
return NULL;
|
||||
|
||||
- nid = OBJ_obj2nid(ocert->sig_alg->algorithm);
|
||||
+ nid = X509_get_signature_nid(ocert);
|
||||
DEBUGMSGT(("9:openssl:fingerprint", "alg %d, cert nid %d (%d)\n", alg, nid,
|
||||
_nid2ht(nid)));
|
||||
|
||||
diff -urNp old/win32/net-snmp/net-snmp-config.h new/win32/net-snmp/net-snmp-config.h
|
||||
--- old/win32/net-snmp/net-snmp-config.h 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/win32/net-snmp/net-snmp-config.h 2017-02-20 10:23:20.796778512 +0100
|
||||
@@ -1366,11 +1366,11 @@
|
||||
/* Define to 1 if you have the <openssl/aes.h> header file. */
|
||||
#define HAVE_OPENSSL_AES_H 1
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_create' function. */
|
||||
-#define HAVE_EVP_MD_CTX_CREATE 1
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_new' function. */
|
||||
+#define HAVE_EVP_MD_CTX_NEW 1
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */
|
||||
-#define HAVE_EVP_MD_CTX_DESTROY 1
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_free' function. */
|
||||
+#define HAVE_EVP_MD_CTX_FREE 1
|
||||
|
||||
/* Define to 1 if you have the `AES_cfb128_encrypt' function. */
|
||||
#define HAVE_AES_CFB128_ENCRYPT 1
|
||||
diff -urNp old/win32/net-snmp/net-snmp-config.h.in new/win32/net-snmp/net-snmp-config.h.in
|
||||
--- old/win32/net-snmp/net-snmp-config.h.in 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ new/win32/net-snmp/net-snmp-config.h.in 2017-02-20 10:22:51.348367754 +0100
|
||||
@@ -1366,11 +1366,11 @@
|
||||
/* Define to 1 if you have the <openssl/aes.h> header file. */
|
||||
#define HAVE_OPENSSL_AES_H 1
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_create' function. */
|
||||
-#define HAVE_EVP_MD_CTX_CREATE 1
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_new' function. */
|
||||
+#define HAVE_EVP_MD_CTX_NEW 1
|
||||
|
||||
-/* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */
|
||||
-#define HAVE_EVP_MD_CTX_DESTROY 1
|
||||
+/* Define to 1 if you have the `EVP_MD_CTX_free' function. */
|
||||
+#define HAVE_EVP_MD_CTX_FREE 1
|
||||
|
||||
/* Define to 1 if you have the `AES_cfb128_encrypt' function. */
|
||||
#define HAVE_AES_CFB128_ENCRYPT 1
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
commit bec6243394ed78897c14e3fa46f934e0ea3d453e
|
||||
Author: Jan Safranek <jsafranek@users.sourceforge.net>
|
||||
Date: Fri Jun 26 13:30:07 2015 +0200
|
||||
|
||||
snmpstatus: CHANGES: Fixed crash when receiving non-standard compliant responses.
|
||||
|
||||
Some HW sends ifOperStatus as NULL instead of INTEGER type. We should not try to dereference this NULL.
|
||||
|
||||
diff --git a/apps/snmpstatus.c b/apps/snmpstatus.c
|
||||
index ae08369..6f31c42 100644
|
||||
--- a/apps/snmpstatus.c
|
||||
+++ b/apps/snmpstatus.c
|
||||
@@ -310,30 +310,38 @@ main(int argc, char *argv[])
|
||||
continue;
|
||||
}
|
||||
if (vars->name_length >= length_ifOperStatus
|
||||
- && !memcmp(objid_ifOperStatus, vars->name,
|
||||
- sizeof(objid_ifOperStatus))) {
|
||||
+ && !memcmp(objid_ifOperStatus, vars->name,
|
||||
+ sizeof(objid_ifOperStatus))
|
||||
+ && vars->type == ASN_INTEGER
|
||||
+ && vars->val.integer) {
|
||||
if (*vars->val.integer != MIB_IFSTATUS_UP)
|
||||
down_interfaces++;
|
||||
snmp_add_null_var(pdu, vars->name,
|
||||
vars->name_length);
|
||||
good_var++;
|
||||
- } else if (vars->name_length >= length_ifInUCastPkts &&
|
||||
- !memcmp(objid_ifInUCastPkts, vars->name,
|
||||
- sizeof(objid_ifInUCastPkts))) {
|
||||
+ } else if (vars->name_length >= length_ifInUCastPkts
|
||||
+ &&!memcmp(objid_ifInUCastPkts, vars->name,
|
||||
+ sizeof(objid_ifInUCastPkts))
|
||||
+ && vars->type == ASN_COUNTER
|
||||
+ && vars->val.integer) {
|
||||
ipackets += *vars->val.integer;
|
||||
snmp_add_null_var(pdu, vars->name,
|
||||
vars->name_length);
|
||||
good_var++;
|
||||
} else if (vars->name_length >= length_ifInNUCastPkts
|
||||
&& !memcmp(objid_ifInNUCastPkts, vars->name,
|
||||
- sizeof(objid_ifInNUCastPkts))) {
|
||||
+ sizeof(objid_ifInNUCastPkts))
|
||||
+ && vars->type == ASN_COUNTER
|
||||
+ && vars->val.integer) {
|
||||
ipackets += *vars->val.integer;
|
||||
snmp_add_null_var(pdu, vars->name,
|
||||
vars->name_length);
|
||||
good_var++;
|
||||
} else if (vars->name_length >= length_ifOutUCastPkts
|
||||
&& !memcmp(objid_ifOutUCastPkts, vars->name,
|
||||
- sizeof(objid_ifOutUCastPkts))) {
|
||||
+ sizeof(objid_ifOutUCastPkts))
|
||||
+ && vars->type == ASN_COUNTER
|
||||
+ && vars->val.integer) {
|
||||
opackets += *vars->val.integer;
|
||||
snmp_add_null_var(pdu, vars->name,
|
||||
vars->name_length);
|
||||
@@ -341,7 +349,9 @@ main(int argc, char *argv[])
|
||||
} else if (vars->name_length >= length_ifOutNUCastPkts
|
||||
&& !memcmp(objid_ifOutNUCastPkts,
|
||||
vars->name,
|
||||
- sizeof(objid_ifOutNUCastPkts))) {
|
||||
+ sizeof(objid_ifOutNUCastPkts))
|
||||
+ && vars->type == ASN_COUNTER
|
||||
+ && vars->val.integer) {
|
||||
opackets += *vars->val.integer;
|
||||
snmp_add_null_var(pdu, vars->name,
|
||||
vars->name_length);
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
diff -urNp net-snmp-5.7.3/snmplib/snmp_transport.c net-snmp-5.7.3.new/snmplib/snmp_transport.c
|
||||
--- net-snmp-5.7.3/snmplib/snmp_transport.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3.new/snmplib/snmp_transport.c 2016-08-12 13:04:35.438583586 +0200
|
||||
@@ -594,12 +594,13 @@ netsnmp_tdomain_transport_full(const cha
|
||||
int commas = 0;
|
||||
const char *cp = default_domain;
|
||||
char *dup = strdup(default_domain);
|
||||
+ char *ptr = NULL;
|
||||
|
||||
while (*++cp) if (*cp == ',') commas++;
|
||||
lspec = calloc(commas+2, sizeof(char *));
|
||||
commas = 1;
|
||||
- lspec[0] = strtok(dup, ",");
|
||||
- while ((lspec[commas++] = strtok(NULL, ",")))
|
||||
+ lspec[0] = strtok_r(dup, ",", &ptr);
|
||||
+ while ((lspec[commas++] = strtok_r(NULL, ",", &ptr)))
|
||||
;
|
||||
spec = (const char * const *)lspec;
|
||||
}
|
||||
12
net-snmp-5.8-Remove-U64-typedef.patch
Normal file
12
net-snmp-5.8-Remove-U64-typedef.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -urNp a/include/net-snmp/library/int64.h b/include/net-snmp/library/int64.h
|
||||
--- a/include/net-snmp/library/int64.h 2018-07-18 14:37:16.543348832 +0200
|
||||
+++ b/include/net-snmp/library/int64.h 2018-07-18 15:31:31.516999288 +0200
|
||||
@@ -10,7 +10,7 @@ extern "C" {
|
||||
* Note: using the U64 typedef is deprecated because this typedef conflicts
|
||||
* with a typedef with the same name defined in the Perl header files.
|
||||
*/
|
||||
- typedef struct counter64 U64;
|
||||
+// typedef struct counter64 U64;
|
||||
#endif
|
||||
|
||||
#define I64CHARSZ 21
|
||||
37
net-snmp-5.8-clientaddr-error-message.patch
Normal file
37
net-snmp-5.8-clientaddr-error-message.patch
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
|
||||
index ad30397..307253a 100644
|
||||
--- a/snmplib/snmp_api.c
|
||||
+++ b/snmplib/snmp_api.c
|
||||
@@ -231,7 +231,7 @@ static const char *api_errors[-SNMPERR_MAX + 1] = {
|
||||
"No error", /* SNMPERR_SUCCESS */
|
||||
"Generic error", /* SNMPERR_GENERR */
|
||||
"Invalid local port", /* SNMPERR_BAD_LOCPORT */
|
||||
- "Unknown host", /* SNMPERR_BAD_ADDRESS */
|
||||
+ "Invalid address", /* SNMPERR_BAD_ADDRESS */
|
||||
"Unknown session", /* SNMPERR_BAD_SESSION */
|
||||
"Too long", /* SNMPERR_TOO_LONG */
|
||||
"No socket", /* SNMPERR_NO_SOCKET */
|
||||
@@ -1718,7 +1718,9 @@ _sess_open(netsnmp_session * in_session)
|
||||
DEBUGMSGTL(("_sess_open", "couldn't interpret peername\n"));
|
||||
in_session->s_snmp_errno = SNMPERR_BAD_ADDRESS;
|
||||
in_session->s_errno = errno;
|
||||
- snmp_set_detail(in_session->peername);
|
||||
+ if (!netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
|
||||
+ NETSNMP_DS_LIB_CLIENT_ADDR))
|
||||
+ snmp_set_detail(in_session->peername);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c
|
||||
index 1e15a2f..47ac42e 100644
|
||||
--- a/snmplib/transports/snmpUDPIPv4BaseDomain.c
|
||||
+++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c
|
||||
@@ -224,6 +224,8 @@ netsnmp_udpipv4base_transport_bind(netsnmp_transport *t,
|
||||
DEBUGMSGTL(("netsnmp_udpbase",
|
||||
"failed to bind for clientaddr: %d %s\n",
|
||||
errno, strerror(errno)));
|
||||
+ NETSNMP_LOGONCE((LOG_ERR, "Cannot bind for clientaddr: %s\n",
|
||||
+ strerror(errno)));
|
||||
goto err;
|
||||
}
|
||||
|
||||
12
net-snmp-5.8-duplicate-ipAddress.patch
Normal file
12
net-snmp-5.8-duplicate-ipAddress.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
|
||||
index 675d4ea..8d3708d 100644
|
||||
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
|
||||
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
|
||||
@@ -120,6 +120,7 @@ _remove_duplicates(netsnmp_container *container, u_int container_flags)
|
||||
for (entry = ITERATOR_FIRST(it); entry; entry = ITERATOR_NEXT(it)) {
|
||||
if (prev_entry && _access_ipaddress_entry_compare_addr(prev_entry, entry) == 0) {
|
||||
/* 'entry' is duplicate of the previous one -> delete it */
|
||||
+ NETSNMP_LOGONCE((LOG_ERR, "Duplicate IPv4 address detected, some interfaces may not be visible in IP-MIB\n"));
|
||||
netsnmp_access_ipaddress_entry_free(entry);
|
||||
} else {
|
||||
CONTAINER_INSERT(ret, entry);
|
||||
13
net-snmp-5.8-expand-SNMPCONFPATH.patch
Normal file
13
net-snmp-5.8-expand-SNMPCONFPATH.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/snmplib/read_config.c b/snmplib/read_config.c
|
||||
index 159f4be..fa8fcba 100644
|
||||
--- a/snmplib/read_config.c
|
||||
+++ b/snmplib/read_config.c
|
||||
@@ -1688,7 +1688,7 @@ snmp_save_persistent(const char *type)
|
||||
* save a warning header to the top of the new file
|
||||
*/
|
||||
snprintf(fileold, sizeof(fileold),
|
||||
- "%s%s# Please save normal configuration tokens for %s in SNMPCONFPATH/%s.conf.\n# Only \"createUser\" tokens should be placed here by %s administrators.\n%s",
|
||||
+ "%s%s# Please save normal configuration tokens for %s in /etc/snmp/%s.conf.\n# Only \"createUser\" tokens should be placed here by %s administrators.\n%s",
|
||||
"#\n# net-snmp (or ucd-snmp) persistent data file.\n#\n############################################################################\n# STOP STOP STOP STOP STOP STOP STOP STOP STOP \n",
|
||||
"#\n# **** DO NOT EDIT THIS FILE ****\n#\n# STOP STOP STOP STOP STOP STOP STOP STOP STOP \n############################################################################\n#\n# DO NOT STORE CONFIGURATION ENTRIES HERE.\n",
|
||||
type, type, type,
|
||||
83
net-snmp-5.8-ipAddress-faster-load.patch
Normal file
83
net-snmp-5.8-ipAddress-faster-load.patch
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
diff --git a/agent/mibgroup/mibII/ipAddr.c b/agent/mibgroup/mibII/ipAddr.c
|
||||
index a89255f..ef67f5f 100644
|
||||
--- a/agent/mibgroup/mibII/ipAddr.c
|
||||
+++ b/agent/mibgroup/mibII/ipAddr.c
|
||||
@@ -498,14 +498,16 @@ Address_Scan_Next(Index, Retin_ifaddr)
|
||||
}
|
||||
|
||||
#elif defined(linux)
|
||||
+#include <errno.h>
|
||||
static struct ifreq *ifr;
|
||||
static int ifr_counter;
|
||||
|
||||
static void
|
||||
Address_Scan_Init(void)
|
||||
{
|
||||
- int num_interfaces = 0;
|
||||
+ int i;
|
||||
int fd;
|
||||
+ int lastlen = 0;
|
||||
|
||||
/* get info about all interfaces */
|
||||
|
||||
@@ -513,28 +515,45 @@ Address_Scan_Init(void)
|
||||
SNMP_FREE(ifc.ifc_buf);
|
||||
ifr_counter = 0;
|
||||
|
||||
- do
|
||||
- {
|
||||
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
|
||||
{
|
||||
DEBUGMSGTL(("snmpd", "socket open failure in Address_Scan_Init\n"));
|
||||
return;
|
||||
}
|
||||
- num_interfaces += 16;
|
||||
|
||||
- ifc.ifc_len = sizeof(struct ifreq) * num_interfaces;
|
||||
- ifc.ifc_buf = (char*) realloc(ifc.ifc_buf, ifc.ifc_len);
|
||||
-
|
||||
- if (ioctl(fd, SIOCGIFCONF, &ifc) < 0)
|
||||
- {
|
||||
- ifr=NULL;
|
||||
- close(fd);
|
||||
- return;
|
||||
- }
|
||||
- close(fd);
|
||||
+ /*
|
||||
+ * Cope with lots of interfaces and brokenness of ioctl SIOCGIFCONF
|
||||
+ * on some platforms; see W. R. Stevens, ``Unix Network Programming
|
||||
+ * Volume I'', p.435...
|
||||
+ */
|
||||
+
|
||||
+ for (i = 8;; i *= 2) {
|
||||
+ ifc.ifc_len = sizeof(struct ifreq) * i;
|
||||
+ ifc.ifc_req = calloc(i, sizeof(struct ifreq));
|
||||
+
|
||||
+ if (ioctl(fd, SIOCGIFCONF, &ifc) < 0) {
|
||||
+ if (errno != EINVAL || lastlen != 0) {
|
||||
+ /*
|
||||
+ * Something has gone genuinely wrong...
|
||||
+ */
|
||||
+ snmp_log(LOG_ERR, "bad rc from ioctl, errno %d", errno);
|
||||
+ SNMP_FREE(ifc.ifc_buf);
|
||||
+ close(fd);
|
||||
+ return;
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (ifc.ifc_len == lastlen) {
|
||||
+ /*
|
||||
+ * The length is the same as the last time; we're done...
|
||||
+ */
|
||||
+ break;
|
||||
+ }
|
||||
+ lastlen = ifc.ifc_len;
|
||||
+ }
|
||||
+ free(ifc.ifc_buf); /* no SNMP_FREE, getting ready to reassign */
|
||||
}
|
||||
- while (ifc.ifc_len >= (sizeof(struct ifreq) * num_interfaces));
|
||||
-
|
||||
+
|
||||
+ close(fd);
|
||||
ifr = ifc.ifc_req;
|
||||
}
|
||||
|
||||
|
|
@ -1,20 +1,18 @@
|
|||
diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/data_access/swinst_rpm.c net-snmp-5.7.3/agent/mibgroup/host/data_access/swinst_rpm.c
|
||||
--- net-snmp-5.7.3.orig/agent/mibgroup/host/data_access/swinst_rpm.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/agent/mibgroup/host/data_access/swinst_rpm.c 2017-08-11 00:16:35.232470439 +0200
|
||||
@@ -96,8 +96,7 @@
|
||||
|
||||
rpmdbMatchIterator mi;
|
||||
Header h;
|
||||
- char *n, *v, *r, *g;
|
||||
diff -urNp a/agent/mibgroup/host/data_access/swinst_rpm.c b/agent/mibgroup/host/data_access/swinst_rpm.c
|
||||
--- a/agent/mibgroup/host/data_access/swinst_rpm.c 2018-07-18 16:12:19.583503903 +0200
|
||||
+++ b/agent/mibgroup/host/data_access/swinst_rpm.c 2018-07-18 16:50:38.599703588 +0200
|
||||
@@ -102,7 +102,6 @@ netsnmp_swinst_arch_load( netsnmp_contai
|
||||
rpmtd td_name, td_version, td_release, td_group, td_time;
|
||||
#else
|
||||
char *n, *v, *r, *g;
|
||||
- int32_t *t;
|
||||
+ const char *n, *v, *r, *g;
|
||||
#endif
|
||||
time_t install_time;
|
||||
size_t date_len;
|
||||
int i = 1;
|
||||
@@ -119,11 +118,11 @@
|
||||
CONTAINER_INSERT(container, entry);
|
||||
|
||||
h = headerLink( h );
|
||||
@@ -146,14 +145,13 @@ netsnmp_swinst_arch_load( netsnmp_contai
|
||||
install_time = rpmtdGetNumber(td_time);
|
||||
g = rpmtdGetString(td_group);
|
||||
#else
|
||||
- headerGetEntry( h, RPMTAG_NAME, NULL, (void**)&n, NULL);
|
||||
- headerGetEntry( h, RPMTAG_VERSION, NULL, (void**)&v, NULL);
|
||||
- headerGetEntry( h, RPMTAG_RELEASE, NULL, (void**)&r, NULL);
|
||||
|
|
@ -25,34 +23,29 @@ diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/data_access/swinst_rpm.c net-s
|
|||
+ r = headerGetString( h, RPMTAG_RELEASE);
|
||||
+ g = headerGetString( h, RPMTAG_GROUP);
|
||||
+ install_time = headerGetNumber( h, RPMTAG_INSTALLTIME);
|
||||
|
||||
entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
|
||||
"%s-%s-%s", n, v, r);
|
||||
@@ -133,7 +132,6 @@
|
||||
? 2 /* operatingSystem */
|
||||
: 4; /* application */
|
||||
|
||||
- install_time = *t;
|
||||
dt = date_n_time( &install_time, &date_len );
|
||||
if (date_len != 8 && date_len != 11) {
|
||||
snmp_log(LOG_ERR, "Bogus length from date_n_time for %s", entry->swName);
|
||||
diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/hr_swinst.c net-snmp-5.7.3/agent/mibgroup/host/hr_swinst.c
|
||||
--- net-snmp-5.7.3.orig/agent/mibgroup/host/hr_swinst.c 2014-12-08 21:23:22.000000000 +0100
|
||||
+++ net-snmp-5.7.3/agent/mibgroup/host/hr_swinst.c 2017-08-11 00:17:07.488544492 +0200
|
||||
@@ -484,9 +484,9 @@
|
||||
#endif
|
||||
entry->swType = (g && NULL != strstr( g, "System Environment"))
|
||||
? 2 /* operatingSystem */
|
||||
diff -urNp a/agent/mibgroup/host/hr_swinst.c b/agent/mibgroup/host/hr_swinst.c
|
||||
--- a/agent/mibgroup/host/hr_swinst.c 2018-07-18 16:12:19.582503907 +0200
|
||||
+++ b/agent/mibgroup/host/hr_swinst.c 2018-07-18 17:09:29.716564197 +0200
|
||||
@@ -479,9 +479,9 @@ var_hrswinst(struct variable * vp,
|
||||
}
|
||||
#else
|
||||
# ifdef HAVE_LIBRPM
|
||||
- char *rpm_groups;
|
||||
- if ( headerGetEntry(swi->swi_h, RPMTAG_GROUP, NULL, (void **) &rpm_groups, NULL) ) {
|
||||
- if ( strstr(rpm_groups, "System Environment") != NULL )
|
||||
+ const char *rpm_group = headerGetString(swi->swi_h, RPMTAG_GROUP);
|
||||
+ const char *rpm_group = headerGetString(swi->swi_h, RPMTAG_GROUP);
|
||||
+ if ( NULL != rpm_group ) {
|
||||
+ if ( strstr(rpm_group, "System Environment") != NULL )
|
||||
long_return = 2; /* operatingSystem */
|
||||
else
|
||||
long_return = 4; /* applcation */
|
||||
@@ -503,9 +503,8 @@
|
||||
@@ -498,9 +498,8 @@ var_hrswinst(struct variable * vp,
|
||||
case HRSWINST_DATE:
|
||||
{
|
||||
#ifdef HAVE_LIBRPM
|
||||
|
|
@ -60,11 +53,11 @@ diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/hr_swinst.c net-snmp-5.7.3/age
|
|||
- if ( headerGetEntry(swi->swi_h, RPMTAG_INSTALLTIME, NULL, (void **) &rpm_data, NULL) ) {
|
||||
- time_t installTime = *rpm_data;
|
||||
+ time_t installTime = headerGetNumber(swi->swi_h, RPMTAG_INSTALLTIME);
|
||||
+ if ( 0 != installTime) {
|
||||
+ if ( 0 != installTime ) {
|
||||
ret = date_n_time(&installTime, var_len);
|
||||
} else {
|
||||
ret = date_n_time(NULL, var_len);
|
||||
@@ -665,7 +664,7 @@
|
||||
@@ -660,7 +659,7 @@ Save_HR_SW_info(int ix)
|
||||
if (1 <= ix && ix <= swi->swi_nrec && ix != swi->swi_prevx) {
|
||||
int offset;
|
||||
Header h;
|
||||
|
|
@ -73,7 +66,7 @@ diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/hr_swinst.c net-snmp-5.7.3/age
|
|||
|
||||
offset = swi->swi_recs[ix - 1];
|
||||
|
||||
@@ -690,11 +689,9 @@
|
||||
@@ -685,11 +684,9 @@ Save_HR_SW_info(int ix)
|
||||
swi->swi_h = h;
|
||||
swi->swi_prevx = ix;
|
||||
|
||||
18
net-snmp-5.9-aes-config.patch
Normal file
18
net-snmp-5.9-aes-config.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
diff --git a/net-snmp-create-v3-user.in b/net-snmp-create-v3-user.in
|
||||
index afd6fa4..07c26fe 100644
|
||||
--- a/net-snmp-create-v3-user.in
|
||||
+++ b/net-snmp-create-v3-user.in
|
||||
@@ -58,11 +58,11 @@ case $1 in
|
||||
exit 1
|
||||
fi
|
||||
case $1 in
|
||||
- DES|AES|AES128)
|
||||
+ DES|AES|AES128|AES192|AES256)
|
||||
Xalgorithm=$1
|
||||
shift
|
||||
;;
|
||||
- des|aes|aes128)
|
||||
+ des|aes|aes128|aes192|aes256)
|
||||
Xalgorithm=$(echo "$1" | tr a-z A-Z)
|
||||
shift
|
||||
;;
|
||||
12
net-snmp-5.9-autofs-skip.patch
Normal file
12
net-snmp-5.9-autofs-skip.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/agent/mibgroup/host/hr_filesys.c b/agent/mibgroup/host/hr_filesys.c
|
||||
index e7ca92f..80b3e0d 100644
|
||||
--- a/agent/mibgroup/host/hr_filesys.c
|
||||
+++ b/agent/mibgroup/host/hr_filesys.c
|
||||
@@ -704,6 +704,7 @@ static const char *HRFS_ignores[] = {
|
||||
"shm",
|
||||
"sockfs",
|
||||
"sysfs",
|
||||
+ "tmpfs",
|
||||
"usbdevfs",
|
||||
"usbfs",
|
||||
#endif
|
||||
22
net-snmp-5.9-cflags.patch
Normal file
22
net-snmp-5.9-cflags.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
|
||||
index 63e6333..82cedca 100644
|
||||
--- a/perl/Makefile.PL
|
||||
+++ b/perl/Makefile.PL
|
||||
@@ -1,3 +1,4 @@
|
||||
+use lib '.';
|
||||
use strict;
|
||||
use warnings;
|
||||
use ExtUtils::MakeMaker;
|
||||
diff --git a/perl/MakefileSubs.pm b/perl/MakefileSubs.pm
|
||||
index 804b20e..25c5d67 100644
|
||||
--- a/perl/MakefileSubs.pm
|
||||
+++ b/perl/MakefileSubs.pm
|
||||
@@ -126,7 +126,7 @@ sub AddCommonParams {
|
||||
# Suppress warnings about old-style function definitions.
|
||||
append($Params->{'CCFLAGS'}, '-Wno-old-style-definition');
|
||||
# Suppress known Perl header shortcomings.
|
||||
- $Params->{'CCFLAGS'} =~ s/ -W(cast-qual|write-strings)//g;
|
||||
+ $Params->{'CCFLAGS'} =~ s/ -W(inline|strict-prototypes|write-strings|cast-qual|no-char-subscripts)//g;
|
||||
append($Params->{'CCFLAGS'}, '-Wformat');
|
||||
}
|
||||
}
|
||||
30
net-snmp-5.9-dir-fix.patch
Normal file
30
net-snmp-5.9-dir-fix.patch
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
diff --git a/net-snmp-create-v3-user.in b/net-snmp-create-v3-user.in
|
||||
index 19895a1..ac3c60f 100644
|
||||
--- a/net-snmp-create-v3-user.in
|
||||
+++ b/net-snmp-create-v3-user.in
|
||||
@@ -14,6 +14,10 @@ Xalgorithm="DES"
|
||||
token=rwuser
|
||||
|
||||
while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
|
||||
+case "$1" in
|
||||
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||
+ *) optarg= ;;
|
||||
+esac
|
||||
|
||||
unset shifted
|
||||
case $1 in
|
||||
@@ -134,11 +138,9 @@ if test ! -d "$outfile"; then
|
||||
touch "$outfile"
|
||||
fi
|
||||
echo "$line" >> "$outfile"
|
||||
-prefix=@prefix@
|
||||
-datarootdir=@datarootdir@
|
||||
-# To suppress shellcheck complaints about $prefix and $datarootdir.
|
||||
-: "$prefix" "$datarootdir"
|
||||
-outfile="@datadir@/snmp/snmpd.conf"
|
||||
+# Avoid that configure complains that this script ignores @datarootdir@
|
||||
+echo "@datarootdir@" >/dev/null
|
||||
+outfile="/etc/snmp/snmpd.conf"
|
||||
line="$token $user"
|
||||
echo "adding the following line to $outfile:"
|
||||
echo " $line"
|
||||
1145
net-snmp-5.9-intermediate-certs.patch
Normal file
1145
net-snmp-5.9-intermediate-certs.patch
Normal file
File diff suppressed because it is too large
Load diff
12
net-snmp-5.9-ipv6-disable-leak.patch
Normal file
12
net-snmp-5.9-ipv6-disable-leak.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -urNp a/snmplib/snmp_logging.c b/snmplib/snmp_logging.c
|
||||
--- a/snmplib/snmp_logging.c 2023-02-15 10:19:15.691827254 +0100
|
||||
+++ b/snmplib/snmp_logging.c 2023-02-15 10:24:41.006642974 +0100
|
||||
@@ -490,7 +490,7 @@ snmp_log_options(char *optarg, int argc,
|
||||
char *
|
||||
snmp_log_syslogname(const char *pstr)
|
||||
{
|
||||
- if (pstr)
|
||||
+ if (pstr && (pstr != syslogname))
|
||||
strlcpy (syslogname, pstr, sizeof(syslogname));
|
||||
|
||||
return syslogname;
|
||||
24
net-snmp-5.9-mail-sender.patch
Normal file
24
net-snmp-5.9-mail-sender.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
diff -up ./local/checkbandwidth.orig ./local/checkbandwidth
|
||||
--- ./local/checkbandwidth.orig 2023-08-15 16:32:01.000000000 -0400
|
||||
+++ ./local/checkbandwidth 2025-03-20 16:31:14.062432316 -0400
|
||||
@@ -326,7 +326,6 @@ See the Net-SNMP COPYING file for licens
|
||||
|
||||
use JSON;
|
||||
use Data::Dumper;
|
||||
-use Mail::Sender;
|
||||
use SNMP;
|
||||
use Fcntl ':flock';
|
||||
|
||||
@@ -744,6 +743,12 @@ sub send_rate_message($$$$$$) {
|
||||
sub send_message($$$) {
|
||||
my ($to, $subject, $text) = @_;
|
||||
|
||||
+ if (! eval {require Mail::Sender;}) {
|
||||
+ Log("Failed to send mail with error code -1: Mail::Sender is not available");
|
||||
+ return();
|
||||
+ }
|
||||
+
|
||||
+ import Mail::Sender;
|
||||
my $sender = new Mail::Sender { smtp => $opts{'S'} ,
|
||||
port => $opts{'P'},
|
||||
from => $opts{'F'},
|
||||
28
net-snmp-5.9-memory-reporting.patch
Normal file
28
net-snmp-5.9-memory-reporting.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
diff --git a/agent/mibgroup/hardware/memory/memory_linux.c b/agent/mibgroup/hardware/memory/memory_linux.c
|
||||
index 6d5e86c..68b55d2 100644
|
||||
--- a/agent/mibgroup/hardware/memory/memory_linux.c
|
||||
+++ b/agent/mibgroup/hardware/memory/memory_linux.c
|
||||
@@ -123,6 +123,13 @@ int netsnmp_mem_arch_load( netsnmp_cache *cache, void *magic ) {
|
||||
if (first)
|
||||
snmp_log(LOG_ERR, "No SwapTotal line in /proc/meminfo\n");
|
||||
}
|
||||
+ b = strstr(buff, "SReclaimable: ");
|
||||
+ if (b)
|
||||
+ sscanf(b, "SReclaimable: %lu", &sreclaimable);
|
||||
+ else {
|
||||
+ if (first)
|
||||
+ snmp_log(LOG_ERR, "No SReclaimable line in /proc/meminfo\n");
|
||||
+ }
|
||||
b = strstr(buff, "SwapFree: ");
|
||||
if (b)
|
||||
sscanf(b, "SwapFree: %lu", &swapfree);
|
||||
@@ -130,9 +137,6 @@ int netsnmp_mem_arch_load( netsnmp_cache *cache, void *magic ) {
|
||||
if (first)
|
||||
snmp_log(LOG_ERR, "No SwapFree line in /proc/meminfo\n");
|
||||
}
|
||||
- b = strstr(buff, "SReclaimable: ");
|
||||
- if (b)
|
||||
- sscanf(b, "SReclaimable: %lu", &sreclaimable);
|
||||
first = 0;
|
||||
|
||||
|
||||
48
net-snmp-5.9-multilib.patch
Normal file
48
net-snmp-5.9-multilib.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
diff --git a/man/netsnmp_config_api.3.def b/man/netsnmp_config_api.3.def
|
||||
index d4e0c1a..9e3a166 100644
|
||||
--- a/man/netsnmp_config_api.3.def
|
||||
+++ b/man/netsnmp_config_api.3.def
|
||||
@@ -295,7 +295,7 @@ for one particular machine.
|
||||
.PP
|
||||
The default list of directories to search is \fC SYSCONFDIR/snmp\fP,
|
||||
followed by \fC DATADIR/snmp\fP,
|
||||
-followed by \fC LIBDIR/snmp\fP,
|
||||
+followed by \fC /usr/lib(64)/snmp\fP,
|
||||
followed by \fC $HOME/.snmp\fP.
|
||||
This list can be changed by setting the environmental variable
|
||||
.I SNMPCONFPATH
|
||||
@@ -367,7 +367,7 @@ A colon-separated list of directories to search for configuration
|
||||
files in.
|
||||
Default:
|
||||
.br
|
||||
-SYSCONFDIR/snmp:\:DATADIR/snmp:\:LIBDIR/snmp:\:$HOME/.snmp
|
||||
+SYSCONFDIR/snmp:\:DATADIR/snmp:\:/usr/lib(64)/snmp:\:$HOME/.snmp
|
||||
.SH "SEE ALSO"
|
||||
netsnmp_mib_api(3), snmp_api(3)
|
||||
.\" Local Variables:
|
||||
diff --git a/man/snmp_config.5.def b/man/snmp_config.5.def
|
||||
index fd30873..c3437d6 100644
|
||||
--- a/man/snmp_config.5.def
|
||||
+++ b/man/snmp_config.5.def
|
||||
@@ -10,7 +10,7 @@ First off, there are numerous places that configuration files can be
|
||||
found and read from. By default, the applications look for
|
||||
configuration files in the following 4 directories, in order:
|
||||
SYSCONFDIR/snmp,
|
||||
-DATADIR/snmp, LIBDIR/snmp, and $HOME/.snmp. In each of these
|
||||
+DATADIR/snmp, /usr/lib(64)/snmp, and $HOME/.snmp. In each of these
|
||||
directories, it looks for files snmp.conf, snmpd.conf and/or
|
||||
snmptrapd.conf, as well as snmp.local.conf, snmpd.local.conf
|
||||
and/or snmptrapd.local.conf. *.local.conf are always
|
||||
diff --git a/man/snmpd.conf.5.def b/man/snmpd.conf.5.def
|
||||
index 6acd8c7..0a8b9fa 100644
|
||||
--- a/man/snmpd.conf.5.def
|
||||
+++ b/man/snmpd.conf.5.def
|
||||
@@ -1609,7 +1609,7 @@ filename), and call the initialisation routine \fIinit_NAME\fR.
|
||||
.RS
|
||||
.IP "Note:"
|
||||
If the specified PATH is not a fully qualified filename, it will
|
||||
-be interpreted relative to LIBDIR/snmp/dlmod, and \fC.so\fR
|
||||
+be interpreted relative to /usr/lib(64)/snmp/dlmod, and \fC.so\fR
|
||||
will be appended to the filename.
|
||||
.RE
|
||||
.PP
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
diff -up net-snmp-5.7.2/agent/Makefile.in.pie net-snmp-5.7.2/agent/Makefile.in
|
||||
--- net-snmp-5.7.2/agent/Makefile.in.pie 2012-10-10 00:28:58.000000000 +0200
|
||||
+++ net-snmp-5.7.2/agent/Makefile.in 2012-10-18 09:45:13.298613099 +0200
|
||||
@@ -294,7 +294,7 @@ getmibstat.o: mibgroup/kernel_sunos5.c
|
||||
diff --git a/agent/Makefile.in b/agent/Makefile.in
|
||||
index 047d880..38d40aa 100644
|
||||
--- a/agent/Makefile.in
|
||||
+++ b/agent/Makefile.in
|
||||
@@ -300,7 +300,7 @@ getmibstat.o: mibgroup/kernel_sunos5.c
|
||||
$(CC) $(CFLAGS) -o $@ -D_GETMIBSTAT_TEST -DDODEBUG -c $?
|
||||
|
||||
snmpd$(EXEEXT): ${LAGENTOBJS} $(USELIBS) $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LIBTARG)
|
||||
|
|
@ -9,11 +10,12 @@ diff -up net-snmp-5.7.2/agent/Makefile.in.pie net-snmp-5.7.2/agent/Makefile.in
|
|||
+ $(LINK) $(CFLAGS) -o $@ -pie ${LAGENTOBJS} ${LDFLAGS} ${OUR_AGENT_LIBS}
|
||||
|
||||
libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION): ${LLIBAGENTOBJS} $(USELIBS)
|
||||
$(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} @LD_NO_UNDEFINED@ $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) @AGENTLIBS@
|
||||
diff -up net-snmp-5.7.2/apps/Makefile.in.pie net-snmp-5.7.2/apps/Makefile.in
|
||||
--- net-snmp-5.7.2/apps/Makefile.in.pie 2012-10-10 00:28:58.000000000 +0200
|
||||
+++ net-snmp-5.7.2/apps/Makefile.in 2012-10-18 09:44:27.827774580 +0200
|
||||
@@ -170,7 +170,7 @@ snmptest$(EXEEXT): snmptest.$(OSUFFIX
|
||||
$(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
|
||||
diff --git a/apps/Makefile.in b/apps/Makefile.in
|
||||
index 3dbb1d1..48ed23a 100644
|
||||
--- a/apps/Makefile.in
|
||||
+++ b/apps/Makefile.in
|
||||
@@ -190,7 +190,7 @@ snmptest$(EXEEXT): snmptest.$(OSUFFIX) $(USELIBS)
|
||||
$(LINK) ${CFLAGS} -o $@ snmptest.$(OSUFFIX) ${LDFLAGS} ${LIBS}
|
||||
|
||||
snmptrapd$(EXEEXT): $(TRAPD_OBJECTS) $(USETRAPLIBS) $(INSTALLLIBS)
|
||||
38
net-snmp-5.9-python3.patch
Normal file
38
net-snmp-5.9-python3.patch
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
diff --git a/Makefile.in b/Makefile.in
|
||||
index bb4ada9..69ce4f0 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -227,7 +227,7 @@ perlcleanfeatures:
|
||||
|
||||
# python specific build rules
|
||||
#
|
||||
-PYMAKE=$(PYTHON) setup.py $(PYTHONARGS)
|
||||
+PYMAKE=/usr/bin/python3 setup.py $(PYTHONARGS)
|
||||
pythonmodules: subdirs
|
||||
@(dir=`pwd`; cd python; $(PYMAKE) build --basedir=$$dir) ; \
|
||||
if test $$? != 0 ; then \
|
||||
diff --git a/python/netsnmp/client.py b/python/netsnmp/client.py
|
||||
index daf11a4..3a30a64 100644
|
||||
--- a/python/netsnmp/client.py
|
||||
+++ b/python/netsnmp/client.py
|
||||
@@ -56,7 +56,7 @@ class Varbind(object):
|
||||
def __init__(self, tag=None, iid=None, val=None, type_arg=None):
|
||||
self.tag = STR(tag)
|
||||
self.iid = STR(iid)
|
||||
- self.val = STR(val)
|
||||
+ self.val = val
|
||||
self.type = STR(type_arg)
|
||||
# parse iid out of tag if needed
|
||||
if iid is None and tag is not None:
|
||||
@@ -66,7 +66,10 @@ class Varbind(object):
|
||||
(self.tag, self.iid) = match.group(1, 2)
|
||||
|
||||
def __setattr__(self, name, val):
|
||||
- self.__dict__[name] = STR(val)
|
||||
+ if name == 'val':
|
||||
+ self.__dict__[name] = val
|
||||
+ else:
|
||||
+ self.__dict__[name] = STR(val)
|
||||
|
||||
def __str__(self):
|
||||
return obj_to_str(self)
|
||||
110
net-snmp-5.9-test-debug.patch
Normal file
110
net-snmp-5.9-test-debug.patch
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
diff --git a/testing/fulltests/default/T070com2sec_simple b/testing/fulltests/default/T070com2sec_simple
|
||||
index 6c07f74..7df0b51 100644
|
||||
--- a/testing/fulltests/default/T070com2sec_simple
|
||||
+++ b/testing/fulltests/default/T070com2sec_simple
|
||||
@@ -134,34 +134,30 @@ SAVECHECKAGENT '<"c406a", 255.255.255.255/255.255.255.255> => "t406a"'
|
||||
SAVECHECKAGENT 'line 30: Error:' # msg from h_strerror so it varies
|
||||
SAVECHECKAGENT 'line 31: Error:' # msg from h_strerror so it varies
|
||||
|
||||
-if false; then
|
||||
- # The two tests below have been disabled because these rely on resolving a
|
||||
- # domain name into a local IP address. Such DNS replies are filtered out by
|
||||
- # many security devices because to avoid DNS rebinding attacks. See also
|
||||
- # https://en.wikipedia.org/wiki/DNS_rebinding.
|
||||
-
|
||||
- CHECKAGENT '<"c408a"'
|
||||
- if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
- CHECKAGENT 'line 32: Error:'
|
||||
- if [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
- return_value=1
|
||||
- FINISHED
|
||||
- fi
|
||||
- elif [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
+FINISHED
|
||||
+
|
||||
+# don't test the rest, it depends on DNS, which is not available in Koji
|
||||
+
|
||||
+CHECKAGENT '<"c408a"'
|
||||
+if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
+ CHECKAGENT 'line 32: Error:'
|
||||
+ if [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
return_value=1
|
||||
FINISHED
|
||||
fi
|
||||
+elif [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
+ return_value=1
|
||||
+ FINISHED
|
||||
+fi
|
||||
|
||||
- CHECKAGENT '<"c408b"'
|
||||
- if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
- CHECKAGENT 'line 33: Error:'
|
||||
- if [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
- return_value=1
|
||||
- fi
|
||||
- elif [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
+CHECKAGENT '<"c408b"'
|
||||
+if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
+ CHECKAGENT 'line 33: Error:'
|
||||
+ if [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
return_value=1
|
||||
fi
|
||||
-
|
||||
+elif [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
+ return_value=1
|
||||
fi
|
||||
|
||||
FINISHED
|
||||
diff --git a/testing/fulltests/default/T071com2sec6_simple b/testing/fulltests/default/T071com2sec6_simple
|
||||
index 76da70b..bc2d432 100644
|
||||
--- a/testing/fulltests/default/T071com2sec6_simple
|
||||
+++ b/testing/fulltests/default/T071com2sec6_simple
|
||||
@@ -132,30 +132,27 @@ SAVECHECKAGENT '<"c606a", ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/ffff:ffff:ffff
|
||||
SAVECHECKAGENT 'line 27: Error:'
|
||||
SAVECHECKAGENT 'line 28: Error:'
|
||||
|
||||
-if false; then
|
||||
- # The two tests below have been disabled because these rely on resolving a
|
||||
- # domain name into a local IP address. Such DNS replies are filtered out by
|
||||
- # many security devices because to avoid DNS rebinding attacks. See also
|
||||
- # https://en.wikipedia.org/wiki/DNS_rebinding.
|
||||
-
|
||||
- # 608
|
||||
- CHECKAGENT '<"c608a"'
|
||||
- if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
- CHECKAGENT 'line 29: Error:'
|
||||
- errnum=`expr $errnum - 1`
|
||||
- if [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
- FINISHED
|
||||
- fi
|
||||
- elif [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
+FINISHED
|
||||
+
|
||||
+# don't test the rest, it depends on DNS, which is not available in Koji
|
||||
+
|
||||
+# 608
|
||||
+CHECKAGENT '<"c608a"'
|
||||
+if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
+ CHECKAGENT 'line 29: Error:'
|
||||
+ errnum=`expr $errnum - 1`
|
||||
+ if [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
FINISHED
|
||||
fi
|
||||
+elif [ "$snmp_last_test_result" -ne 1 ] ; then
|
||||
+ FINISHED
|
||||
+fi
|
||||
|
||||
- CHECKAGENTCOUNT atleastone '<"c608b"'
|
||||
- if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
- CHECKAGENT 'line 30: Error:'
|
||||
- if [ "$snmp_last_test_result" -eq 1 ] ; then
|
||||
- errnum=`expr $errnum - 1`
|
||||
- fi
|
||||
+CHECKAGENTCOUNT atleastone '<"c608b"'
|
||||
+if [ "$snmp_last_test_result" -eq 0 ] ; then
|
||||
+ CHECKAGENT 'line 30: Error:'
|
||||
+ if [ "$snmp_last_test_result" -eq 1 ] ; then
|
||||
+ errnum=`expr $errnum - 1`
|
||||
fi
|
||||
fi
|
||||
|
||||
175
net-snmp-5.9.1-remove-des.patch
Normal file
175
net-snmp-5.9.1-remove-des.patch
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
diff -urNp a/man/net-snmp-config.1.def b/man/net-snmp-config.1.def
|
||||
--- a/man/net-snmp-config.1.def 2026-01-12 12:42:08.018134877 +0100
|
||||
+++ b/man/net-snmp-config.1.def 2026-01-12 12:43:26.749846227 +0100
|
||||
@@ -30,7 +30,7 @@ code for a list of available debug token
|
||||
SNMP Setup commands:
|
||||
.TP
|
||||
\fB\-\-create\-snmpv3\-user\fR [\-ro] [\-a authpass] [\-x privpass]
|
||||
-[\-X DES|AES] [\-A MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [username]
|
||||
+[\-X AES] [\-A MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [username]
|
||||
.PP
|
||||
These options produce the various compilation flags needed when
|
||||
building external SNMP applications:
|
||||
diff -urNp a/man/net-snmp-create-v3-user.1.def b/man/net-snmp-create-v3-user.1.def
|
||||
--- a/man/net-snmp-create-v3-user.1.def 2026-01-12 12:42:08.017134868 +0100
|
||||
+++ b/man/net-snmp-create-v3-user.1.def 2026-01-12 12:44:16.263005034 +0100
|
||||
@@ -3,7 +3,7 @@
|
||||
net-snmp-create-v3-user \- create a SNMPv3 user in net-snmp configuration file
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
-.B net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-X privpass] [-x DES|AES|AES128]
|
||||
+.B net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-X privpass] [-x AES|AES128]
|
||||
.B [username]
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
@@ -27,5 +27,5 @@ specify authentication algorithm
|
||||
\fB\-X privpass\fR
|
||||
specify encryption password
|
||||
.TP
|
||||
-\fB\-x DES|AES|AES128\fR
|
||||
+\fB\-x AES|AES128\fR
|
||||
specify encryption algorithm
|
||||
diff -urNp a/man/snmpcmd.1.def b/man/snmpcmd.1.def
|
||||
--- a/man/snmpcmd.1.def 2026-01-12 12:42:08.016788741 +0100
|
||||
+++ b/man/snmpcmd.1.def 2026-01-12 12:45:15.040041004 +0100
|
||||
@@ -311,7 +311,7 @@ Overrides the \fIdefSecurityName\fR toke
|
||||
file.
|
||||
.TP
|
||||
.BI \-x " privProtocol"
|
||||
-Set the privacy protocol (DES or AES) used for encrypted SNMPv3 messages.
|
||||
+Set the privacy protocol (AES) used for encrypted SNMPv3 messages.
|
||||
Overrides the \fIdefPrivType\fR token in the
|
||||
.I snmp.conf
|
||||
file. This option is only valid if the Net-SNMP software was build
|
||||
diff -urNp a/man/snmp.conf.5.def b/man/snmp.conf.5.def
|
||||
--- a/man/snmp.conf.5.def 2026-01-12 12:42:08.018134877 +0100
|
||||
+++ b/man/snmp.conf.5.def 2026-01-12 12:47:26.967780683 +0100
|
||||
@@ -221,13 +221,13 @@ The
|
||||
value will be used for the authentication and/or privacy pass phrases
|
||||
if either of the other directives are not specified.
|
||||
.IP "defAuthType MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224"
|
||||
-.IP "defPrivType DES|AES"
|
||||
+.IP "defPrivType AES"
|
||||
define the default authentication and privacy protocols to use for
|
||||
SNMPv3 requests.
|
||||
These can be overridden using the \fB\-a\fR and \fB\-x\fR options respectively.
|
||||
.IP
|
||||
If not specified, SNMPv3 requests will default to MD5 authentication
|
||||
-and DES encryption.
|
||||
+and AES encryption.
|
||||
.RS
|
||||
.IP "Note:
|
||||
If the software has not been compiled to use the OpenSSL libraries,
|
||||
@@ -262,8 +262,7 @@ master keys which have been converted to
|
||||
suitable for on particular SNMP engine (agent). The length of the key
|
||||
needs to be appropriate for the authentication or encryption type
|
||||
being used (auth keys: MD5=16 bytes, SHA1=20 bytes;
|
||||
-priv keys: DES=16 bytes (8
|
||||
-bytes of which is used as an IV and not a key), and AES=16 bytes).
|
||||
+priv keys: AES=16 bytes).
|
||||
.IP "sshtosnmpsocket PATH"
|
||||
Sets the path of the \fBsshtosnmp\fR socket created by an application
|
||||
(e.g. snmpd) listening for incoming ssh connections through the
|
||||
diff -urNp a/man/snmpd.examples.5.def b/man/snmpd.examples.5.def
|
||||
--- a/man/snmpd.examples.5.def 2026-01-12 12:42:08.016788741 +0100
|
||||
+++ b/man/snmpd.examples.5.def 2026-01-12 12:48:02.264211991 +0100
|
||||
@@ -87,8 +87,8 @@ the same authentication and encryption s
|
||||
.RS
|
||||
.nf
|
||||
createUser me MD5 "single pass phrase"
|
||||
-createUser myself MD5 "single pass phrase" DES
|
||||
-createUser andI MD5 "single pass phrase" DES "single pass phrase"
|
||||
+createUser myself MD5 "single pass phrase" AES
|
||||
+createUser andI MD5 "single pass phrase" AES "single pass phrase"
|
||||
.fi
|
||||
.RE
|
||||
Note that this defines three \fIdistinct\fR users, who could be granted
|
||||
diff -urNp a/man/snmptrapd.conf.5.def b/man/snmptrapd.conf.5.def
|
||||
--- a/man/snmptrapd.conf.5.def 2026-01-12 12:42:08.018134877 +0100
|
||||
+++ b/man/snmptrapd.conf.5.def 2026-01-12 12:48:43.264773008 +0100
|
||||
@@ -117,7 +117,7 @@ to trigger the types of processing liste
|
||||
See
|
||||
.IR snmpd.conf (5)
|
||||
for more details.
|
||||
-.IP "createUser [-e ENGINEID] username (MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224) authpassphrase [DES|AES]"
|
||||
+.IP "createUser [-e ENGINEID] username (MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224) authpassphrase [AES]"
|
||||
See the
|
||||
.IR snmpd.conf (5)
|
||||
manual page for a description of how to create SNMPv3 users. This
|
||||
diff -urNp a/man/snmpusm.1.def b/man/snmpusm.1.def
|
||||
--- a/man/snmpusm.1.def 2026-01-12 12:42:08.018134877 +0100
|
||||
+++ b/man/snmpusm.1.def 2026-01-12 12:49:26.488017367 +0100
|
||||
@@ -216,7 +216,7 @@ rwuser initial
|
||||
# lets add the new user we'll create too:
|
||||
rwuser wes
|
||||
# USM configuration entries
|
||||
-createUser initial MD5 setup_passphrase DES
|
||||
+createUser initial MD5 setup_passphrase AES
|
||||
.fi
|
||||
.RE
|
||||
.PP
|
||||
diff -urNp a/net-snmp-create-v3-user.in b/net-snmp-create-v3-user.in
|
||||
--- a/net-snmp-create-v3-user.in 2026-01-12 12:42:08.102135636 +0100
|
||||
+++ b/net-snmp-create-v3-user.in 2026-01-12 12:50:35.760787628 +0100
|
||||
@@ -10,7 +10,7 @@ if @PSCMD@ | @EGREP@ ' snmpd *$' > /dev/
|
||||
fi
|
||||
|
||||
Aalgorithm="MD5"
|
||||
-Xalgorithm="DES"
|
||||
+Xalgorithm="AES"
|
||||
token=rwuser
|
||||
|
||||
while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
|
||||
@@ -57,11 +57,11 @@ case $1 in
|
||||
exit 1
|
||||
fi
|
||||
case $1 in
|
||||
- DES|AES|AES128|AES192|AES256)
|
||||
+ AES|AES128|AES192|AES256)
|
||||
Xalgorithm=$1
|
||||
shift
|
||||
;;
|
||||
- des|aes|aes128|aes192|aes256)
|
||||
+ aes|aes128|aes192|aes256)
|
||||
Xalgorithm=$(echo "$1" | tr a-z A-Z)
|
||||
shift
|
||||
;;
|
||||
@@ -90,7 +90,7 @@ if test "x$usage" = "xyes"; then
|
||||
echo ""
|
||||
echo "Usage:"
|
||||
echo " net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]"
|
||||
- echo " [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-x DES|AES|AES128] [username]"
|
||||
+ echo " [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-x AES|AES128] [username]"
|
||||
echo ""
|
||||
exit
|
||||
fi
|
||||
diff -urNp a/README.snmpv3 b/README.snmpv3
|
||||
--- a/README.snmpv3 2026-01-12 12:42:08.021134904 +0100
|
||||
+++ b/README.snmpv3 2026-01-12 12:51:58.767903013 +0100
|
||||
@@ -4,7 +4,7 @@ How to setup SNMPv3, a very brief docume
|
||||
do a better job on since I suck at writing documentation and he
|
||||
doesn't ;-) --Wes:
|
||||
|
||||
-Note: SHA authentication and DES/AES encryption support is only available
|
||||
+Note: SHA authentication and AES encryption support is only available
|
||||
if you have OpenSSL installed or if you've compiled using
|
||||
--with-openssl=internal. If you use --with-openssl=internal please
|
||||
read the documentation in snmplib/openssl/README for important details.
|
||||
@@ -27,7 +27,7 @@ CREATING THE FIRST USER:
|
||||
WARNING: SNMPv3 pass phrases must be at least 8 characters long!
|
||||
|
||||
The above line creates the user "myuser" with a password of
|
||||
- "my_password" (and uses MD5 and DES for protection). (Note that
|
||||
+ "my_password" (and uses MD5 and AES for protection). (Note that
|
||||
encryption support isn't enabled in the binary releases downloadable
|
||||
from the net-snmp web site.) net-snmp-config will also add a line
|
||||
to your snmpd.conf file to let that user have read/write access to
|
||||
@@ -44,7 +44,7 @@ CREATING THE FIRST USER:
|
||||
[ this should return information about how long your agent has been up]
|
||||
|
||||
snmpget -v 3 -u myuser -l authPriv -a MD5 -A my_password
|
||||
- -x DES -X my_password localhost sysUpTime.0
|
||||
+ -x AES -X my_password localhost sysUpTime.0
|
||||
[ this should return similar information, but encrypts the transmission ]
|
||||
|
||||
CREATING A SECOND USER:
|
||||
13
net-snmp-5.9.4-revert-n-snmptrapd-log.patch
Normal file
13
net-snmp-5.9.4-revert-n-snmptrapd-log.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/apps/snmptrapd_log.c b/apps/snmptrapd_log.c
|
||||
index 067c7f6..e6f0f1e 100644
|
||||
--- a/apps/snmptrapd_log.c
|
||||
+++ b/apps/snmptrapd_log.c
|
||||
@@ -596,7 +596,7 @@ realloc_handle_time_fmt(u_char ** buf, size_t * buf_len, size_t * out_len,
|
||||
static
|
||||
void convert_agent_addr(struct in_addr agent_addr, char *name, size_t size)
|
||||
{
|
||||
- const int numeric = !netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
|
||||
+ const int numeric = netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
|
||||
NETSNMP_DS_APP_NUMERIC_IP);
|
||||
struct sockaddr_in sin;
|
||||
|
||||
150
net-snmp-5.9.4-tls.patch
Normal file
150
net-snmp-5.9.4-tls.patch
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
diff --git a/include/net-snmp/library/default_store.h b/include/net-snmp/library/default_store.h
|
||||
index 1b1978e..dd590be 100644
|
||||
--- a/include/net-snmp/library/default_store.h
|
||||
+++ b/include/net-snmp/library/default_store.h
|
||||
@@ -183,6 +183,8 @@ extern "C" {
|
||||
#define NETSNMP_DS_LIB_SSH_PUBKEY 33
|
||||
#define NETSNMP_DS_LIB_SSH_PRIVKEY 34
|
||||
#define NETSNMP_DS_LIB_OUTPUT_PRECISION 35
|
||||
+#define NETSNMP_DS_LIB_TLS_MIN_VERSION 36
|
||||
+#define NETSNMP_DS_LIB_TLS_MAX_VERSION 37
|
||||
#define NETSNMP_DS_LIB_MAX_STR_ID 48 /* match NETSNMP_DS_MAX_SUBIDS */
|
||||
|
||||
/*
|
||||
diff --git a/man/snmpd.conf.5.def b/man/snmpd.conf.5.def
|
||||
index 0a8b9fa..d9641cc 100644
|
||||
--- a/man/snmpd.conf.5.def
|
||||
+++ b/man/snmpd.conf.5.def
|
||||
@@ -203,6 +203,12 @@ HIGH:!AES128\-SHA
|
||||
.RE
|
||||
.IP
|
||||
The default value is whatever openssl itself was configured with.
|
||||
+.IP "tlsMinVersion STRING"
|
||||
+The function sets the minimum supported TLS protocol version.
|
||||
+OPTION can be one of < tls1 | tls1_1| tls1_2 | tls1_3 >.
|
||||
+.IP "tlsMaxVersion STRING"
|
||||
+The function sets the maximum supported TLS protocol version.
|
||||
+OPTION can be one of < tls1 | tls1_1| tls1_2 | tls1_3 >.
|
||||
.IP "[snmp] x509CRLFile"
|
||||
If you are using a Certificate Authority (CA) that publishes a
|
||||
Certificate Revocation List (CRL) then this token can be used to
|
||||
diff --git a/snmplib/transports/snmpTLSBaseDomain.c b/snmplib/transports/snmpTLSBaseDomain.c
|
||||
index e301de4..7ae2db7 100644
|
||||
--- a/snmplib/transports/snmpTLSBaseDomain.c
|
||||
+++ b/snmplib/transports/snmpTLSBaseDomain.c
|
||||
@@ -490,6 +490,9 @@ SSL_CTX *
|
||||
_sslctx_common_setup(SSL_CTX *the_ctx, _netsnmpTLSBaseData *tlsbase) {
|
||||
char *crlFile;
|
||||
char *cipherList;
|
||||
+ char *tlsMinVersion;
|
||||
+ char *tlsMaxVersion;
|
||||
+ int tlsVersion;
|
||||
X509_LOOKUP *lookup;
|
||||
X509_STORE *cert_store = NULL;
|
||||
|
||||
@@ -513,6 +516,63 @@ _sslctx_common_setup(SSL_CTX *the_ctx, _netsnmpTLSBaseData *tlsbase) {
|
||||
X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL);
|
||||
}
|
||||
|
||||
+#ifdef SSL_CTX_set_min_proto_version
|
||||
+ tlsVersion = TLS1_2_VERSION;
|
||||
+ tlsMinVersion = "tls1_2";
|
||||
+ tlsMinVersion = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
|
||||
+ NETSNMP_DS_LIB_TLS_MIN_VERSION);
|
||||
+ if (NULL != tlsMinVersion) {
|
||||
+ if (strcmp("tls1",tlsMinVersion) == 0) {
|
||||
+ tlsVersion = TLS1_VERSION;
|
||||
+ }
|
||||
+ else if (strcmp("tls1_1",tlsMinVersion) == 0) {
|
||||
+ tlsVersion = TLS1_1_VERSION;
|
||||
+ }
|
||||
+ else if (strcmp("tls1_2",tlsMinVersion) == 0) {
|
||||
+ tlsVersion = TLS1_2_VERSION;
|
||||
+ }
|
||||
+ else if (strcmp("tls1_3",tlsMinVersion) == 0) {
|
||||
+ tlsVersion = TLS1_3_VERSION;
|
||||
+ }
|
||||
+ else {
|
||||
+ LOGANDDIE("Invalid tlsMinVersion value");
|
||||
+ }
|
||||
+ }
|
||||
+ if (1 == SSL_CTX_set_min_proto_version(the_ctx, tlsVersion)) {
|
||||
+ snmp_log(LOG_INFO,"Set tlsMinVersion to '%s'\n", tlsMinVersion);
|
||||
+ }
|
||||
+ else {
|
||||
+ LOGANDDIE("Set tlsMinVersion failed");
|
||||
+ }
|
||||
+ tlsVersion = TLS1_3_VERSION;
|
||||
+ tlsMaxVersion = "tls1_3";
|
||||
+ tlsMaxVersion = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
|
||||
+ NETSNMP_DS_LIB_TLS_MAX_VERSION);
|
||||
+ if (NULL != tlsMaxVersion) {
|
||||
+ if (strcmp("tls1",tlsMaxVersion) == 0) {
|
||||
+ tlsVersion = TLS1_VERSION;
|
||||
+ }
|
||||
+ else if (strcmp("tls1_1",tlsMaxVersion) == 0) {
|
||||
+ tlsVersion = TLS1_1_VERSION;
|
||||
+ }
|
||||
+ else if (strcmp("tls1_2",tlsMaxVersion) == 0) {
|
||||
+ tlsVersion = TLS1_2_VERSION;
|
||||
+ }
|
||||
+ else if (strcmp("tls1_3",tlsMaxVersion) == 0) {
|
||||
+ tlsVersion = TLS1_3_VERSION;
|
||||
+ }
|
||||
+ else {
|
||||
+ LOGANDDIE("Invalid tlsMaxVersion value");
|
||||
+ }
|
||||
+ }
|
||||
+ if (1 == SSL_CTX_set_max_proto_version(the_ctx, tlsVersion)) {
|
||||
+ snmp_log(LOG_INFO,"Set tlsMaxVersion to '%s'\n", tlsMaxVersion);
|
||||
+ }
|
||||
+ else {
|
||||
+ LOGANDDIE("Set tlsMaxVersion failed");
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
cipherList = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
|
||||
NETSNMP_DS_LIB_TLS_ALGORITMS);
|
||||
if (NULL != cipherList) {
|
||||
@@ -858,6 +918,15 @@ netsnmp_tlsbase_ctor(void) {
|
||||
NETSNMP_DS_LIBRARY_ID,
|
||||
NETSNMP_DS_LIB_TLS_ALGORITMS);
|
||||
|
||||
+ /* What TLS version should be used at least */
|
||||
+ netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "tlsMinVersion",
|
||||
+ NETSNMP_DS_LIBRARY_ID,
|
||||
+ NETSNMP_DS_LIB_TLS_MIN_VERSION);
|
||||
+ /* What TLS version should be used at max */
|
||||
+ netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "tlsMaxVersion",
|
||||
+ NETSNMP_DS_LIBRARY_ID,
|
||||
+ NETSNMP_DS_LIB_TLS_MAX_VERSION);
|
||||
+
|
||||
/*
|
||||
* for the client
|
||||
*/
|
||||
diff --git a/snmplib/transports/snmpTLSTCPDomain.c b/snmplib/transports/snmpTLSTCPDomain.c
|
||||
index 0ddf023..e0133f9 100644
|
||||
--- a/snmplib/transports/snmpTLSTCPDomain.c
|
||||
+++ b/snmplib/transports/snmpTLSTCPDomain.c
|
||||
@@ -718,10 +718,6 @@ netsnmp_tlstcp_open_client(netsnmp_transport *t)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-#ifdef SSL_CTX_set_max_proto_version
|
||||
- SSL_CTX_set_max_proto_version(tlsdata->ssl_context, 0);
|
||||
-#endif
|
||||
-
|
||||
/* RFC5953 Section 5.3.1: Establishing a Session as a Client
|
||||
3) Using the destTransportDomain and destTransportAddress values,
|
||||
the client will initiate the (D)TLS handshake protocol to
|
||||
@@ -917,10 +913,6 @@ netsnmp_tlstcp_open_server(netsnmp_transport *t)
|
||||
|
||||
/* create the OpenSSL TLS context */
|
||||
tlsdata->ssl_context = sslctx_server_setup(TLS_method());
|
||||
-#ifdef SSL_CTX_set_max_proto_version
|
||||
- if (tlsdata->ssl_context)
|
||||
- SSL_CTX_set_max_proto_version(tlsdata->ssl_context, 0);
|
||||
-#endif
|
||||
|
||||
t->sock = BIO_get_fd(tlsdata->accept_bio, NULL);
|
||||
t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
|
||||
|
|
@ -16,47 +16,47 @@
|
|||
arch=`arch`
|
||||
echo $arch | grep -q i.86
|
||||
if [ $? -eq 0 ] ; then
|
||||
net-snmp-config-i386 $*
|
||||
net-snmp-config-i386 "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "ia64" ] ; then
|
||||
net-snmp-config-ia64 $*
|
||||
net-snmp-config-ia64 "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "ppc" ] ; then
|
||||
net-snmp-config-ppc $*
|
||||
net-snmp-config-ppc "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "ppc64" ] ; then
|
||||
net-snmp-config-ppc64 $*
|
||||
net-snmp-config-ppc64 "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "s390" ] ; then
|
||||
net-snmp-config-s390 $*
|
||||
net-snmp-config-s390 "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "s390x" ] ; then
|
||||
net-snmp-config-s390x $*
|
||||
net-snmp-config-s390x "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "x86_64" ] ; then
|
||||
net-snmp-config-x86_64 $*
|
||||
net-snmp-config-x86_64 "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "alpha" ] ; then
|
||||
net-snmp-config-alpha $*
|
||||
net-snmp-config-alpha "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "sparc" ] ; then
|
||||
net-snmp-config-sparc $*
|
||||
net-snmp-config-sparc "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "sparc64" ] ; then
|
||||
net-snmp-config-sparc64 $*
|
||||
net-snmp-config-sparc64 "$@"
|
||||
exit 0
|
||||
fi
|
||||
if [ "$arch" = "aarch64" ] ; then
|
||||
net-snmp-config-aarch64 $*
|
||||
net-snmp-config-aarch64 "$@"
|
||||
exit 0
|
||||
fi
|
||||
echo "Cannot determine architecture"
|
||||
|
|
|
|||
59
net-snmp-libs-misunderstanding.patch
Normal file
59
net-snmp-libs-misunderstanding.patch
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
Libs.private should contain a list of libraries the library that the package
|
||||
exposes is linked too. So let's filter out unrelated link flags.
|
||||
|
||||
diff --git net-snmp-5.9.1/netsnmp.pc.in~ net-snmp-5.9.1/netsnmp.pc.in
|
||||
index 0a1f5785a4..524ca91d82 100644
|
||||
--- net-snmp-5.9.1/netsnmp.pc.in~
|
||||
+++ net-snmp-5.9.1/netsnmp.pc.in
|
||||
@@ -9,4 +9,4 @@ URL: http://www.net-snmp.org
|
||||
Version: @PACKAGE_VERSION@
|
||||
Cflags: -I${includedir}
|
||||
Libs: -L${libdir} -lnetsnmp
|
||||
-Libs.private: @LDFLAGS@ @LNETSNMPLIBS@ @LIBS@ @PERLLDOPTS_FOR_APPS@
|
||||
+Libs.private: @LNETSNMPLIBS@ @LIBS@
|
||||
diff --git net-snmp-5.9.1/netsnmp-agent.pc.in~ net-snmp-5.9.1/netsnmp-agent.pc.in
|
||||
index 3a1c77bbf8..3d3b308d21 100644
|
||||
--- net-snmp-5.9.1/netsnmp-agent.pc.in~
|
||||
+++ net-snmp-5.9.1/netsnmp-agent.pc.in
|
||||
@@ -9,4 +9,4 @@ URL: http://www.net-snmp.org
|
||||
Version: @PACKAGE_VERSION@
|
||||
Cflags: -I${includedir}
|
||||
Libs: -L${libdir} -lnetsnmpmibs -lnetsnmpagent -lnetsnmp
|
||||
-Libs.private: @LDFLAGS@ @LMIBLIBS@ @LAGENTLIBS@ @PERLLDOPTS_FOR_APPS@ @LNETSNMPLIBS@ @LIBS@
|
||||
+Libs.private: @LMIBLIBS@ @LAGENTLIBS@ @LNETSNMPLIBS@ @LIBS@
|
||||
diff --git net-snmp-5.9.1/net-snmp-config.in~ net-snmp-5.9.1/net-snmp-config.in
|
||||
index 6b5abf8f83..ee81ce98fa 100644
|
||||
--- net-snmp-5.9.1/net-snmp-config.in~
|
||||
+++ net-snmp-5.9.1/net-snmp-config.in
|
||||
@@ -193,13 +193,13 @@ else
|
||||
#################################################### client lib
|
||||
--libs)
|
||||
# use this one == --netsnmp-libs + --external-libs
|
||||
- echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_SNMPLIBS $NSC_LIBS
|
||||
+ echo $NSC_LIBDIR $NSC_SNMPLIBS $NSC_LIBS
|
||||
;;
|
||||
--netsnmp-libs)
|
||||
echo $NSC_LIBDIR $NSC_BASE_SNMP_LIBS
|
||||
;;
|
||||
--external-libs)
|
||||
- echo $NSC_LDFLAGS $NSC_LNETSNMPLIBS $NSC_LIBS @PERLLDOPTS_FOR_APPS@
|
||||
+ echo $NSC_LNETSNMPLIBS $NSC_LIBS
|
||||
;;
|
||||
#################################################### agent lib
|
||||
--base-agent-libs)
|
||||
@@ -210,13 +210,13 @@ else
|
||||
;;
|
||||
--agent-libs)
|
||||
# use this one == --netsnmp-agent-libs + --external-libs
|
||||
- echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_AGENTLIBS $NSC_LIBS
|
||||
+ echo $NSC_LIBDIR $NSC_AGENTLIBS $NSC_LIBS
|
||||
;;
|
||||
--netsnmp-agent-libs)
|
||||
echo $NSC_LIBDIR $NSC_BASE_AGENT_LIBS
|
||||
;;
|
||||
--external-agent-libs)
|
||||
- echo $NSC_LDFLAGS $NSC_LMIBLIBS $NSC_LAGENTLIBS $NSC_LNETSNMPLIBS $NSC_LIBS
|
||||
+ echo $NSC_LMIBLIBS $NSC_LAGENTLIBS $NSC_LNETSNMPLIBS $NSC_LIBS
|
||||
;;
|
||||
####################################################
|
||||
--version|--ver*)
|
||||
|
|
@ -1 +1 @@
|
|||
d /var/run/net-snmp 0755 root root
|
||||
d /run/net-snmp 0755 root root
|
||||
|
|
|
|||
866
net-snmp.spec
866
net-snmp.spec
File diff suppressed because it is too large
Load diff
115
net-snmpd.init
115
net-snmpd.init
|
|
@ -1,115 +0,0 @@
|
|||
#!/bin/bash
|
||||
# ucd-snmp init file for snmpd
|
||||
#
|
||||
# chkconfig: - 50 50
|
||||
# description: Simple Network Management Protocol (SNMP) Daemon
|
||||
#
|
||||
# processname: /usr/sbin/snmpd
|
||||
# config: /etc/snmp/snmpd.conf
|
||||
# config: /usr/share/snmp/snmpd.conf
|
||||
# pidfile: /var/run/snmpd.pid
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: snmpd
|
||||
# Required-Start: $local_fs $network
|
||||
# Required-Stop: $local_fs $network
|
||||
# Should-Start:
|
||||
# Should-Stop:
|
||||
# Default-Start:
|
||||
# Default-Stop:
|
||||
# Short-Description: start and stop Net-SNMP daemon
|
||||
# Description: Simple Network Management Protocol (SNMP) Daemon
|
||||
### END INIT INFO
|
||||
|
||||
# source function library
|
||||
. /etc/init.d/functions
|
||||
|
||||
|
||||
OPTIONS="-LS0-6d -Lf /dev/null -p /var/run/snmpd.pid"
|
||||
if [ -e /etc/sysconfig/snmpd ]; then
|
||||
. /etc/sysconfig/snmpd
|
||||
fi
|
||||
|
||||
RETVAL=0
|
||||
prog="snmpd"
|
||||
binary=/usr/sbin/snmpd
|
||||
pidfile=/var/run/snmpd.pid
|
||||
|
||||
start() {
|
||||
[ -x $binary ] || exit 5
|
||||
echo -n $"Starting $prog: "
|
||||
if [ $UID -ne 0 ]; then
|
||||
RETVAL=1
|
||||
failure
|
||||
else
|
||||
daemon --pidfile=$pidfile $binary $OPTIONS
|
||||
RETVAL=$?
|
||||
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/snmpd
|
||||
fi;
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping $prog: "
|
||||
if [ $UID -ne 0 ]; then
|
||||
RETVAL=1
|
||||
failure
|
||||
else
|
||||
killproc -p $pidfile $binary
|
||||
RETVAL=$?
|
||||
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/snmpd
|
||||
fi;
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
reload(){
|
||||
echo -n $"Reloading $prog: "
|
||||
killproc -p $pidfile $binary -HUP
|
||||
RETVAL=$?
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
restart(){
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
condrestart(){
|
||||
[ -e /var/lock/subsys/snmpd ] && restart
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
RETVAL=$?
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
RETVAL=$?
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
RETVAL=$?
|
||||
;;
|
||||
reload|force-reload)
|
||||
reload
|
||||
RETVAL=$?
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
condrestart
|
||||
RETVAL=$?
|
||||
;;
|
||||
status)
|
||||
status snmpd
|
||||
RETVAL=$?
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
|
||||
RETVAL=2
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ucd-snmp init file for snmptrapd
|
||||
#
|
||||
# chkconfig: - 50 50
|
||||
# description: Simple Network Management Protocol (SNMP) Trap Daemon
|
||||
#
|
||||
# processname: /usr/sbin/snmptrapd
|
||||
# config: /etc/snmp/snmptrapd.conf
|
||||
# config: /usr/share/snmp/snmptrapd.conf
|
||||
# pidfile: /var/run/snmptrapd.pid
|
||||
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: snmptrapd
|
||||
# Required-Start: $local_fs $network
|
||||
# Required-Stop: $local_fs $network
|
||||
# Should-Start:
|
||||
# Should-Stop:
|
||||
# Default-Start:
|
||||
# Default-Stop:
|
||||
# Short-Description: start and stop Net-SNMP trap daemon
|
||||
# Description: Simple Network Management Protocol (SNMP) trap daemon
|
||||
### END INIT INFO
|
||||
|
||||
# source function library
|
||||
. /etc/init.d/functions
|
||||
|
||||
OPTIONS="-Lsd -p /var/run/snmptrapd.pid"
|
||||
if [ -e /etc/sysconfig/snmptrapd ]; then
|
||||
. /etc/sysconfig/snmptrapd
|
||||
fi
|
||||
|
||||
RETVAL=0
|
||||
prog="snmptrapd"
|
||||
binary=/usr/sbin/snmptrapd
|
||||
pidfile=/var/run/snmptrapd.pid
|
||||
|
||||
start() {
|
||||
[ -x $binary ] || exit 5
|
||||
echo -n $"Starting $prog: "
|
||||
daemon --pidfile=$pidfile /usr/sbin/snmptrapd $OPTIONS
|
||||
RETVAL=$?
|
||||
echo
|
||||
touch /var/lock/subsys/snmptrapd
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping $prog: "
|
||||
killproc -p $pidfile /usr/sbin/snmptrapd
|
||||
RETVAL=$?
|
||||
echo
|
||||
rm -f /var/lock/subsys/snmptrapd
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
reload(){
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
restart(){
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
condrestart(){
|
||||
[ -e /var/lock/subsys/snmptrapd ] && restart
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
RETVAL=$?
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
RETVAL=$?
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
RETVAL=$?
|
||||
;;
|
||||
reload|force-reload)
|
||||
reload
|
||||
RETVAL=$?
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
condrestart
|
||||
RETVAL=$?
|
||||
;;
|
||||
status)
|
||||
status snmptrapd
|
||||
RETVAL=$?
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
|
||||
RETVAL=2
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
||||
5
plans/ci.fmf
Normal file
5
plans/ci.fmf
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
summary: Basic smoke test
|
||||
discover:
|
||||
how: fmf
|
||||
execute:
|
||||
how: tmt
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[Unit]
|
||||
Description=Simple Network Management Protocol (SNMP) Daemon.
|
||||
After=syslog.target network.target
|
||||
After=syslog.target network-online.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[Unit]
|
||||
Description=Simple Network Management Protocol (SNMP) Trap Daemon.
|
||||
After=syslog.target network.target
|
||||
After=syslog.target network-online.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
d4a3459e1577d0efa8d96ca70a885e53 net-snmp-5.7.3.tar.gz
|
||||
SHA512 (net-snmp-5.9.5.2.tar.gz) = c320c90e01377651fdff3aa9c373b9013f142fab23810d821174e546716ef2fa6499a805728710c67ca7fe238679111df392754c24ea4e01768faa5535ac7db2
|
||||
|
|
|
|||
36
tests/integration-tests/Makefile
Normal file
36
tests/integration-tests/Makefile
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Makefile of /CoreOS/net-snmp
|
||||
# Description: Test if net-snmp working ok
|
||||
# Author: Susant Sahani<susant@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
export TEST=/CoreOS/net-snmp
|
||||
export TESTVERSION=1.0
|
||||
BUILT_FILES=
|
||||
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||
.PHONY: all install download clean
|
||||
run: $(FILES) build
|
||||
./runtest.sh
|
||||
build: $(BUILT_FILES)
|
||||
test -x runtest.sh || chmod a+x runtest.sh
|
||||
clean:
|
||||
rm -f *~ $(BUILT_FILES)
|
||||
include /usr/share/rhts/lib/rhts-make.include
|
||||
$(METADATA): Makefile
|
||||
@echo "Owner: Susant Sahani<susant@redhat.com>" > $(METADATA)
|
||||
@echo "Name: $(TEST)" >> $(METADATA)
|
||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||
@echo "Description: Test snmpd" >> $(METADATA)
|
||||
@echo "Type: Sanity" >> $(METADATA)
|
||||
@echo "TestTime: 5m" >> $(METADATA)
|
||||
@echo "RunFor: net-snmp" >> $(METADATA)
|
||||
@echo "Requires: net-snmp net-snmp-utils iproute python3 python3-pyroute2" >> $(METADATA)
|
||||
@echo "Priority: Normal" >> $(METADATA)
|
||||
@echo "License: GPLv2" >> $(METADATA)
|
||||
@echo "Confidential: no" >> $(METADATA)
|
||||
@echo "Destructive: no" >> $(METADATA)
|
||||
@echo "Releases: -Fedora 28" >> $(METADATA)
|
||||
rhts-lint $(METADATA)
|
||||
3
tests/integration-tests/PURPOSE
Normal file
3
tests/integration-tests/PURPOSE
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PURPOSE of /CoreOS/net-snmp
|
||||
Description: tests for net-snmp
|
||||
Author: Susant Sahani<susant@redhat.com>
|
||||
16
tests/integration-tests/main.fmf
Normal file
16
tests/integration-tests/main.fmf
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
summary: Test snmpd
|
||||
description: ''
|
||||
contact: Susant Sahani<susant@redhat.com>
|
||||
component:
|
||||
- net-snmp
|
||||
test: ./runtest.sh
|
||||
framework: beakerlib
|
||||
recommend:
|
||||
- net-snmp
|
||||
- net-snmp-utils
|
||||
- iproute
|
||||
- python3
|
||||
- python3-pyroute2
|
||||
duration: 5m
|
||||
extra-summary: /CoreOS/net-snmp
|
||||
extra-task: /CoreOS/net-snmp
|
||||
169
tests/integration-tests/net-snmp-tests.py
Executable file
169
tests/integration-tests/net-snmp-tests.py
Executable file
|
|
@ -0,0 +1,169 @@
|
|||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
# ~~~
|
||||
# Description: Tests for snmpd
|
||||
#
|
||||
# Author: Susant Sahani <susant@redhat.com>
|
||||
# Copyright (c) 2018 Red Hat, Inc.
|
||||
# ~~~
|
||||
|
||||
import errno
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import unittest
|
||||
import subprocess
|
||||
import signal
|
||||
import shutil
|
||||
import socket
|
||||
import platform
|
||||
import re
|
||||
from pyroute2 import IPRoute
|
||||
from collections import OrderedDict
|
||||
|
||||
HOST='192.168.111.50'
|
||||
|
||||
def setUpModule():
|
||||
"""Initialize the environment, and perform sanity checks on it."""
|
||||
|
||||
if shutil.which('snmpd') is None:
|
||||
raise OSError(errno.ENOENT, 'snmpd not found')
|
||||
|
||||
if shutil.which('snmpwalk') is None:
|
||||
raise OSError(errno.ENOENT, 'snmpwalk not found')
|
||||
|
||||
def tearDownModule():
|
||||
pass
|
||||
|
||||
class GenericUtilities():
|
||||
"""Provide a set of utility functions start stop daemons. write config files etc """
|
||||
|
||||
def StartSnmpd(self):
|
||||
"""Start snmpd"""
|
||||
subprocess.check_output(['systemctl', 'start', 'snmpd'])
|
||||
|
||||
def StopSnmpd(self):
|
||||
"""Stop snmpd"""
|
||||
subprocess.check_output(['systemctl', 'stop', 'snmpd'])
|
||||
|
||||
def SetupVethInterface(self):
|
||||
"""Setup veth interface"""
|
||||
|
||||
ip = IPRoute()
|
||||
|
||||
ip.link('add', ifname='veth-test', peer='veth-peer', kind='veth')
|
||||
idx_veth_test = ip.link_lookup(ifname='veth-test')[0]
|
||||
idx_veth_peer = ip.link_lookup(ifname='veth-peer')[0]
|
||||
|
||||
ip.link('set', index=idx_veth_test, address='12:11:12:13:14:18')
|
||||
ip.link('set', index=idx_veth_peer, address='22:21:22:23:24:29')
|
||||
ip.link('set', index=idx_veth_test, state='up')
|
||||
ip.link('set', index=idx_veth_peer, state='up')
|
||||
ip.addr('add', index=idx_veth_test, address='192.168.111.50')
|
||||
ip.addr('add', index=idx_veth_peer, address='192.168.111.51')
|
||||
|
||||
ip.close()
|
||||
|
||||
def TearDownVethInterface(self):
|
||||
ip = IPRoute()
|
||||
|
||||
ip.link('del', index=ip.link_lookup(ifname='veth-test')[0])
|
||||
ip.close()
|
||||
|
||||
class SnmpdTests(unittest.TestCase, GenericUtilities):
|
||||
|
||||
def setUp(self):
|
||||
self.SetupVethInterface()
|
||||
time.sleep(1)
|
||||
self.StartSnmpd()
|
||||
|
||||
def tearDown(self):
|
||||
self.StopSnmpd()
|
||||
self.TearDownVethInterface()
|
||||
|
||||
def test_UCD_SNMP_MIB_memory(self):
|
||||
''' UCD-SNMP-MIB::memory '''
|
||||
|
||||
subprocess.check_output(['snmpwalk', '-v2c', '-c' , 'public', HOST, 'UCD-SNMP-MIB::memory'])
|
||||
|
||||
meminfo=OrderedDict()
|
||||
with open('/proc/meminfo') as f:
|
||||
for line in f:
|
||||
meminfo[line.split(':')[0]] = line.split(':')[1].strip()
|
||||
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c' , 'public', HOST, 'UCD-SNMP-MIB::memTotalReal.0']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, meminfo['MemTotal'])
|
||||
|
||||
def test_SNMP_hrSWRunPath(self):
|
||||
""" process id """
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c' , 'public', HOST, 'HOST-RESOURCES-MIB::hrSWRunPath.1']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, 'systemd')
|
||||
|
||||
def test_SNMP_IF_MIB_network_interface(self):
|
||||
""" verify network interface (1.3.6.1.2.1.2.2.1) SNMP variables """
|
||||
|
||||
ip = IPRoute()
|
||||
|
||||
subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.2.2.1'])
|
||||
|
||||
# 1.3.6.1.2.1.2.2.1.1 IF-MIB::ifIndex
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.2.2.1.1']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, 'IF-MIB::ifIndex.1 = INTEGER: 1')
|
||||
|
||||
# 1.3.6.1.2.1.2.2.1.1 IF-MIB::ifDescr
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.2.2.1.2']).rstrip().decode('utf-8')
|
||||
for link in ip.get_links():
|
||||
self.assertRegex(output, link.get_attr('IFLA_IFNAME'))
|
||||
|
||||
# IP-MIB::ipAdEntAddr 1.3.6.1.2.1.4.20.1.1
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.4.20.1.1']).rstrip().decode('utf-8')
|
||||
for addr in ip.get_addr():
|
||||
if addr.get_attr('IFA_ADDRESS'):
|
||||
if addr.get_attr('IFA_ADDRESS') != '::1' and addr.get_attr('Ifamily') == 2:
|
||||
self.assertRegex(output, addr.get_attr('IFA_ADDRESS'))
|
||||
|
||||
# IF-MIB::ifPhysAddress. 1.3.6.1.2.1.2.2.1.6
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.2.2.1.6']).rstrip().decode('utf-8')
|
||||
for link in ip.get_links():
|
||||
if link.get_attr('IFLA_ADDRESS') and link.get_attr('IFLA_ADDRESS') != '00:00:00:00:00:00':
|
||||
snmp_mac = re.sub(r'\b0+(\d)', r'\1', link.get_attr('IFLA_ADDRESS')).lstrip('0')
|
||||
self.assertRegex(output, snmp_mac)
|
||||
|
||||
ip.close()
|
||||
|
||||
def test_SNMP_MIB_2_System(self):
|
||||
""" verify RFC 1213 System (1.3.6.1.2.1.1) SNMP variables"""
|
||||
|
||||
subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1']).rstrip().decode('utf-8')
|
||||
|
||||
# 1.3.6.1.2.1.1.1 - sysDescr
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1.1']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, " ".join(platform.uname()).strip())
|
||||
|
||||
# 1.3.6.1.2.1.1.2 - sysObjectID
|
||||
subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1.2'])
|
||||
|
||||
# 1.3.6.1.2.1.1.3 - sysUpTime
|
||||
subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1.3'])
|
||||
|
||||
# 1.3.6.1.2.1.1.4 - sysContact
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1.4']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, 'fedora-ci <fedoraci@fedoraproject.org>')
|
||||
|
||||
# 1.3.6.1.2.1.1.5 - sysName
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1.5']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, socket.gethostname())
|
||||
|
||||
# 1.3.6.1.2.1.1.6 - sysLocation
|
||||
output=subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST, '1.3.6.1.2.1.1.6']).rstrip().decode('utf-8')
|
||||
self.assertRegex(output, 'Pune, IN')
|
||||
|
||||
def test_basic_snmpwalk(self):
|
||||
""" verify snmpwalk getting success snmpwalk -v2c -c public localhost """
|
||||
|
||||
subprocess.check_output(['snmpwalk', '-v2c', '-c', 'public', HOST])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||
verbosity=3))
|
||||
51
tests/integration-tests/runtest.sh
Executable file
51
tests/integration-tests/runtest.sh
Executable file
|
|
@ -0,0 +1,51 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
# ~~~
|
||||
# runtest.sh of net-snmp
|
||||
# Description: net-snmp tests
|
||||
#
|
||||
# Author: Susant Sahani <susant@redhat.com>
|
||||
# Copyright (c) 2018 Red Hat, Inc.
|
||||
# ~~~
|
||||
|
||||
# Include Beaker environment
|
||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||
|
||||
PACKAGE_NET_SNMP="net-snmp"
|
||||
PACKAGE_NET_SNMP_UTILS="net-snmp-utils"
|
||||
|
||||
NET_SNMP_CONF_FILE="/etc/snmp/snmpd.conf"
|
||||
|
||||
rlJournalStart
|
||||
rlPhaseStartSetup
|
||||
rlAssertRpm $PACKAGE_NET_SNMP
|
||||
rlAssertRpm $PACKAGE_NET_SNMP_UTILS
|
||||
|
||||
rlRun "systemctl stop firewalld" 0,5
|
||||
rlRun "setenforce 0" 0,1
|
||||
|
||||
rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1
|
||||
rlRun "cp net-snmp-tests.py /usr/bin/"
|
||||
|
||||
rlFileBackup "$NET_SNMP_CONF_FILE"
|
||||
rlRun "cp snmpd.conf $NET_SNMP_CONF_FILE"
|
||||
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartTest
|
||||
rlLog "Starting net-snmp tests ..."
|
||||
rlRun "/usr/bin/python3 /usr/bin/net-snmp-tests.py"
|
||||
rlPhaseEnd
|
||||
|
||||
rlPhaseStartCleanup
|
||||
rlRun "rm /usr/bin/net-snmp-tests.py $NET_SNMP_CONFIG_FILE"
|
||||
rlRun "systemctl daemon-reload"
|
||||
rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1
|
||||
rlFileRestore
|
||||
rlRun "setenforce 1" 0,1
|
||||
rlLog "net-snmp tests done"
|
||||
rlPhaseEnd
|
||||
rlJournalPrintText
|
||||
rlJournalEnd
|
||||
|
||||
rlGetTestState
|
||||
7
tests/integration-tests/snmpd.conf
Normal file
7
tests/integration-tests/snmpd.conf
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
agentAddress udp:192.168.111.50:161
|
||||
|
||||
syslocation Pune, IN
|
||||
syscontact fedora-ci <fedoraci@fedoraproject.org>
|
||||
|
||||
dontLogTCPWrappersConnects yes
|
||||
rocommunity public
|
||||
Loading…
Add table
Add a link
Reference in a new issue