From c5cab4e719df9413e997e99b74177d0b12213802 Mon Sep 17 00:00:00 2001 From: Dirk Ziegelmeier Date: Fri, 1 Jan 2016 22:59:00 +0100 Subject: [PATCH] SNMP RAW API: Listen on IPV6 UDP port, too --- src/apps/snmp/snmp_raw.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/apps/snmp/snmp_raw.c b/src/apps/snmp/snmp_raw.c index 62be2a35..69165137 100644 --- a/src/apps/snmp/snmp_raw.c +++ b/src/apps/snmp/snmp_raw.c @@ -39,9 +39,6 @@ #include "lwip/udp.h" #include "snmp_msg.h" -/* UDP Protocol Control Block */ -static struct udp_pcb *snmp_pcb; - /* lwIP UDP receive callback function */ static void snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, u16_t port) @@ -67,15 +64,32 @@ snmp_sendto(void *handle, struct pbuf *p, const ip_addr_t *dst, u16_t port) void snmp_init(void) { - snmp_pcb = udp_new(); +#if LWIP_IPV4 + struct udp_pcb *snmp_pcb_4 = udp_new(); +#endif /* LWIP_IPV4 */ +#if LWIP_IPV6 + struct udp_pcb *snmp_pcb_6 = udp_new_ip6(); +#endif /* LWIP_IPV6 */ - if (snmp_pcb != NULL) { +#if LWIP_IPV4 + if (snmp_pcb_4 != NULL) { /*trap_msg.handle = snmp_pcb;*/ /*trap_msg.lip = &snmp_pcb->local_ip;*/ - udp_recv(snmp_pcb, snmp_recv, (void *)SNMP_IN_PORT); - udp_bind(snmp_pcb, IP_ADDR_ANY, SNMP_IN_PORT); + udp_recv(snmp_pcb_4, snmp_recv, (void *)SNMP_IN_PORT); + udp_bind(snmp_pcb_4, IP_ADDR_ANY, SNMP_IN_PORT); } +#endif /* LWIP_IPV4 */ + +#if LWIP_IPV6 + if (snmp_pcb_6 != NULL) { + /*trap_msg.handle = snmp_pcb;*/ + /*trap_msg.lip = &snmp_pcb->local_ip;*/ + + udp_recv(snmp_pcb_6, snmp_recv, (void *)SNMP_IN_PORT); + udp_bind(snmp_pcb_6, IP6_ADDR_ANY, SNMP_IN_PORT); + } +#endif /* LWIP_IPV6 */ } #endif /* LWIP_SNMP && SNMP_USE_RAW */