
Fix the bad values returned for the 64-bit byte counters.

--- lvs.c.orig	2006-01-02 14:31:54.000000000 +0000
+++ lvs.c	2008-10-03 18:43:48.000000000 +0000
@@ -131,6 +131,17 @@
 	}
 }
 
+/** set a counter64 snmp response field from a __u64 value
+
+**/
+static
+void netsnmp_set_var_counter64_value(netsnmp_variable_list *var, __u64 *val){
+	struct counter64 val64;
+	val64.high = *val >> 32;
+	val64.low = *val & 0xffffffff;
+	snmp_set_var_typed_value(var, ASN_COUNTER64, (u_char *)&val64, sizeof(val64));
+}
+
 /** returns the first data point within the lvsServiceTable table data.
 
     Set the my_loop_context variable to the first data point structure
@@ -271,10 +282,10 @@
 				snmp_set_var_typed_value(var, ASN_COUNTER, (u_char *) &stats->outpkts, sizeof(stats->outpkts));
 				break;
 			    case COLUMN_LVSSERVICESTATSINBYTES:
-				snmp_set_var_typed_value(var, ASN_COUNTER64, (u_char *) &stats->inbytes, sizeof(stats->inbytes));
+				netsnmp_set_var_counter64_value(var, &stats->inbytes);
 				break;
 			    case COLUMN_LVSSERVICESTATSOUTBYTES:
-				snmp_set_var_typed_value(var, ASN_COUNTER64, (u_char *)&stats->outbytes, sizeof(stats->outbytes));
+				netsnmp_set_var_counter64_value(var, &stats->outbytes);
 				break;
 			    case COLUMN_LVSSERVICERATECPS:
 				snmp_set_var_typed_value(var, ASN_GAUGE, (u_char *) &stats->cps, sizeof(stats->cps));
@@ -434,10 +445,10 @@
 				snmp_set_var_typed_value(var, ASN_COUNTER, (u_char *) &stats->outpkts, sizeof(stats->outpkts) );
 				break;
 			    case COLUMN_LVSREALSTATSINBYTES:
-				snmp_set_var_typed_value(var, ASN_COUNTER64, (u_char *) &stats->inbytes, sizeof(stats->inbytes));
+				netsnmp_set_var_counter64_value(var, &stats->inbytes);
 				break;
 			    case COLUMN_LVSREALSTATSOUTBYTES:
-				snmp_set_var_typed_value(var, ASN_COUNTER64, (u_char *) &stats->outbytes, sizeof(stats->outbytes));
+				netsnmp_set_var_counter64_value(var, &stats->outbytes);
 				break;
 			    case COLUMN_LVSREALRATECPS:
 				snmp_set_var_typed_value(var, ASN_GAUGE, (u_char *) &stats->cps, sizeof(stats->cps));
