gpt4 book ai didi

c - SNMP代理: Could mib2c generate code for InetAddress or String type (ie something not an integer type)

转载 作者:行者123 更新时间:2023-11-30 14:54:01 25 4
gpt4 key购买 nike

我能够将 95% 的专用 MIB 转换为 C 代码,并使其在子代理中运行,如本 Net-SNMP tutorial 的最后部分所述。

为此,我自然会使用 mib2c.mfd.conf (我刚刚读到 mfd 代表 Mib For Dummies ... 一切都已说明...)

mib2c -I -c mib2c.mfd.conf my_mib_node

它生成了一个很长的 .c 文件,其中包含几乎所有 oid,如下所示。

几乎没有为 VideoInetAddr OID 生成任何行

//ABSTRACT OF SOURCE FILE GENERATED BY MIB2C
//...

long VideoFormat = 0; /* XXX: set default value */
// <<<=== NOTHING GENERATED HERE FOR VideoInetAddr OF TYPE INETADDRESS
// WHEREAS OTHER INTEGERS ARE NORMALLY PRESENT
long VideoInetPort = 0; /* XXX: set default value */
//...

void init_my_mib_node(void)
{
//...

const oid VideoFormat_oid[] = { 1,3,6,1,4,1,a,b,c,d,e };
static netsnmp_watcher_info VideoFormat_winfo;
// <<<=== NO OID GENERATED for VideoInetAddr OF TYPE INETADDRESS
// WHEREAS OTHER OIDs ARE NORMALLY GENERATED
static netsnmp_watcher_info VideoInetAddr_winfo; //We have the winfo after all
const oid VideoInetPort_oid[] = { 1,3,6,1,4,1,a,b,c,d,g };
static netsnmp_watcher_info VideoInetPort_winfo;

DEBUGMSGTL(("my_mib_node",
"Initializing VideoFormat scalar integer. Default value = %d\n",
VideoFormat));

reg = netsnmp_create_handler_registration(
"VideoFormat", NULL,
VideoFormat_oid, OID_LENGTH(VideoFormat_oid),
HANDLER_CAN_RWRITE);

netsnmp_init_watcher_info(&VideoFormat_winfo, &VideoFormat,
sizeof(long),ASN_INTEGER, WATCHER_FIXED_SIZE);

if (netsnmp_register_watched_scalar( reg, &VideoFormat_winfo ) < 0 ) {
snmp_log( LOG_ERR, "Failed to register watched VideoFormat" );
//...
}

这工作正常,需要 5 分钟(无需编写代码,只需调用 init() 函数),我能够 GET 和 SET 所有...整数...

未生成 InetAddress 类型的某些 oid,字符串也未生成

问题

  • 是否有一个 mib conf 文件能够为每种类型生成代码

我尝试了 mib2c.old-api.conf,它也为非整数 oid 生成代码,但我发现它不太方便。还有更多样板代码需要编写。

最佳答案

是的,mib2c 可以生成 IP 地址代码。 我不能说 mfd 可以做到这一点,但是,可以肯定的是,某些 mib2c.iterate.conf (用于表)可以做到这一点。

SNMP中的IP类型是ASN_IPADDRESS,在C中用unint32_t表示。另外,您需要确保在代表 IP 的对象的 MIB 文件中具有“SYNTAX IpAddress”。

看一下: at the MIB file with IP objectimplementation in C

关于c - SNMP代理: Could mib2c generate code for InetAddress or String type (ie something not an integer type),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46951918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com