1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/snmp/snmp_iface.patch Wed Feb 08 20:07:00 2012 +0200 1.3 @@ -0,0 +1,149 @@ 1.4 +Index: agent/mibgroup/ip-mib/data_access/ipaddress_common.c 1.5 +--- agent/mibgroup/ip-mib/data_access/ipaddress_common.c.orig 2011-09-28 06:53:47.000000000 +0200 1.6 ++++ agent/mibgroup/ip-mib/data_access/ipaddress_common.c 2012-02-18 21:20:51.943118452 +0100 1.7 +@@ -452,6 +452,7 @@ 1.8 + { 1.9 + const netsnmp_ipaddress_entry *lh = (const netsnmp_ipaddress_entry *)lhs; 1.10 + const netsnmp_ipaddress_entry *rh = (const netsnmp_ipaddress_entry *)rhs; 1.11 ++ int rc; 1.12 + 1.13 + netsnmp_assert(NULL != lhs); 1.14 + netsnmp_assert(NULL != rhs); 1.15 +@@ -467,7 +468,19 @@ 1.16 + /* 1.17 + * length equal, compare address 1.18 + */ 1.19 +- return memcmp(lh->ia_address, rh->ia_address, lh->ia_address_len); 1.20 ++ rc = memcmp(lh->ia_address, rh->ia_address, lh->ia_address_len); 1.21 ++ if (rc) 1.22 ++ return rc; 1.23 ++ 1.24 ++ /* 1.25 ++ * address same, compare ifIndex 1.26 ++ */ 1.27 ++ if (lh->if_index < rh->if_index) 1.28 ++ return -1; 1.29 ++ else if (lh->if_index > rh->if_index) 1.30 ++ return 1; 1.31 ++ 1.32 ++ return 0; 1.33 + } 1.34 + 1.35 + #ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_COMMON_COPY_UTILITIES 1.36 +Index: agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h 1.37 +--- agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h.orig 2011-09-28 06:53:47.000000000 +0200 1.38 ++++ agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h 2012-02-18 21:20:51.939850024 +0100 1.39 +@@ -106,7 +106,9 @@ 1.40 + * simplistic map of address length to type 1.41 + */ 1.42 + #define INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV4 4 1.43 ++#define INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV4Z 5 1.44 + #define INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV6 16 1.45 ++#define INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV6Z 17 1.46 + 1.47 + 1.48 + /************************************************************* 1.49 +Index: agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c 1.50 +--- agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c.orig 2012-02-18 21:02:55.315118127 +0100 1.51 ++++ agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c 2012-02-18 21:20:51.933373869 +0100 1.52 +@@ -262,9 +262,10 @@ 1.53 + if ((NULL != rowreq_ctx) && 1.54 + (MFD_SUCCESS == 1.55 + ipAddressTable_indexes_set(rowreq_ctx, 1.56 +- ipaddress_entry->ia_address_len, 1.57 ++ ipaddress_entry->ia_address_len + 1, 1.58 + ipaddress_entry->ia_address, 1.59 +- ipaddress_entry->ia_address_len))) { 1.60 ++ ipaddress_entry->ia_address_len, 1.61 ++ ipaddress_entry->if_index))) { 1.62 + if (CONTAINER_INSERT(container, rowreq_ctx) < 0) { 1.63 + DEBUGMSGTL (("ipAddressTable:access","container insert failed for new entry\n")); 1.64 + ipAddressTable_release_rowreq_ctx(rowreq_ctx); 1.65 +Index: agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c 1.66 +--- agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c.orig 2011-09-28 06:53:47.000000000 +0200 1.67 ++++ agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c 2012-02-18 21:24:03.877503380 +0100 1.68 +@@ -355,10 +355,18 @@ 1.69 + *mib_ipAddressAddrType_val_ptr = INETADDRESSTYPE_IPV4; 1.70 + break; 1.71 + 1.72 ++ case INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV4Z: 1.73 ++ *mib_ipAddressAddrType_val_ptr = INETADDRESSTYPE_IPV4Z; 1.74 ++ break; 1.75 ++ 1.76 + case INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV6: 1.77 + *mib_ipAddressAddrType_val_ptr = INETADDRESSTYPE_IPV6; 1.78 + break; 1.79 + 1.80 ++ case INTERNAL_IPADDRESSTABLE_IPADDRESSADDRTYPE_IPV6Z: 1.81 ++ *mib_ipAddressAddrType_val_ptr = INETADDRESSTYPE_IPV6Z; 1.82 ++ break; 1.83 ++ 1.84 + default: 1.85 + snmp_log(LOG_ERR, "couldn't map value %ld for ipAddressAddrType\n", 1.86 + raw_ipAddressAddrType_val); 1.87 +@@ -389,8 +397,10 @@ 1.88 + ipAddressTable_indexes_set_tbl_idx(ipAddressTable_mib_index * tbl_idx, 1.89 + long ipAddressAddrType_val, 1.90 + u_char *ipAddressAddr_val_ptr, 1.91 +- size_t ipAddressAddr_val_ptr_len) 1.92 ++ size_t ipAddressAddr_val_ptr_len, 1.93 ++ long ipAddressAddr_ifIndex) 1.94 + { 1.95 ++ uint32_t zone = htonl(ipAddressAddr_ifIndex); 1.96 + DEBUGMSGTL(("verbose:ipAddressTable:ipAddressTable_indexes_set_tbl_idx", "called\n")); 1.97 + 1.98 + /* 1.99 +@@ -416,6 +426,11 @@ 1.100 + memcpy(tbl_idx->ipAddressAddr, ipAddressAddr_val_ptr, 1.101 + ipAddressAddr_val_ptr_len * sizeof(ipAddressAddr_val_ptr[0])); 1.102 + 1.103 ++ /** zone */ 1.104 ++ tbl_idx->ipAddressAddr_len += sizeof(zone); 1.105 ++ memcpy(&tbl_idx->ipAddressAddr[ipAddressAddr_val_ptr_len * 1.106 ++ sizeof(ipAddressAddr_val_ptr[0])], 1.107 ++ &zone, sizeof(zone)); 1.108 + 1.109 + return MFD_SUCCESS; 1.110 + } /* ipAddressTable_indexes_set_tbl_idx */ 1.111 +@@ -437,7 +452,8 @@ 1.112 + ipAddressTable_indexes_set(ipAddressTable_rowreq_ctx * rowreq_ctx, 1.113 + u_long ipAddressAddrType_val, 1.114 + u_char *ipAddressAddr_val_ptr, 1.115 +- size_t ipAddressAddr_val_ptr_len) 1.116 ++ size_t ipAddressAddr_val_ptr_len, 1.117 ++ long ipAddressAddr_ifIndex) 1.118 + { 1.119 + DEBUGMSGTL(("verbose:ipAddressTable:ipAddressTable_indexes_set", 1.120 + "called\n")); 1.121 +@@ -446,7 +462,8 @@ 1.122 + ipAddressTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx, 1.123 + ipAddressAddrType_val, 1.124 + ipAddressAddr_val_ptr, 1.125 +- ipAddressAddr_val_ptr_len)) 1.126 ++ ipAddressAddr_val_ptr_len, 1.127 ++ ipAddressAddr_ifIndex)) 1.128 + return MFD_ERROR; 1.129 + 1.130 + /* 1.131 +Index: agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h 1.132 +--- agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h.orig 2011-09-28 06:53:47.000000000 +0200 1.133 ++++ agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h 2012-02-18 21:25:15.751422674 +0100 1.134 +@@ -273,14 +273,16 @@ 1.135 + long ipAddressAddrType_val, 1.136 + u_char *ipAddressAddr_val_ptr, 1.137 + size_t 1.138 +- ipAddressAddr_val_ptr_len); 1.139 ++ ipAddressAddr_val_ptr_len, 1.140 ++ long ipAddressAddr_ifIndex); 1.141 + int ipAddressTable_indexes_set(ipAddressTable_rowreq_ctx * 1.142 + rowreq_ctx, 1.143 + u_long 1.144 + ipAddressAddrType_val, 1.145 + u_char *ipAddressAddr_val_ptr, 1.146 + size_t 1.147 +- ipAddressAddr_val_ptr_len); 1.148 ++ ipAddressAddr_val_ptr_len, 1.149 ++ long ipAddressAddr_ifIndex); 1.150 + 1.151 + 1.152 +