47#if LWIP_SNMP && SNMP_LWIP_MIB2
50#define SYNC_NODE_NAME(node_name) node_name ## _synced
51#define CREATE_LWIP_SYNC_NODE(oid, node_name) \
52 static const struct snmp_threadsync_node node_name ## _synced = SNMP_CREATE_THREAD_SYNC_NODE(oid, &node_name.node, &snmp_mib2_lwip_locks);
54#define SYNC_NODE_NAME(node_name) node_name
55#define CREATE_LWIP_SYNC_NODE(oid, node_name)
76 return sizeof(*sint_ptr);
79 return sizeof(*sint_ptr);
81 *uint_ptr = STATS_GET(
mib2.ipinreceives);
82 return sizeof(*uint_ptr);
84 *uint_ptr = STATS_GET(
mib2.ipinhdrerrors);
85 return sizeof(*uint_ptr);
87 *uint_ptr = STATS_GET(
mib2.ipinaddrerrors);
88 return sizeof(*uint_ptr);
90 *uint_ptr = STATS_GET(
mib2.ipforwdatagrams);
91 return sizeof(*uint_ptr);
93 *uint_ptr = STATS_GET(
mib2.ipinunknownprotos);
94 return sizeof(*uint_ptr);
96 *uint_ptr = STATS_GET(
mib2.ipindiscards);
97 return sizeof(*uint_ptr);
99 *uint_ptr = STATS_GET(
mib2.ipindelivers);
100 return sizeof(*uint_ptr);
102 *uint_ptr = STATS_GET(
mib2.ipoutrequests);
103 return sizeof(*uint_ptr);
105 *uint_ptr = STATS_GET(
mib2.ipoutdiscards);
106 return sizeof(*uint_ptr);
108 *uint_ptr = STATS_GET(
mib2.ipoutnoroutes);
109 return sizeof(*uint_ptr);
116 return sizeof(*sint_ptr);
118 *uint_ptr = STATS_GET(
mib2.ipreasmreqds);
119 return sizeof(*uint_ptr);
121 *uint_ptr = STATS_GET(
mib2.ipreasmoks);
122 return sizeof(*uint_ptr);
124 *uint_ptr = STATS_GET(
mib2.ipreasmfails);
125 return sizeof(*uint_ptr);
127 *uint_ptr = STATS_GET(
mib2.ipfragoks);
128 return sizeof(*uint_ptr);
130 *uint_ptr = STATS_GET(
mib2.ipfragfails);
131 return sizeof(*uint_ptr);
133 *uint_ptr = STATS_GET(
mib2.ipfragcreates);
134 return sizeof(*uint_ptr);
137 return sizeof(*uint_ptr);
159 snmp_err_t
ret = SNMP_ERR_WRONGVALUE;
173 ret = SNMP_ERR_NOERROR;
178 ret = SNMP_ERR_NOERROR;
196 return SNMP_ERR_NOERROR;
202static const struct snmp_oid_range ip_AddrTable_oid_ranges[] = {
227 value->u32 = IPADDR_BROADCAST & 1;
244 return SNMP_ERR_NOSUCHINSTANCE;
247 return SNMP_ERR_NOERROR;
257 if (!snmp_oid_in_range(row_oid, row_oid_len, ip_AddrTable_oid_ranges,
LWIP_ARRAYSIZE(ip_AddrTable_oid_ranges))) {
258 return SNMP_ERR_NOSUCHINSTANCE;
262 snmp_oid_to_ip4(&row_oid[0], &
ip);
266 if (ip4_addr_eq(&
ip, netif_ip4_addr(
netif))) {
273 return SNMP_ERR_NOSUCHINSTANCE;
277ip_AddrTable_get_next_cell_instance_and_value(
const u32_t *
column,
struct snmp_obj_id *row_oid,
union snmp_variant_value *
value,
u32_t *value_len)
280 struct snmp_next_oid_state
state;
284 snmp_next_oid_init(&
state, row_oid->id, row_oid->len, result_temp,
LWIP_ARRAYSIZE(ip_AddrTable_oid_ranges));
289 snmp_ip4_to_oid(netif_ip4_addr(
netif), &test_oid[0]);
296 if (
state.status == SNMP_NEXT_OID_STATUS_SUCCESS) {
297 snmp_oid_assign(row_oid,
state.next_oid,
state.next_oid_len);
303 return SNMP_ERR_NOSUCHINSTANCE;
309static const struct snmp_oid_range ip_RouteTable_oid_ranges[] = {
323 value->u32 = IP4_ADDR_ANY4->addr;
327 ip4_addr_get_network(&tmp, netif_ip4_addr(
netif), netif_ip4_netmask(
netif));
328 value->u32 = tmp.addr;
375 value->u32 = IP4_ADDR_ANY4->addr;
385 value->const_ptr = snmp_zero_dot_zero.id;
386 *value_len = snmp_zero_dot_zero.len *
sizeof(
u32_t);
389 return SNMP_ERR_NOSUCHINSTANCE;
392 return SNMP_ERR_NOERROR;
402 if (!snmp_oid_in_range(row_oid, row_oid_len, ip_RouteTable_oid_ranges,
LWIP_ARRAYSIZE(ip_RouteTable_oid_ranges))) {
403 return SNMP_ERR_NOSUCHINSTANCE;
407 snmp_oid_to_ip4(&row_oid[0], &test_ip);
418 ip4_addr_get_network(&
dst, netif_ip4_addr(
netif), netif_ip4_netmask(
netif));
420 if (ip4_addr_eq(&
dst, &test_ip)) {
422 return ip_RouteTable_get_cell_value_core(
netif, 0,
column,
value, value_len);
427 return SNMP_ERR_NOSUCHINSTANCE;
431ip_RouteTable_get_next_cell_instance_and_value(
const u32_t *
column,
struct snmp_obj_id *row_oid,
union snmp_variant_value *
value,
u32_t *value_len)
434 struct snmp_next_oid_state
state;
439 snmp_next_oid_init(&
state, row_oid->id, row_oid->len, result_temp,
LWIP_ARRAYSIZE(ip_RouteTable_oid_ranges));
443 snmp_ip4_to_oid(IP4_ADDR_ANY4, &test_oid[0]);
450 ip4_addr_get_network(&
dst, netif_ip4_addr(
netif), netif_ip4_netmask(
netif));
453 if (!ip4_addr_isany_val(
dst)) {
454 snmp_ip4_to_oid(&
dst, &test_oid[0]);
460 if (
state.status == SNMP_NEXT_OID_STATUS_SUCCESS) {
462 snmp_oid_to_ip4(&result_temp[0], &
dst);
463 snmp_oid_assign(row_oid,
state.next_oid,
state.next_oid_len);
465 return ip_RouteTable_get_cell_value_core((
struct netif *)
state.reference, ip4_addr_isany_val(
dst),
column,
value, value_len);
468 return SNMP_ERR_NOSUCHINSTANCE;
472#if LWIP_ARP && LWIP_IPV4
476static const struct snmp_oid_range ip_NetToMediaTable_oid_ranges[] = {
485ip_NetToMediaTable_get_cell_value_core(
size_t arp_table_index,
const u32_t *
column,
union snmp_variant_value *
value,
u32_t *value_len)
491 etharp_get_entry(arp_table_index, &
ip, &
netif, ðaddr);
499 value->ptr = ethaddr;
500 *value_len =
sizeof(*ethaddr);
509 return SNMP_ERR_NOSUCHINSTANCE;
512 return SNMP_ERR_NOERROR;
523 if (!snmp_oid_in_range(row_oid, row_oid_len, ip_NetToMediaTable_oid_ranges,
LWIP_ARRAYSIZE(ip_NetToMediaTable_oid_ranges))) {
524 return SNMP_ERR_NOSUCHINSTANCE;
528 netif_index = (
u8_t)row_oid[0];
529 snmp_oid_to_ip4(&row_oid[1], &ip_in);
537 if (etharp_get_entry(
i, &
ip, &
netif, ðaddr)) {
538 if ((netif_index == netif_to_num(
netif)) && ip4_addr_eq(&ip_in,
ip)) {
540 return ip_NetToMediaTable_get_cell_value_core(
i,
column,
value, value_len);
546 return SNMP_ERR_NOSUCHINSTANCE;
550ip_NetToMediaTable_get_next_cell_instance_and_value(
const u32_t *
column,
struct snmp_obj_id *row_oid,
union snmp_variant_value *
value,
u32_t *value_len)
553 struct snmp_next_oid_state
state;
557 snmp_next_oid_init(&
state, row_oid->id, row_oid->len, result_temp,
LWIP_ARRAYSIZE(ip_NetToMediaTable_oid_ranges));
565 if (etharp_get_entry(
i, &
ip, &
netif, ðaddr)) {
568 test_oid[0] = netif_to_num(
netif);
569 snmp_ip4_to_oid(
ip, &test_oid[1]);
577 if (
state.status == SNMP_NEXT_OID_STATUS_SUCCESS) {
578 snmp_oid_assign(row_oid,
state.next_oid,
state.next_oid_len);
584 return SNMP_ERR_NOSUCHINSTANCE;
589static const struct snmp_scalar_node ip_Forwarding = SNMP_SCALAR_CREATE_NODE(1, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_INTEGER, ip_get_value, ip_set_test, ip_set_value);
590static const struct snmp_scalar_node ip_DefaultTTL = SNMP_SCALAR_CREATE_NODE(2, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_INTEGER, ip_get_value, ip_set_test, ip_set_value);
591static const struct snmp_scalar_node ip_InReceives = SNMP_SCALAR_CREATE_NODE_READONLY(3, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
592static const struct snmp_scalar_node ip_InHdrErrors = SNMP_SCALAR_CREATE_NODE_READONLY(4, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
593static const struct snmp_scalar_node ip_InAddrErrors = SNMP_SCALAR_CREATE_NODE_READONLY(5, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
594static const struct snmp_scalar_node ip_ForwDatagrams = SNMP_SCALAR_CREATE_NODE_READONLY(6, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
595static const struct snmp_scalar_node ip_InUnknownProtos = SNMP_SCALAR_CREATE_NODE_READONLY(7, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
596static const struct snmp_scalar_node ip_InDiscards = SNMP_SCALAR_CREATE_NODE_READONLY(8, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
597static const struct snmp_scalar_node ip_InDelivers = SNMP_SCALAR_CREATE_NODE_READONLY(9, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
598static const struct snmp_scalar_node ip_OutRequests = SNMP_SCALAR_CREATE_NODE_READONLY(10, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
599static const struct snmp_scalar_node ip_OutDiscards = SNMP_SCALAR_CREATE_NODE_READONLY(11, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
600static const struct snmp_scalar_node ip_OutNoRoutes = SNMP_SCALAR_CREATE_NODE_READONLY(12, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
601static const struct snmp_scalar_node ip_ReasmTimeout = SNMP_SCALAR_CREATE_NODE_READONLY(13, SNMP_ASN1_TYPE_INTEGER, ip_get_value);
602static const struct snmp_scalar_node ip_ReasmReqds = SNMP_SCALAR_CREATE_NODE_READONLY(14, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
603static const struct snmp_scalar_node ip_ReasmOKs = SNMP_SCALAR_CREATE_NODE_READONLY(15, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
604static const struct snmp_scalar_node ip_ReasmFails = SNMP_SCALAR_CREATE_NODE_READONLY(16, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
605static const struct snmp_scalar_node ip_FragOKs = SNMP_SCALAR_CREATE_NODE_READONLY(17, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
606static const struct snmp_scalar_node ip_FragFails = SNMP_SCALAR_CREATE_NODE_READONLY(18, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
607static const struct snmp_scalar_node ip_FragCreates = SNMP_SCALAR_CREATE_NODE_READONLY(19, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
608static const struct snmp_scalar_node ip_RoutingDiscards = SNMP_SCALAR_CREATE_NODE_READONLY(23, SNMP_ASN1_TYPE_COUNTER, ip_get_value);
610static const struct snmp_table_simple_col_def ip_AddrTable_columns[] = {
611 { 1, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 },
612 { 2, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
613 { 3, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 },
614 { 4, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
615 { 5, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 }
618static const struct snmp_table_simple_node ip_AddrTable = SNMP_TABLE_CREATE_SIMPLE(20, ip_AddrTable_columns, ip_AddrTable_get_cell_value, ip_AddrTable_get_next_cell_instance_and_value);
620static const struct snmp_table_simple_col_def ip_RouteTable_columns[] = {
621 { 1, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 },
622 { 2, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
623 { 3, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_S32 },
624 { 4, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_S32 },
625 { 5, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_S32 },
626 { 6, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_S32 },
627 { 7, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 },
628 { 8, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
629 { 9, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
630 { 10, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
631 { 11, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 },
632 { 12, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_S32 },
633 { 13, SNMP_ASN1_TYPE_OBJECT_ID, SNMP_VARIANT_VALUE_TYPE_PTR }
636static const struct snmp_table_simple_node ip_RouteTable = SNMP_TABLE_CREATE_SIMPLE(21, ip_RouteTable_columns, ip_RouteTable_get_cell_value, ip_RouteTable_get_next_cell_instance_and_value);
639#if LWIP_ARP && LWIP_IPV4
640static const struct snmp_table_simple_col_def ip_NetToMediaTable_columns[] = {
641 { 1, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
642 { 2, SNMP_ASN1_TYPE_OCTET_STRING, SNMP_VARIANT_VALUE_TYPE_PTR },
643 { 3, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 },
644 { 4, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 }
647static const struct snmp_table_simple_node ip_NetToMediaTable = SNMP_TABLE_CREATE_SIMPLE(22, ip_NetToMediaTable_columns, ip_NetToMediaTable_get_cell_value, ip_NetToMediaTable_get_next_cell_instance_and_value);
652CREATE_LWIP_SYNC_NODE( 1, ip_Forwarding)
653CREATE_LWIP_SYNC_NODE( 2, ip_DefaultTTL)
654CREATE_LWIP_SYNC_NODE( 3, ip_InReceives)
655CREATE_LWIP_SYNC_NODE( 4, ip_InHdrErrors)
656CREATE_LWIP_SYNC_NODE( 5, ip_InAddrErrors)
657CREATE_LWIP_SYNC_NODE( 6, ip_ForwDatagrams)
658CREATE_LWIP_SYNC_NODE( 7, ip_InUnknownProtos)
659CREATE_LWIP_SYNC_NODE( 8, ip_InDiscards)
660CREATE_LWIP_SYNC_NODE( 9, ip_InDelivers)
661CREATE_LWIP_SYNC_NODE(10, ip_OutRequests)
662CREATE_LWIP_SYNC_NODE(11, ip_OutDiscards)
663CREATE_LWIP_SYNC_NODE(12, ip_OutNoRoutes)
664CREATE_LWIP_SYNC_NODE(13, ip_ReasmTimeout)
665CREATE_LWIP_SYNC_NODE(14, ip_ReasmReqds)
666CREATE_LWIP_SYNC_NODE(15, ip_ReasmOKs)
667CREATE_LWIP_SYNC_NODE(15, ip_ReasmFails)
668CREATE_LWIP_SYNC_NODE(17, ip_FragOKs)
669CREATE_LWIP_SYNC_NODE(18, ip_FragFails)
670CREATE_LWIP_SYNC_NODE(19, ip_FragCreates)
671CREATE_LWIP_SYNC_NODE(20, ip_AddrTable)
672CREATE_LWIP_SYNC_NODE(21, ip_RouteTable)
674CREATE_LWIP_SYNC_NODE(22, ip_NetToMediaTable)
676CREATE_LWIP_SYNC_NODE(23, ip_RoutingDiscards)
678static const struct snmp_node *
const ip_nodes[] = {
679 &SYNC_NODE_NAME(ip_Forwarding).node.node,
680 &SYNC_NODE_NAME(ip_DefaultTTL).node.node,
681 &SYNC_NODE_NAME(ip_InReceives).node.node,
682 &SYNC_NODE_NAME(ip_InHdrErrors).node.node,
683 &SYNC_NODE_NAME(ip_InAddrErrors).node.node,
684 &SYNC_NODE_NAME(ip_ForwDatagrams).node.node,
685 &SYNC_NODE_NAME(ip_InUnknownProtos).node.node,
686 &SYNC_NODE_NAME(ip_InDiscards).node.node,
687 &SYNC_NODE_NAME(ip_InDelivers).node.node,
688 &SYNC_NODE_NAME(ip_OutRequests).node.node,
689 &SYNC_NODE_NAME(ip_OutDiscards).node.node,
690 &SYNC_NODE_NAME(ip_OutNoRoutes).node.node,
691 &SYNC_NODE_NAME(ip_ReasmTimeout).node.node,
692 &SYNC_NODE_NAME(ip_ReasmReqds).node.node,
693 &SYNC_NODE_NAME(ip_ReasmOKs).node.node,
694 &SYNC_NODE_NAME(ip_ReasmFails).node.node,
695 &SYNC_NODE_NAME(ip_FragOKs).node.node,
696 &SYNC_NODE_NAME(ip_FragFails).node.node,
697 &SYNC_NODE_NAME(ip_FragCreates).node.node,
698 &SYNC_NODE_NAME(ip_AddrTable).node.node,
699 &SYNC_NODE_NAME(ip_RouteTable).node.node,
701 &SYNC_NODE_NAME(ip_NetToMediaTable).node.node,
703 &SYNC_NODE_NAME(ip_RoutingDiscards).node.node
706const struct snmp_tree_node snmp_mib2_ip_root = SNMP_CREATE_TREE_NODE(4, ip_nodes);
711#if LWIP_ARP && LWIP_IPV4
713static const struct snmp_table_simple_col_def at_Table_columns[] = {
714 { 1, SNMP_ASN1_TYPE_INTEGER, SNMP_VARIANT_VALUE_TYPE_U32 },
715 { 2, SNMP_ASN1_TYPE_OCTET_STRING, SNMP_VARIANT_VALUE_TYPE_PTR },
716 { 3, SNMP_ASN1_TYPE_IPADDR, SNMP_VARIANT_VALUE_TYPE_U32 }
719static const struct snmp_table_simple_node at_Table = SNMP_TABLE_CREATE_SIMPLE(1, at_Table_columns, ip_NetToMediaTable_get_cell_value, ip_NetToMediaTable_get_next_cell_instance_and_value);
722CREATE_LWIP_SYNC_NODE(1, at_Table)
724static const struct snmp_node *
const at_nodes[] = {
725 &SYNC_NODE_NAME(at_Table).node.node
728const struct snmp_tree_node snmp_mib2_at_root = SNMP_CREATE_TREE_NODE(3, at_nodes);
#define LWIP_ARRAYSIZE(x)
static HINSTANCE instance
#define LWIP_DEBUGF(debug, message)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define LWIP_PTR_NUMERIC_CAST(target_type, val)
#define LWIP_UNUSED_ARG(x)
#define PBUF_LINK_ENCAPSULATION_HLEN
#define PBUF_POOL_BUFSIZE
#define IP_REASS_MAX_PBUFS
struct netif * netif_default
#define NETIF_FOREACH(netif)