diff --git a/doc/snmp_agent.txt b/doc/snmp_agent.txt index 2c426368..8b08f11e 100644 --- a/doc/snmp_agent.txt +++ b/doc/snmp_agent.txt @@ -1,19 +1,23 @@ -SNMPv1 agent for lwIP [preliminairy] +SNMPv1 agent for lwIP Author: Christiaan Simons This is a brief introduction how to use and configure the SNMP agent. Note the agent uses the raw-API UDP interface so you may also want to -read rawapi.txt to gain a better understanding of the SNMP messages handling. +read rawapi.txt to gain a better understanding of the SNMP message handling. -0 Agent capabilities +0 Agent Capabilities ==================== SNMPv1 per RFC1157 This is an old(er) standard but is still widely supported. For SNMPv2c and v3 have a greater complexity and need many more lines of code. IMHO this breaks the idea of "lightweight IP". - Note the S in SNMP stands for "Simple" and is actually a bad joke. + + Note the S in SNMP stands for "Simple". Note that "Simple" is + relative. SNMP is simple compared to the complex ISO network + management protocols CMIP (Common Management Information Protocol) + and CMOT (CMip Over Tcp). MIB II per RFC1213 The standard lwIP stack management information base. @@ -47,7 +51,7 @@ Large SNMP message support PBUF_POOL_SIZE and IP_REASS_BUFSIZE are set to match your local requirement. -1 Building the agent +1 Building the Agent ==================== First of all you'll need to add the following define @@ -61,7 +65,7 @@ and some snmp headers in lwip/src/include/lwip to your makefile. Note you'll might need to adapt you network driver to update the mib2 variables for your interface. -2 Running the agent +2 Running the Agent =================== The following function calls must be made in your program to @@ -121,11 +125,14 @@ Note the object identifiers for thes MIB-2 and your private MIB tree must be kept in sorted ascending (lexicographical) order. This to ensure correct getnext operation. +An example for a private MIB is part of the "minimal Unix" project: +contrib/ports/unix/proj/minimal/lwip_prvmib.c + The next chapter gives a more detailed description of the MIB-2 tree and the optional private MIB. -4 Agent internals -================= +4 The Gory Details +================== 4.0 Object identifiers and the MIB tree. @@ -161,3 +168,5 @@ The index part is handled by functions which in turn use dynamically allocated index trees from RAM. These trees are updated by e.g. the etharp code when new entries are made or removed form the ARP cache. + +/** @todo more gory details */ diff --git a/src/core/snmp/asn1_enc.c b/src/core/snmp/asn1_enc.c index 11aeea00..b67ab21e 100644 --- a/src/core/snmp/asn1_enc.c +++ b/src/core/snmp/asn1_enc.c @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] Abstract Syntax Notation One (ISO 8824, 8825) encoding + * Abstract Syntax Notation One (ISO 8824, 8825) encoding * * @todo not optimised (yet), favor correctness over speed, favor speed over size */ @@ -207,9 +207,6 @@ snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type) * @param ofs points to the offset within the pbuf chain * @param length is the host order length to be encoded * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - * - * @todo also add octets_used instead of compares?? - * @todo encode "type" in this function as well?? */ err_t snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length) diff --git a/src/core/snmp/mib2.c b/src/core/snmp/mib2.c index 66413329..a9adfe0b 100644 --- a/src/core/snmp/mib2.c +++ b/src/core/snmp/mib2.c @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] Management Information Base II (RFC1213) objects and functions. + * Management Information Base II (RFC1213) objects and functions. * * @note the object identifiers for this MIB-2 and private MIB tree * must be kept in sorted ascending order. This to ensure correct getnext operation. @@ -2586,10 +2586,6 @@ atentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) } } -/** - * @todo the etharp_find_addr could be a lot smarter - * if our arp index tree provided pointers or index to the requested item - */ static void atentry_get_value(struct obj_def *od, u16_t len, void *value) { diff --git a/src/core/snmp/mib_structs.c b/src/core/snmp/mib_structs.c index 7f57d820..c93434c2 100644 --- a/src/core/snmp/mib_structs.c +++ b/src/core/snmp/mib_structs.c @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] MIB tree access/construction functions. + * MIB tree access/construction functions. */ /* diff --git a/src/core/snmp/msg_in.c b/src/core/snmp/msg_in.c index 88ce2069..5c5ad4d2 100644 --- a/src/core/snmp/msg_in.c +++ b/src/core/snmp/msg_in.c @@ -1,9 +1,6 @@ /** * @file - * [EXPERIMENTAL] SNMP input message processing (RFC1157). - * - * EXPERIMENTAL code, this is not how the agent should respond. - * This is for test purposes only, DO NOT USE THIS CODE IN REAL WORLD!! + * SNMP input message processing (RFC1157). */ /* diff --git a/src/core/snmp/msg_out.c b/src/core/snmp/msg_out.c index de63169a..95bd7773 100644 --- a/src/core/snmp/msg_out.c +++ b/src/core/snmp/msg_out.c @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] SNMP output message processing (RFC1157). + * SNMP output message processing (RFC1157). * * Output responses and traps are build in two passes: * diff --git a/src/include/lwip/snmp_asn1.h b/src/include/lwip/snmp_asn1.h index 3df01b14..c1df94a9 100644 --- a/src/include/lwip/snmp_asn1.h +++ b/src/include/lwip/snmp_asn1.h @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] Abstract Syntax Notation One (ISO 8824, 8825) codec. + * Abstract Syntax Notation One (ISO 8824, 8825) codec. */ /* diff --git a/src/include/lwip/snmp_msg.h b/src/include/lwip/snmp_msg.h index 74dc0edf..d1d0da04 100644 --- a/src/include/lwip/snmp_msg.h +++ b/src/include/lwip/snmp_msg.h @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] SNMP Agent message handling structures. + * SNMP Agent message handling structures. */ /* @@ -203,9 +203,6 @@ struct snmp_trap_header_lengths #define SNMP_COMMUNITY_STR_LEN 64 struct snmp_msg_pstat { -#if 0 - struct snmp_msg_pstat *next; -#endif /* lwIP local port (161) binding */ struct udp_pcb *pcb; /* source IP address */ @@ -241,17 +238,10 @@ struct snmp_msg_pstat struct snmp_varbind_root outvb; /* output response lengths used in ASN encoding */ struct snmp_resp_header_lengths rhl; -#if SNMP_PRIVATE_MIB - /* private MIB event info */ - struct private_msg pm; -#endif }; struct snmp_msg_trap { -#if 0 - struct snmp_msg_trap *next; -#endif /* lwIP local port (161) binding */ struct udp_pcb *pcb; /* destination IP address in network order */ diff --git a/src/include/lwip/snmp_structs.h b/src/include/lwip/snmp_structs.h index 42a63a18..f4854664 100644 --- a/src/include/lwip/snmp_structs.h +++ b/src/include/lwip/snmp_structs.h @@ -1,6 +1,6 @@ /** * @file - * [EXPERIMENTAL] Generic MIB tree structures. + * Generic MIB tree structures. * * @todo namespace prefixes */