如何从 net-snmp 创建 snmp 代理

发布于 2024-12-11 03:40:14 字数 116 浏览 1 评论 0原文

我想使用 net-snmp 为 PowerPC 板实现 SNMP 代理。 之前它是使用 SMASH 实现的。 SMASH 有一个解析器 它可以读取 MIB 并生成 C 代码(空白函数实现)

我如何开始?

I want to implement SNMP-agent for PowerPC board using net-snmp.
Previously it was implemented using SMASH. SMASH has a parser
which could read MIB and generate C code (blank function imlementation)

How do I get started?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

杀手六號 2024-12-18 03:40:14

尝试从 net- 查看 mib2c 工具 - SNMP。它将从 MIB 生成 snmp 代理 C 代码。然后您只需满足 SNMP 请求的返回值。响应 SNMP 请求(get、set、get-next)的骨架是通过生成自动完成的。

Try to look at mib2c tool from net-snmp. It will generate the snmp agent C code from the MIB. Then you have to only fulfill the return values to SNMP requests. Skeleton of responding to SNMP requests (get, set, get-next) are automatically done by generating.

小嗷兮 2024-12-18 03:40:14

我对此采取了不同的方法。为了更好地与我的 C++ 生态系统集成,并获得更大的灵活性(特别是在规模上),我:

  • 使用预构建步骤将 snmptranslate 的结果(即 MIB 树)解析为一堆用于代码中的 C++ 映射和其他容器
  • 借用了 Net-SNMP 的传输和 PDU 构建功能
  • 但在收到后我自己请求服务,使用我的 C++ 映射和我的应用程序已经可用的数据

这使得通知生成变得微不足道(我只需要一些生成 varbind 的变体类型,一些 PDU 构造,然后将其余的留给 Net-SNMP 的传输功能),尽管对于请求,我必须自己实现表遍历(以及 GetNext/ GetBulk/Set并不是微不足道的,除非您避免所有表,或者至少避免复合索引表。

结果是一个快速、健壮且可扩展的 SNMP 代理,具有易于维护和扩展的富有表现力的代码。

您并没有说您正在使用 C++,但这确实让您了解如何挑选 Net-SNMP 功能,而不必购买其整个生态系统。

请注意,我不知道 SNMPv3 如何适合这个模型;在这成为我的问题之前,我聪明地离开了公司。 :)

I took a different approach to this. In order to better integrate with my C++ ecosystem, and to obtain greater flexibility (particularly at scale), I:

  • Had a pre-build step parse the result of snmptranslate (that is, the MIB tree) into a bunch of C++ maps and other containers for use in code
  • Borrowed Net-SNMP's transport and PDU building functions
  • But serviced requests myself upon receipt, using my C++ maps and the data already available to my application

This made notification generation trivial (I just needed some variant types to generate varbinds, a bit of PDU construction and then left the rest to Net-SNMP's transport feature), although for requests I did then have to implement table walking myself (and GetNext/GetBulk/Set are not trivial unless you avoid all tables, or at least avoid composite-index tables).

The result is a fast, robust and scalable SNMP agent with expressive code that's easy to maintain and to extend.

You don't say you're using C++, but this does give an idea of how you can cherry-pick Net-SNMP functionality without necessarily buying into its entire ecosystem.

Do note that I have no idea how SNMPv3 would fit into this model; I cleverly left the company before it became my problem. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文