diff -ur --exclude=libipvs net-snmp-lvs-module-0.0.4/lvs.c net-snmp-lvs-module-0.0.4-leak_fix/lvs.c --- net-snmp-lvs-module-0.0.4/lvs.c 2006-01-02 14:31:54.000000000 +0000 +++ net-snmp-lvs-module-0.0.4-leak_fix/lvs.c 2010-05-19 15:15:14.000000000 +0100 @@ -243,7 +258,12 @@ snmp_set_var_typed_value(var, ASN_INTEGER, (u_char*)&tmp, sizeof(int)); break; case COLUMN_LVSSERVICEADDR: - snmp_set_var_typed_value(var, ASN_IPADDRESS, (u_char*) &entrytable->addr, sizeof(int)); + if (entrytable->af == AF_INET) { + snmp_set_var_typed_value(var, ASN_IPADDRESS, (u_char*) &entrytable->addr.in, sizeof(entrytable->addr.in)); + } + else if (entrytable->af == AF_INET6) { + snmp_set_var_typed_value(var, ASN_IPADDRESS, (u_char*) &entrytable->addr.in6, sizeof(entrytable->addr.in6)); + } break; case COLUMN_LVSSERVICEPORT: tmp = htons(entrytable->port); @@ -408,7 +428,12 @@ snmp_set_var_typed_value(var, ASN_INTEGER, (u_char*) &mydest->dst_index, sizeof(mydest->dst_index)); break; case COLUMN_LVSREALSERVERADDR: - snmp_set_var_typed_value(var, ASN_IPADDRESS, (u_char*) &destentry->addr, sizeof(destentry->addr)); + if (destentry->af == AF_INET) { + snmp_set_var_typed_value(var, ASN_IPADDRESS, (u_char*) &destentry->addr.in, sizeof(destentry->addr.in)); + } + else if (destentry->af == AF_INET6) { + snmp_set_var_typed_value(var, ASN_IPADDRESS, (u_char*) &destentry->addr.in6, sizeof(destentry->addr.in6)); + } break; case COLUMN_LVSREALSERVERPORT: tmp = htons(destentry->port);