如何确定请求的 OID 是否在具有 net-snmp API 的表中?
How to figure out if requested OID is in Table with net-snmp API?
我正在研究Windows SNMP代理扩展的解决方案。同时,我使用Net-SNMP从MIB文件读取和加载OID。将旧的SNMP对象与Net-SNMP对象匹配是一项艰苦的工作,C++我做得很认真。现在,在 Set 上出现了很多问题,Get-Next 对 Table 对象的请求。
重要的是现在如何设置引用表条目或字段的 OID。
如何检查请求的获取或设置请求的 OID 是否是 MIB 中具有 Net-SNMP API 的表的字段或条目?
这是我为找出表元素而准备的一些函数:
如果 Oid 是表的字段:
BOOL IsInTable(AsnObjectIdentifier pAsnOid) {
char * szOidTemp;
char * pch;
oid root[MAX_OID_LEN];
size_t rootlen;
SnmpMgrOidToStr(&pAsnOid, &szOidTemp);
memset(root, 0, sizeof(root));
rootlen = MAX_OID_LEN;
if (snmp_parse_oid(szOidTemp, root, &rootlen) == NULL) {
snmp_perror(szOidTemp);
//exit(1);
return false;
}
struct tree *tbl = NULL;
tbl = get_tree(root, rootlen, get_tree_head());
if (tbl) {
if (tbl->parent && strstr(strlwr(tbl->parent->label), "entry") > 0) {
return true;
}
}
return false;
}
如果 Oid 是表的根:
BOOL IsTableRoot(AsnObjectIdentifier pAsnOid) {
char * szOidTemp;
char * pch;
oid root[MAX_OID_LEN];
size_t rootlen;
SnmpMgrOidToStr(&pAsnOid, &szOidTemp);
memset(root, 0, sizeof(root));
rootlen = MAX_OID_LEN;
if (snmp_parse_oid(szOidTemp, root, &rootlen) == NULL) {
snmp_perror(szOidTemp);
//exit(1);
return false;
}
struct tree *tbl = NULL;
tbl = get_tree(root, rootlen, get_tree_head());
if (tbl) {
if (strstr(strlwr(tbl->label), "table") > 0) {
return true;
}
}
return false;
}
如果 Oid 是表的条目或第一个子项:
BOOL IsTableEntry(AsnObjectIdentifier pAsnOid) {
char * szOidTemp;
char * pch;
oid root[MAX_OID_LEN];
size_t rootlen;
SnmpMgrOidToStr(&pAsnOid, &szOidTemp);
memset(root, 0, sizeof(root));
rootlen = MAX_OID_LEN;
if (snmp_parse_oid(szOidTemp, root, &rootlen) == NULL) {
snmp_perror(szOidTemp);
//exit(1);
return false;
}
struct tree *tbl = NULL;
tbl = get_tree(root, rootlen, get_tree_head());
if (tbl) {
if (strstr(strlwr(tbl->label), "entry") > 0) {
return true;
}
}
return false;
}
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 如何确定请求的 OID 是否在具有 net-snmp API 的表中?
- 使用Net SNMP的snmpset的多个值
- 如何使用C中的Net SNMP发送V2陷阱
- 如何在VB.NET或C#中使用C++API
- 为什么我想使用托管(C#和.NET)或本机代码进行Windows API开发
- 使用.net C#的SNMP项目发生封送错误
- net-snmp没有正确更改auth和priva协议
- 带有net-snmp的C++Qt5在构建后崩溃
- 使用带有.NET API的非托管C++库
- 如何在net-snmp中打印整数和Counter32值
- . net调试API SetManagedHandler返回E_NOINTERFACE
- 如何在VB.net中使用Windows电源管理API
- 有c++实现的Node.js . Net API吗?
- Net-SNMP -编译一个新的MIB模块,不编译整个SNMP Agent
- 从ASP调用后端.net dll.. NET Web api
- 在.net中使用Windows API函数