diff --git a/net-snmp-5.4.1-long-iface-names.patch b/net-snmp-5.4.1-long-iface-names.patch new file mode 100644 index 0000000..7a2ecee --- /dev/null +++ b/net-snmp-5.4.1-long-iface-names.patch @@ -0,0 +1,51 @@ +468045: Interface name too long: "ioctl 35123 returned -1" + +Source: upstream, svn rev. 16797 + +Support longer interface names. + +diff --git a/net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c b/net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c +index 51cde1b..72c1d2d 100644 +--- a/net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c ++++ b/net-snmp/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c +@@ -189,7 +189,8 @@ _load_v6(netsnmp_container *container, int idx_offset) + return -1; + #else + FILE *in; +- char line[80], addr[40], if_name[IFNAMSIZ]; ++ char line[80], addr[40]; ++ char if_name[IFNAMSIZ+1];/* +1 for '\0' because of the ugly sscanf below */ + u_char *buf; + int if_index, pfx_len, scope, flags, rc = 0; + size_t in_len, out_len; +@@ -229,7 +230,7 @@ _load_v6(netsnmp_container *container, int idx_offset) + * F: flags (see include/linux/rtnetlink.h, net/ipv6/addrconf.c) + * I: interface + */ +- rc = sscanf(line, "%39s %02x %02x %02x %02x %8s\n", ++ rc = sscanf(line, "%39s %02x %02x %02x %02x %" SNMP_MACRO_VAL_TO_STR(IFNAMSIZ) "s\n", + addr, &if_index, &pfx_len, &scope, &flags, if_name); + if( 6 != rc ) { + snmp_log(LOG_ERR, PROCFILE " data format error (%d!=6), line ==|%s|\n", +diff --git a/net-snmp/include/net-snmp/library/tools.h b/net-snmp/include/net-snmp/library/tools.h +index 7822855..e57d1ac 100644 +--- a/net-snmp/include/net-snmp/library/tools.h ++++ b/net-snmp/include/net-snmp/library/tools.h +@@ -88,6 +88,17 @@ extern "C" { + Computers the minimum of a and b. */ + #define SNMP_MIN(a,b) ((a) > (b) ? (b) : (a)) + ++/** @def SNMP_MACRO_VAL_TO_STR(s) ++ * Expands to string with value of the s. ++ * If s is macro, the resulting string is value of the macro. ++ * Example: ++ * #define TEST 1234 ++ * SNMP_MACRO_VAL_TO_STR(TEST) expands to "1234" ++ * SNMP_MACRO_VAL_TO_STR(TEST+1) expands to "1234+1" ++ */ ++#define SNMP_MACRO_VAL_TO_STR(s) SNMP_MACRO_VAL_TO_STR_PRIV(s) ++#define SNMP_MACRO_VAL_TO_STR_PRIV(s) #s ++ + #ifndef FALSE + #define FALSE 0 + #endif diff --git a/net-snmp.spec b/net-snmp.spec index dedbef0..0b07ceb 100644 --- a/net-snmp.spec +++ b/net-snmp.spec @@ -43,6 +43,7 @@ Patch17: net-snmp-5.4.1-xen-crash.patch Patch18: net-snmp-5.4.1-hmac-check.patch Patch19: net-snmp-5.4.1-perl-snprintf.patch Patch20: net-snmp-5.4.1-perl-set.patch +Patch21: net-snmp-5.4.1-long-iface-names.patch Requires(pre): chkconfig Requires(post): chkconfig @@ -177,6 +178,7 @@ and applications. %patch18 -p1 -b .hmac-check %patch19 -p3 -b .perl-snprintf %patch20 -p1 -b .perl-set +%patch21 -p2 -b .long-iface-names # Do this patch with a perl hack... perl -pi -e "s|'\\\$install_libdir'|'%{_libdir}'|" ltmain.sh @@ -395,6 +397,7 @@ rm -rf ${RPM_BUILD_ROOT} %changelog * Tue Jul 22 2008 Jan Safranek 5.4.1-19 - fix perl SNMP::Session::set (#452131) +- support interface names longer than 8 characters (#468045) * Tue Jun 10 2008 Jan Safranek 5.4.1-18 - explicitly require lm_sensor > 3 for build (#442718)