我试图使用net-snmp C api为OID设置一个值,这是我使用的代码片段:
char *ltmp = "description";
char *buff = malloc(sizeof(char)*50);
strcpy(buff,ltmp);
if (!snmp_parse_oid(".1.3.6.1.4.1.2162.1.2.2.1.0", anOID, &anOID_len)) {
snmp_perror(".1.3.6.1.4.1.2162.1.2.2.1.0");
SOCK_CLEANUP;
exit(1);
} else if (snmp_pdu_add_variable(pdu, anOID, anOID_len,'s',buff, (int)strlen(buff))) {
snmp_perror(".1.3.6.1.4.1.2162.1.2.2.1.0");
} 运行此代码时,它将引发以下错误
类型切换中的内部误差 分组错误 原因:(badValue)给出的值类型或长度错误。
我在这里做错什么了?
发布于 2016-04-12 17:03:57
您应该为变量类型使用一个预定义的常量;在本例中,是ASN_OCTET_STR而不是s。
来自asn1.h
#define ASN_BOOLEAN ((u_char)0x01)
#define ASN_INTEGER ((u_char)0x02)
#define ASN_BIT_STR ((u_char)0x03)
#define ASN_OCTET_STR ((u_char)0x04)
#define ASN_NULL ((u_char)0x05)
#define ASN_OBJECT_ID ((u_char)0x06)
#define ASN_SEQUENCE ((u_char)0x10)
#define ASN_SET ((u_char)0x11)https://stackoverflow.com/questions/36286263
复制相似问题