소스 검색

Fix another 64-bit-ism

This was inspired by a patch from Oliver Hitz <ohitz@users.sf.net>.

http://sf.net/tracker/?func=detail&aid=2779880&group_id=22615&atid=375631
Richard Laager 15 년 전
부모
커밋
23523c1bce
1개의 변경된 파일18개의 추가작업 그리고 11개의 파일을 삭제
  1. 18 11
      src/docsis_snmp.c

+ 18 - 11
src/docsis_snmp.c

@@ -42,6 +42,8 @@ encode_vbind (char *oid_string, char oid_asntype, union t_val *value,
   struct range_list *rp;
   struct range_list *rp;
   long len=0;
   long len=0;
   int rv;
   int rv;
+  long longval;
+  unsigned long ulongval;
 
 
   memset (buf, 0, SPRINT_MAX_LEN);
   memset (buf, 0, SPRINT_MAX_LEN);
   if (!get_node (oid_string, var_name, &name_len))
   if (!get_node (oid_string, var_name, &name_len))
@@ -98,56 +100,61 @@ encode_vbind (char *oid_string, char oid_asntype, union t_val *value,
   switch (oid_asntype)
   switch (oid_asntype)
     {
     {
     case 'i':
     case 'i':
+      longval = value->intval;
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
 				    var_name,
 				    var_name,
 				    &name_len,
 				    &name_len,
 				    ASN_INTEGER,
 				    ASN_INTEGER,
-				    sizeof (int),
-				    (unsigned char *) &value->intval,
+				    sizeof (long),
+				    (unsigned char *) &longval,
 				    &out_size);
 				    &out_size);
       return data_ptr - out_buffer;
       return data_ptr - out_buffer;
       break;
       break;
       ;;
       ;;
     case 'g':
     case 'g':
+      ulongval = value->intval;
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
 				    var_name,
 				    var_name,
 				    &name_len,
 				    &name_len,
 				    ASN_GAUGE,
 				    ASN_GAUGE,
-				    sizeof (int),
-				    (unsigned char *) &value->intval,
+				    sizeof (unsigned long),
+				    (unsigned char *) &ulongval,
 				    &out_size);
 				    &out_size);
       return data_ptr - out_buffer;
       return data_ptr - out_buffer;
       break;
       break;
       ;;
       ;;
     case 'c':
     case 'c':
+      ulongval = value->intval;
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
 				    var_name,
 				    var_name,
 				    &name_len,
 				    &name_len,
 				    ASN_COUNTER,
 				    ASN_COUNTER,
-				    sizeof (int),
-				    (unsigned char *) &value->intval,
+				    sizeof (unsigned long),
+				    (unsigned char *) &ulongval,
 				    &out_size);
 				    &out_size);
       return data_ptr - out_buffer;
       return data_ptr - out_buffer;
       break;
       break;
       ;;
       ;;
     case 'u':
     case 'u':
+      ulongval = value->intval;
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
 				    var_name,
 				    var_name,
 				    &name_len,
 				    &name_len,
 				    ASN_GAUGE,
 				    ASN_GAUGE,
-				    sizeof (int),
-				    (unsigned char *) &value->intval,
+				    sizeof (unsigned long),
+				    (unsigned char *) &ulongval,
 				    &out_size);
 				    &out_size);
       return data_ptr - out_buffer;
       return data_ptr - out_buffer;
       break;
       break;
       ;;
       ;;
     case 't':
     case 't':
+      ulongval = value->intval;
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
       data_ptr = _docsis_snmp_build_var_op (out_buffer,
                                     var_name,
                                     var_name,
                                     &name_len,
                                     &name_len,
                                     ASN_TIMETICKS,
                                     ASN_TIMETICKS,
-                                    sizeof (int),
-                                    (unsigned char *) &value->intval,
+                                    sizeof (unsigned long),
+                                    (unsigned char *) &ulongval,
                                     &out_size);
                                     &out_size);
       return data_ptr - out_buffer;
       return data_ptr - out_buffer;
       break;
       break;
@@ -235,7 +242,7 @@ encode_vbind (char *oid_string, char oid_asntype, union t_val *value,
 				    var_name,
 				    var_name,
 				    &name_len,
 				    &name_len,
 				    ASN_IPADDRESS,
 				    ASN_IPADDRESS,
-				    sizeof (int),
+				    sizeof (struct in_addr),
 				    (unsigned char *) &ltmp, &out_size);
 				    (unsigned char *) &ltmp, &out_size);
       return data_ptr - out_buffer;
       return data_ptr - out_buffer;
       break;
       break;