我正在使用net-snmp处理SNMP代理并为表中保存的数据开发MIB。
我正在考虑使用基于大约15个十进制数字的字符串的表键。
将其作为OCTET STRING索引实施是否合理?
即使我每个八位字节编码2个数字,也只有8个八位字节。
使用OCTET STRING索引,每个八位字节都将作为节点添加到OID。
我知道我可以将其转换为整数,但十进制数字可能有前导零。
对此有任何意见或建议吗?
提前致谢。
答案 0 :(得分:3)
你可以把零写入OCTET STRINGS,所以是的,你可以这样做。 OCTET STRINGS可以包含二进制数据,并且只是编码到OID中。 Net-SNMP API不仅接受指向char *的指针,还接受返回数据的长度。这是因为在OCTET STRINGS中编码空值是完全合法的。
在OID方面,如果您的字符串由字符A,B 0,D组成,则通常将其编码为:
blah.blah.4.65.66.0.67
其中4是字符串的长度。如果OCTET STRING被标记为IMPLICIT,则4将被省略。
您将十进制数字编码到字符串中,因此您的值将更接近0x15,0x04,0x42等等。这些也很好(您正在构建二进制字符串)。
你是否应该这样做,或者你是否应该将整数本身放在字符串中,这是有争议的,但取决于你正在做什么,以及环境的带宽限制等。