FAQ:Coding 01

From Net-SNMP Wiki
Jump to: navigation, search

How do I write C code to integrate with the agent?

There are three main methods for integrating external C code within the agent. The code can be compiled directly into the agent itself, it can be loaded dynamically while the agent is running, or it can be compiled into a separate application (a "subagent") which communicates with the main master agent. All three approaches have been touched on elsewhere within this FAQ.

As far as the module code is concerned, all three mechanisms use exactly the same module API. So a module developed for use directly within the agent, could also be included within a subagent, or loaded dynamically with no (or minimal) code changes needed.

Most of this section is concerned with more detailed aspects of developing such code - including the 'mib2c' tool, which can handle generating a basic code framework for implementing a given set of MIB objects.

  1. How do I write C code to integrate with the agent?
  2. How does the agent fetch the value of a MIB variable from the system?
  3. Mib2c complains about a missing "mib reference" - what does this mean?
  4. Mib2c complains about not having a "valid OID" - what does this mean?
  5. Why doesn't mib2c like the MIB file I'm giving it?
  6. Mib2c ignores my MIB and generates a pair of 'mib-2' code files. Why?
  7. What's the difference between the various mib2c configuration files?
  8. Which mib2c configuration file should I use?
  9. How can I have mib2c generate code for both scalars and tables?
  10. Are there any examples, or documentation for generating MIB modules?
  11. Where should I put the files produced by 'mib2c'?
  12. Why doesn't my new MIB module report anything?
  13. Why does the iterator call my get_{first,next} routines so often?
  14. How can I get the agent to generate a trap (or inform)?
  15. How can I get an AgentX sub-agent to generate a trap (or inform)?
  16. How can I get the agent to send an SNMPv1 (or SNMPv2c) trap?
  17. How can I get the agent to include varbinds with an SNMPv1 trap?
  18. How can I get the agent to send an SNMPv1 enterprise-specific trap?
  19. How can I get the agent to send an SNMPv3 trap (or inform)?
  20. Why does calling 'send_v2trap' generate an SNMPv1 trap (or vice versa)?
  21. How can I register a MIB module in a different (SNMPv3) context?