- fix snmptrapd hostname logging
- fix udpEndpointProcess remote IP address - fix -M option of net-snmp-utils Resolves: #238587 #236551 #244784
This commit is contained in:
parent
edb388c324
commit
ecb48084c9
10
net-snmp-5.3.1-mib-option.patch
Normal file
10
net-snmp-5.3.1-mib-option.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- net-snmp-5.3.1/snmplib/snmp_parse_args.c.orig 2005-11-23 10:11:40.000000000 +0100
|
||||
+++ net-snmp-5.3.1/snmplib/snmp_parse_args.c 2007-06-14 13:10:54.000000000 +0200
|
||||
@@ -275,6 +275,7 @@
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
+ netsnmp_get_mib_directory(); /* prepare the default directories */
|
||||
netsnmp_set_mib_directory(optarg);
|
||||
break;
|
||||
#endif /* DISABLE_MIB_LOADING */
|
206
net-snmp-5.4-hostname.patch
Normal file
206
net-snmp-5.4-hostname.patch
Normal file
@ -0,0 +1,206 @@
|
||||
--- net-snmp-5.4/apps/snmptrapd_log.c.orig 2006-09-15 02:48:43.000000000 +0200
|
||||
+++ net-snmp-5.4/apps/snmptrapd_log.c 2007-05-03 12:19:58.000000000 +0200
|
||||
@@ -626,6 +626,8 @@
|
||||
char fmt_cmd = options->cmd; /* what we're formatting */
|
||||
u_char *temp_buf = NULL;
|
||||
size_t temp_buf_len = 64, temp_out_len = 0;
|
||||
+ char *tstr;
|
||||
+ unsigned int oflags;
|
||||
|
||||
if ((temp_buf = calloc(temp_buf_len, 1)) == NULL) {
|
||||
return 0;
|
||||
@@ -681,125 +683,59 @@
|
||||
* Write the numerical transport information.
|
||||
*/
|
||||
if (transport != NULL && transport->f_fmtaddr != NULL) {
|
||||
- char *tstr =
|
||||
- transport->f_fmtaddr(transport, pdu->transport_data,
|
||||
- pdu->transport_data_length);
|
||||
- if (!snmp_strcat
|
||||
- (&temp_buf, &temp_buf_len, &temp_out_len, 1, (u_char *)tstr)) {
|
||||
- if (tstr != NULL) {
|
||||
- free(tstr);
|
||||
- }
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
+ oflags = transport->flags;
|
||||
+ transport->flags &= ~NETSNMP_TRANSPORT_FLAG_HOSTNAME;
|
||||
+ tstr = transport->f_fmtaddr(transport, pdu->transport_data,
|
||||
+ pdu->transport_data_length);
|
||||
+ transport->flags = oflags;
|
||||
+
|
||||
+ if (!tstr) goto noip;
|
||||
+ if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len,
|
||||
+ 1, (u_char *)tstr)) {
|
||||
+ SNMP_FREE(temp_buf);
|
||||
+ SNMP_FREE(tstr);
|
||||
return 0;
|
||||
}
|
||||
- if (tstr != NULL) {
|
||||
- free(tstr);
|
||||
- }
|
||||
+ SNMP_FREE(tstr);
|
||||
} else {
|
||||
- if (!snmp_strcat
|
||||
- (&temp_buf, &temp_buf_len, &temp_out_len, 1,
|
||||
- "<UNKNOWN>")) {
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
+noip:
|
||||
+ if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
|
||||
+ (const u_char*)"<UNKNOWN>")) {
|
||||
+ SNMP_FREE(temp_buf);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
- /*
|
||||
- * Write a host name.
|
||||
- */
|
||||
case CHR_PDU_NAME:
|
||||
/*
|
||||
- * Right, apparently a name lookup is wanted. This is only reasonable
|
||||
- * for the UDP and TCP transport domains (we don't want to try to be
|
||||
- * too clever here).
|
||||
+ * Try to convert the numerical transport information
|
||||
+ * into a hostname. Or rather, have the transport-specific
|
||||
+ * address formatting routine do this.
|
||||
+ * Otherwise falls back to the numeric address format.
|
||||
*/
|
||||
-#ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
|
||||
- if (transport != NULL && (transport->domain == netsnmpUDPDomain ||
|
||||
- transport->domain ==
|
||||
- netsnmp_snmpTCPDomain)) {
|
||||
-#else
|
||||
- if (transport != NULL && transport->domain == netsnmpUDPDomain) {
|
||||
-#endif
|
||||
- /*
|
||||
- * This is kind of bletcherous -- it breaks the opacity of
|
||||
- * transport_data but never mind -- the alternative is a lot of
|
||||
- * munging strings from f_fmtaddr.
|
||||
- */
|
||||
- struct sockaddr_in *addr =
|
||||
- (struct sockaddr_in *) pdu->transport_data;
|
||||
- if (addr != NULL
|
||||
- && pdu->transport_data_length ==
|
||||
- sizeof(struct sockaddr_in)) {
|
||||
- if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
|
||||
- NETSNMP_DS_APP_NUMERIC_IP)) {
|
||||
- host =
|
||||
- gethostbyaddr((char *) &(addr->sin_addr),
|
||||
- sizeof(struct in_addr), AF_INET);
|
||||
- }
|
||||
- if (host != NULL) {
|
||||
- if (!snmp_strcat
|
||||
- (&temp_buf, &temp_buf_len, &temp_out_len, 1,
|
||||
- (u_char *)host->h_name)) {
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
- return 0;
|
||||
- }
|
||||
- } else {
|
||||
- if (!snmp_strcat
|
||||
- (&temp_buf, &temp_buf_len, &temp_out_len, 1,
|
||||
- (u_char *)inet_ntoa(addr->sin_addr))) {
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
- return 0;
|
||||
- }
|
||||
- }
|
||||
- } else {
|
||||
- if (!snmp_strcat
|
||||
- (&temp_buf, &temp_buf_len, &temp_out_len, 1,
|
||||
- "<UNKNOWN>")) {
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
- return 0;
|
||||
- }
|
||||
- }
|
||||
- } else if (transport != NULL && transport->f_fmtaddr != NULL) {
|
||||
- /*
|
||||
- * Some other domain for which we do not know how to do a name
|
||||
- * lookup. Fall back to the formatted transport address.
|
||||
- */
|
||||
- char *tstr =
|
||||
- transport->f_fmtaddr(transport, pdu->transport_data,
|
||||
- pdu->transport_data_length);
|
||||
- if (!snmp_strcat
|
||||
- (&temp_buf, &temp_buf_len, &temp_out_len, 1, (u_char *)tstr)) {
|
||||
- if (tstr != NULL) {
|
||||
- free(tstr);
|
||||
- }
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
+ if (transport != NULL && transport->f_fmtaddr != NULL) {
|
||||
+ oflags = transport->flags;
|
||||
+ if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
|
||||
+ NETSNMP_DS_APP_NUMERIC_IP))
|
||||
+ transport->flags |= NETSNMP_TRANSPORT_FLAG_HOSTNAME;
|
||||
+ tstr = transport->f_fmtaddr(transport, pdu->transport_data,
|
||||
+ pdu->transport_data_length);
|
||||
+ transport->flags = oflags;
|
||||
+
|
||||
+ if (!tstr) goto nohost;
|
||||
+ if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len,
|
||||
+ 1, (u_char *)tstr)) {
|
||||
+ SNMP_FREE(temp_buf);
|
||||
+ SNMP_FREE(tstr);
|
||||
return 0;
|
||||
}
|
||||
- if (tstr != NULL) {
|
||||
- free(tstr);
|
||||
- }
|
||||
+ SNMP_FREE(tstr);
|
||||
} else {
|
||||
- /*
|
||||
- * We are kind of stuck!
|
||||
- */
|
||||
+nohost:
|
||||
if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
|
||||
- "<UNKNOWN>")) {
|
||||
- if (temp_buf != NULL) {
|
||||
- free(temp_buf);
|
||||
- }
|
||||
+ (const u_char*)"<UNKNOWN>")) {
|
||||
+ SNMP_FREE(temp_buf);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
--- net-snmp-5.4/snmplib/snmpUDPDomain.c.orig 2006-09-20 01:42:17.000000000 +0200
|
||||
+++ net-snmp-5.4/snmplib/snmpUDPDomain.c 2007-05-03 12:17:30.000000000 +0200
|
||||
@@ -87,6 +87,7 @@
|
||||
netsnmp_udp_fmtaddr(netsnmp_transport *t, void *data, int len)
|
||||
{
|
||||
netsnmp_udp_addr_pair *addr_pair = NULL;
|
||||
+ struct hostent *host;
|
||||
|
||||
if (data != NULL && len == sizeof(netsnmp_udp_addr_pair)) {
|
||||
addr_pair = (netsnmp_udp_addr_pair *) data;
|
||||
@@ -104,6 +105,10 @@
|
||||
return strdup("UDP: unknown");
|
||||
}
|
||||
|
||||
+ if ( t && t->flags & NETSNMP_TRANSPORT_FLAG_HOSTNAME ) {
|
||||
+ host = gethostbyaddr((char *)&to->sin_addr, 4, AF_INET);
|
||||
+ return (host ? strdup(host->h_name) : NULL);
|
||||
+ }
|
||||
sprintf(tmp, "UDP: [%s]:%hu",
|
||||
inet_ntoa(to->sin_addr), ntohs(to->sin_port));
|
||||
return strdup(tmp);
|
||||
--- net-snmp-5.3.1/include/net-snmp/library/snmp_transport.h.orig 2005-09-15 15:46:58.000000000 +0200
|
||||
+++ net-snmp-5.3.1/include/net-snmp/library/snmp_transport.h 2007-05-02 17:21:30.000000000 +0200
|
||||
@@ -19,6 +19,7 @@
|
||||
#define NETSNMP_TRANSPORT_FLAG_STREAM 0x01
|
||||
#define NETSNMP_TRANSPORT_FLAG_LISTEN 0x02
|
||||
#define NETSNMP_TRANSPORT_FLAG_TUNNELED 0x04
|
||||
+#define NETSNMP_TRANSPORT_FLAG_HOSTNAME 0x80 /* for fmtaddr hook */
|
||||
|
||||
/* The standard SNMP domains. */
|
||||
|
12
net-snmp-5.4-udp-endpoint.patch
Normal file
12
net-snmp-5.4-udp-endpoint.patch
Normal file
@ -0,0 +1,12 @@
|
||||
Already fixed upstream, should appear in 5.4.1
|
||||
--- net-snmp-5.4/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c.orig 2006-09-19 05:26:57.000000000 +0200
|
||||
+++ net-snmp-5.4/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c 2007-05-03 13:21:55.000000000 +0200
|
||||
@@ -194,7 +194,7 @@
|
||||
offset, line_info->start));
|
||||
return PMLP_RC_MEMORY_UNUSED;
|
||||
}
|
||||
- ep->loc_addr_len = offset;
|
||||
+ ep->rmt_addr_len = offset;
|
||||
ptr += (offset * 2);
|
||||
++ptr; /* skip ':' */
|
||||
|
@ -38,6 +38,10 @@ Patch13: net-snmp-5.4-ethtool-config.patch
|
||||
Patch14: net-snmp-5.4-free.patch
|
||||
Patch15: net-snmp-5.4-strange_libpath.patch
|
||||
Patch16: net-snmp-5.4-snmpassert.patch
|
||||
Patch17: net-snmp-5.4-hostname.patch
|
||||
Patch18: net-snmp-5.4-udp-endpoint.patch
|
||||
Patch19: net-snmp-5.3.1-shared-ip.patch
|
||||
Patch20: net-snmp-5.3.1-mib-option.patch
|
||||
|
||||
Requires(pre): /sbin/chkconfig
|
||||
Requires(post): /sbin/chkconfig
|
||||
@ -155,6 +159,11 @@ and applications.
|
||||
%patch15 -p1 -b .strange_libpath
|
||||
%patch16 -p1 -b .verboselog
|
||||
|
||||
%patch17 -p1 -b .hostname
|
||||
%patch18 -p1 -b .udp-endpoint
|
||||
%patch19 -p1 -b .shared-ip
|
||||
%patch20 -p1 -b .mib-option
|
||||
|
||||
# Do this patch with a perl hack...
|
||||
perl -pi -e "s|'\\\$install_libdir'|'%{_libdir}'|" ltmain.sh
|
||||
|
||||
@ -358,6 +367,11 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%{_libdir}/lib*.so.*
|
||||
|
||||
%changelog
|
||||
* Thu May 3 2007 Jan Safranek <jsafrane@redhat.com>
|
||||
- fix snmptrapd hostname logging (#238587)
|
||||
- fix udpEndpointProcess remote IP address (#236551)
|
||||
- fix -M option of net-snmp-utils (#244784)
|
||||
|
||||
* Mon Mar 12 2007 Radek Vokál <rvokal@redhat.com> - 1:5.4-13
|
||||
- fix overly verbose log message (#221911)
|
||||
- few minor tweaks for review - still not perfect
|
||||
|
Loading…
Reference in New Issue
Block a user