mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2025-02-04 03:39:51 +00:00
Import lwIP contrib rep
... from http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git/ into contrib/ subdir, STABLE-2_1_0_RELEASE tag lwIP contrib is now officially frozen TODO: Fix build
This commit is contained in:
parent
dd1ab2bf59
commit
ac46e42aa2
51
.gitignore
vendored
51
.gitignore
vendored
@ -1,19 +1,44 @@
|
||||
*.o
|
||||
*.so
|
||||
*.a
|
||||
*lwip_unittests.xml
|
||||
*.suo
|
||||
.depend
|
||||
|
||||
/doc/doxygen/output/html
|
||||
/src/apps/snmp/LwipMibCompiler/CCodeGeneration/bin/
|
||||
/src/apps/snmp/LwipMibCompiler/CCodeGeneration/obj/
|
||||
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler/bin/
|
||||
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler/obj/
|
||||
/src/apps/snmp/LwipMibCompiler/MibViewer/bin/
|
||||
/src/apps/snmp/LwipMibCompiler/MibViewer/obj/
|
||||
/src/apps/snmp/LwipMibCompiler/LwipSnmpCodeGeneration/bin/
|
||||
/src/apps/snmp/LwipMibCompiler/LwipSnmpCodeGeneration/obj/
|
||||
/src/apps/snmp/LwipMibCompiler/SharpSnmpLib/bin/
|
||||
/src/apps/snmp/LwipMibCompiler/SharpSnmpLib/obj/
|
||||
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler.userprefs
|
||||
/src/apps/snmp/LwipMibCompiler/*.suo
|
||||
|
||||
/test/fuzz/output
|
||||
/test/fuzz/lwip_fuzz
|
||||
/test/fuzz/.depend
|
||||
/build
|
||||
|
||||
/build
|
||||
|
||||
/contrib/examples/example_app/lwipcfg.h
|
||||
/contrib/examples/example_app/lwipopts_test.h
|
||||
|
||||
/contrib/ports/unix/example_app/iteropts.log
|
||||
/contrib/ports/unix/example_app/build
|
||||
/contrib/ports/unix/example_app/example_app
|
||||
/contrib/ports/unix/example_app/makefsdata
|
||||
|
||||
/contrib/ports/unix/check/build
|
||||
/contrib/ports/unix/lib/build
|
||||
/contrib/ports/unix/check/lwip_unittests
|
||||
|
||||
/contrib/ports/win32/example_app/build
|
||||
/contrib/ports/win32/lwipcfg_msvc.h
|
||||
|
||||
/contrib/ports/win32/msvc/Debug
|
||||
/contrib/ports/win32/msvc/Debug unittests
|
||||
/contrib/ports/win32/msvc/Release
|
||||
/contrib/ports/win32/msvc/Release unittests
|
||||
/contrib/ports/win32/msvc/*.user
|
||||
/contrib/ports/win32/msvc/*.ncb
|
||||
/contrib/ports/win32/msvc/*.cache
|
||||
/contrib/ports/win32/msvc/*.suo
|
||||
/contrib/ports/win32/msvc/ipch
|
||||
/contrib/ports/win32/msvc/*.opensdf
|
||||
/contrib/ports/win32/msvc/*.sdf
|
||||
/contrib/ports/win32/mingw/*.exe
|
||||
/contrib/ports/win32/mingw/*.map
|
||||
/contrib/ports/win32/mingw/cov-int
|
||||
|
106
contrib/Coverity/coverity.c
Normal file
106
contrib/Coverity/coverity.c
Normal file
@ -0,0 +1,106 @@
|
||||
typedef unsigned char err_t;
|
||||
typedef unsigned int u32_t;
|
||||
typedef unsigned short u16_t;
|
||||
typedef unsigned char u8_t;
|
||||
typedef void sys_sem_t;
|
||||
typedef void sys_mutex_t;
|
||||
typedef size_t mem_size_t;
|
||||
typedef size_t memp_t;
|
||||
struct pbuf;
|
||||
struct netif;
|
||||
|
||||
void* mem_malloc(mem_size_t size)
|
||||
{
|
||||
__coverity_alloc__(size);
|
||||
}
|
||||
void mem_free(void* mem)
|
||||
{
|
||||
__coverity_free__(mem);
|
||||
}
|
||||
|
||||
void* memp_malloc(memp_t type)
|
||||
{
|
||||
__coverity_alloc_nosize__();
|
||||
}
|
||||
void memp_free(memp_t type, void* mem)
|
||||
{
|
||||
__coverity_free__(mem);
|
||||
}
|
||||
|
||||
void sys_mutex_lock(sys_mutex_t* mutex)
|
||||
{
|
||||
__coverity_exclusive_lock_acquire__(mutex);
|
||||
}
|
||||
void sys_mutex_unlock(sys_mutex_t* mutex)
|
||||
{
|
||||
__coverity_exclusive_lock_release__(mutex);
|
||||
}
|
||||
|
||||
u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout)
|
||||
{
|
||||
__coverity_recursive_lock_acquire__(sem);
|
||||
}
|
||||
void sys_sem_signal(sys_sem_t *sem)
|
||||
{
|
||||
__coverity_recursive_lock_release__(sem);
|
||||
}
|
||||
|
||||
err_t ethernet_input(struct pbuf *p, struct netif *inp)
|
||||
{
|
||||
__coverity_tainted_string_sink_content__(p);
|
||||
}
|
||||
err_t tcpip_input(struct pbuf *p, struct netif *inp)
|
||||
{
|
||||
__coverity_tainted_string_sink_content__(p);
|
||||
}
|
||||
err_t ip_input(struct pbuf *p, struct netif *inp)
|
||||
{
|
||||
__coverity_tainted_string_sink_content__(p);
|
||||
}
|
||||
err_t ip4_input(struct pbuf *p, struct netif *inp)
|
||||
{
|
||||
__coverity_tainted_string_sink_content__(p);
|
||||
}
|
||||
err_t ip6_input(struct pbuf *p, struct netif *inp)
|
||||
{
|
||||
__coverity_tainted_string_sink_content__(p);
|
||||
}
|
||||
|
||||
err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len)
|
||||
{
|
||||
__coverity_tainted_string_argument__(buf);
|
||||
__coverity_tainted_data_argument__(buf);
|
||||
}
|
||||
err_t pbuf_take_at(struct pbuf *buf, const void *dataptr, u16_t len, u16_t offset)
|
||||
{
|
||||
__coverity_tainted_string_argument__(buf);
|
||||
__coverity_tainted_data_argument__(buf);
|
||||
}
|
||||
err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from)
|
||||
{
|
||||
__coverity_tainted_data_transitive__(p_to, p_from);
|
||||
}
|
||||
u16_t pbuf_copy_partial(struct pbuf *p, void *dataptr, u16_t len, u16_t offset)
|
||||
{
|
||||
__coverity_tainted_string_argument__(dataptr);
|
||||
__coverity_tainted_data_argument__(dataptr);
|
||||
}
|
||||
u8_t pbuf_get_at(struct pbuf* p, u16_t offset)
|
||||
{
|
||||
__coverity_tainted_data_return__();
|
||||
}
|
||||
|
||||
void abort(void)
|
||||
{
|
||||
__coverity_panic__();
|
||||
}
|
||||
|
||||
int check_path(char* path, size_t size)
|
||||
{
|
||||
if (size) {
|
||||
__coverity_tainted_data_sanitize__(path);
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
56
contrib/Filelists.cmake
Normal file
56
contrib/Filelists.cmake
Normal file
@ -0,0 +1,56 @@
|
||||
# This file is indended to be included in end-user CMakeLists.txt
|
||||
# include(/path/to/Filelists.cmake)
|
||||
# It assumes the variable LWIP_CONTRIB_DIR is defined pointing to the
|
||||
# root path of lwIP contrib sources.
|
||||
#
|
||||
# This file is NOT designed (on purpose) to be used as cmake
|
||||
# subdir via add_subdirectory()
|
||||
# The intention is to provide greater flexibility to users to
|
||||
# create their own targets using the *_SRCS variables.
|
||||
|
||||
set(lwipcontribexamples_SRCS
|
||||
${LWIP_CONTRIB_DIR}/examples/httpd/fs_example/fs_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/httpd/ssi_example/ssi_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/lwiperf/lwiperf_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/mdns/mdns_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/mqtt/mqtt_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/ppp/pppos_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/snmp/snmp_private_mib/lwip_prvmib.c
|
||||
${LWIP_CONTRIB_DIR}/examples/snmp/snmp_v3/snmpv3_dummy.c
|
||||
${LWIP_CONTRIB_DIR}/examples/snmp/snmp_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/sntp/sntp_example.c
|
||||
${LWIP_CONTRIB_DIR}/examples/tftp/tftp_example.c
|
||||
)
|
||||
add_library(lwipcontribexamples EXCLUDE_FROM_ALL ${lwipcontribexamples_SRCS})
|
||||
target_compile_options(lwipcontribexamples PRIVATE ${LWIP_COMPILER_FLAGS})
|
||||
target_compile_definitions(lwipcontribexamples PRIVATE ${LWIP_DEFINITIONS} ${LWIP_MBEDTLS_DEFINITIONS})
|
||||
target_include_directories(lwipcontribexamples PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
|
||||
|
||||
set(lwipcontribapps_SRCS
|
||||
${LWIP_CONTRIB_DIR}/apps/httpserver/httpserver-netconn.c
|
||||
${LWIP_CONTRIB_DIR}/apps/chargen/chargen.c
|
||||
${LWIP_CONTRIB_DIR}/apps/udpecho/udpecho.c
|
||||
${LWIP_CONTRIB_DIR}/apps/tcpecho/tcpecho.c
|
||||
${LWIP_CONTRIB_DIR}/apps/shell/shell.c
|
||||
${LWIP_CONTRIB_DIR}/apps/udpecho_raw/udpecho_raw.c
|
||||
${LWIP_CONTRIB_DIR}/apps/tcpecho_raw/tcpecho_raw.c
|
||||
${LWIP_CONTRIB_DIR}/apps/netio/netio.c
|
||||
${LWIP_CONTRIB_DIR}/apps/ping/ping.c
|
||||
${LWIP_CONTRIB_DIR}/apps/socket_examples/socket_examples.c
|
||||
${LWIP_CONTRIB_DIR}/apps/rtp/rtp.c
|
||||
)
|
||||
add_library(lwipcontribapps EXCLUDE_FROM_ALL ${lwipcontribapps_SRCS})
|
||||
target_compile_options(lwipcontribapps PRIVATE ${LWIP_COMPILER_FLAGS})
|
||||
target_compile_definitions(lwipcontribapps PRIVATE ${LWIP_DEFINITIONS} ${LWIP_MBEDTLS_DEFINITIONS})
|
||||
target_include_directories(lwipcontribapps PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
|
||||
|
||||
set(lwipcontribaddons_SRCS
|
||||
${LWIP_CONTRIB_DIR}/addons/tcp_isn/tcp_isn.c
|
||||
${LWIP_CONTRIB_DIR}/addons/ipv6_static_routing/ip6_route_table.c
|
||||
# ${LWIP_CONTRIB_DIR}/addons/netconn/external_resolve/dnssd.c
|
||||
# ${LWIP_CONTRIB_DIR}/addons/tcp_md5/tcp_md5.c
|
||||
)
|
||||
add_library(lwipcontribaddons EXCLUDE_FROM_ALL ${lwipcontribaddons_SRCS})
|
||||
target_compile_options(lwipcontribaddons PRIVATE ${LWIP_COMPILER_FLAGS})
|
||||
target_compile_definitions(lwipcontribaddons PRIVATE ${LWIP_DEFINITIONS} ${LWIP_MBEDTLS_DEFINITIONS})
|
||||
target_include_directories(lwipcontribaddons PRIVATE ${LWIP_INCLUDE_DIRS} ${LWIP_MBEDTLS_INCLUDE_DIRS})
|
56
contrib/Filelists.mk
Normal file
56
contrib/Filelists.mk
Normal file
@ -0,0 +1,56 @@
|
||||
#
|
||||
# Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification,
|
||||
# are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
# 3. The name of the author may not be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
# OF SUCH DAMAGE.
|
||||
#
|
||||
# This file is part of the lwIP TCP/IP stack.
|
||||
#
|
||||
# Author: Adam Dunkels <adam@sics.se>
|
||||
#
|
||||
|
||||
# CONTRIBAPPFILES: Contrib Applications.
|
||||
CONTRIBAPPFILES=$(CONTRIBDIR)/apps/httpserver/httpserver-netconn.c \
|
||||
$(CONTRIBDIR)/apps/chargen/chargen.c \
|
||||
$(CONTRIBDIR)/apps/udpecho/udpecho.c \
|
||||
$(CONTRIBDIR)/apps/tcpecho/tcpecho.c \
|
||||
$(CONTRIBDIR)/apps/shell/shell.c \
|
||||
$(CONTRIBDIR)/apps/udpecho_raw/udpecho_raw.c \
|
||||
$(CONTRIBDIR)/apps/tcpecho_raw/tcpecho_raw.c \
|
||||
$(CONTRIBDIR)/apps/netio/netio.c \
|
||||
$(CONTRIBDIR)/apps/ping/ping.c \
|
||||
$(CONTRIBDIR)/apps/socket_examples/socket_examples.c \
|
||||
$(CONTRIBDIR)/apps/rtp/rtp.c \
|
||||
$(CONTRIBDIR)/examples/httpd/fs_example/fs_example.c \
|
||||
$(CONTRIBDIR)/examples/httpd/ssi_example/ssi_example.c \
|
||||
$(CONTRIBDIR)/examples/lwiperf/lwiperf_example.c \
|
||||
$(CONTRIBDIR)/examples/mdns/mdns_example.c \
|
||||
$(CONTRIBDIR)/examples/mqtt/mqtt_example.c \
|
||||
$(CONTRIBDIR)/examples/ppp/pppos_example.c \
|
||||
$(CONTRIBDIR)/examples/snmp/snmp_private_mib/lwip_prvmib.c \
|
||||
$(CONTRIBDIR)/examples/snmp/snmp_v3/snmpv3_dummy.c \
|
||||
$(CONTRIBDIR)/examples/snmp/snmp_example.c \
|
||||
$(CONTRIBDIR)/examples/sntp/sntp_example.c \
|
||||
$(CONTRIBDIR)/examples/tftp/tftp_example.c \
|
||||
$(CONTRIBDIR)/addons/tcp_isn/tcp_isn.c \
|
||||
$(CONTRIBDIR)/addons/ipv6_static_routing/ip6_route_table.c
|
43
contrib/addons/ipv6_static_routing/README
Normal file
43
contrib/addons/ipv6_static_routing/README
Normal file
@ -0,0 +1,43 @@
|
||||
A simple routing table implementation for addition, deletion and lookup of IPv6 routes.
|
||||
|
||||
APIs are:
|
||||
1) s8_t ip6_add_route_entry(struct ip6_prefix *ip6_prefix,
|
||||
struct netif *netif,
|
||||
ip6_addr_t *gateway,
|
||||
s8_t *index);
|
||||
|
||||
2) err_t ip6_remove_route_entry(struct ip6_prefix *ip6_prefix);
|
||||
|
||||
3) s8_t ip6_find_route_entry(ip6_addr_t *ip6_dest_addr);
|
||||
|
||||
4) struct netif *ip6_static_route(ip6_addr_t *src, ip6_addr_t *dest);
|
||||
|
||||
5) ip6_addr_t *ip6_get_gateway(struct netif *netif, ip6_addr_t *dest);
|
||||
|
||||
6) struct ip6_route_entry *ip6_get_route_table(void);
|
||||
|
||||
For route lookup from the table, The LWIP_HOOK_IP6_ROUTE hook in ip6_route(..) of ip6.c
|
||||
could be assigned to the ip6_static_route() API of this implementation to return the
|
||||
appropriate netif.
|
||||
|
||||
-- The application can add routes using the API ip6_add_route_entry(..).
|
||||
This API adds the ip6 prefix route into the static route table while
|
||||
keeping all entries sorted in decreasing order of prefix length.
|
||||
Subsequently, a linear search down the list can be performed to retrieve a
|
||||
matching route entry for a Longest Prefix Match.
|
||||
The prefix length is expected to be at an 8-bit boundary. While this is
|
||||
a limitation, it would serve most practical purposes.
|
||||
|
||||
-- The application can remove routes using the API ip6_remove_route_entry(..).
|
||||
|
||||
-- The application can find a route entry for a specific address using the
|
||||
ip6_find_route_entry() function which returns the index of the found entry.
|
||||
This is used internally by the route lookup function ip6_static_route() API.
|
||||
|
||||
-- To fetch the gateway IPv6 address for a specific destination IPv6
|
||||
address and target netif, the application can call ip6_get_gateway(..).
|
||||
This API could be assigned to the LWIP_HOOK_ND6_GET_GW() if a gateway has
|
||||
been added as part of the ip6_add_route_entry().
|
||||
|
||||
-- To fetch a pointer to the head of the table, the application can call
|
||||
ip6_get_route_table().
|
248
contrib/addons/ipv6_static_routing/ip6_route_table.c
Normal file
248
contrib/addons/ipv6_static_routing/ip6_route_table.c
Normal file
@ -0,0 +1,248 @@
|
||||
/**
|
||||
* @file
|
||||
* IPv6 static route table.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Nest Labs, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* Author: Pradip De <pradipd@google.com>
|
||||
*
|
||||
*
|
||||
* Please coordinate changes and requests with Pradip De
|
||||
* <pradipd@google.com>
|
||||
*/
|
||||
|
||||
#include "lwip/opt.h"
|
||||
|
||||
#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */
|
||||
|
||||
#include "ip6_route_table.h"
|
||||
#include "lwip/def.h"
|
||||
#include "lwip/mem.h"
|
||||
#include "lwip/netif.h"
|
||||
#include "lwip/ip6.h"
|
||||
#include "lwip/ip6_addr.h"
|
||||
#include "lwip/nd6.h"
|
||||
#include "lwip/debug.h"
|
||||
#include "lwip/stats.h"
|
||||
|
||||
#include "string.h"
|
||||
|
||||
static struct ip6_route_entry static_route_table[LWIP_IPV6_NUM_ROUTE_ENTRIES];
|
||||
|
||||
/**
|
||||
* Add the ip6 prefix route and target netif into the static route table while
|
||||
* keeping all entries sorted in decreasing order of prefix length.
|
||||
* 1. Search from the last entry up to find the correct slot to insert while
|
||||
* moving entries one position down to create room.
|
||||
* 2. Insert into empty slot created.
|
||||
*
|
||||
* Subsequently, a linear search down the list can be performed to retrieve a
|
||||
* matching route entry for a Longest Prefix Match.
|
||||
*
|
||||
* @param ip6_prefix the route prefix entry to add.
|
||||
* @param netif pointer to target netif.
|
||||
* @param gateway the gateway address to use to send through. Has to be link local.
|
||||
* @param idx return value argument of index where route entry was added in table.
|
||||
* @return ERR_OK if addition was successful.
|
||||
* ERR_MEM if table is already full.
|
||||
* ERR_ARG if passed argument is bad or route already exists in table.
|
||||
*/
|
||||
err_t
|
||||
ip6_add_route_entry(const struct ip6_prefix *ip6_prefix, struct netif *netif, const ip6_addr_t *gateway, s8_t *idx)
|
||||
{
|
||||
s8_t i = -1;
|
||||
err_t retval = ERR_OK;
|
||||
|
||||
if (!ip6_prefix_valid(ip6_prefix->prefix_len) || (netif == NULL)) {
|
||||
retval = ERR_ARG;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Check if an entry already exists with matching prefix; If so, replace it. */
|
||||
for (i = 0; i < LWIP_IPV6_NUM_ROUTE_ENTRIES; i++) {
|
||||
if ((ip6_prefix->prefix_len == static_route_table[i].prefix.prefix_len) &&
|
||||
memcmp(&ip6_prefix->addr, &static_route_table[i].prefix.addr,
|
||||
ip6_prefix->prefix_len / 8) == 0) {
|
||||
/* Prefix matches; replace the netif with the one being added. */
|
||||
goto insert;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if the table is full */
|
||||
if (static_route_table[LWIP_IPV6_NUM_ROUTE_ENTRIES - 1].netif != NULL) {
|
||||
retval = ERR_MEM;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Shift all entries down the table until slot is found */
|
||||
for (i = LWIP_IPV6_NUM_ROUTE_ENTRIES - 1;
|
||||
i > 0 && (ip6_prefix->prefix_len > static_route_table[i - 1].prefix.prefix_len); i--) {
|
||||
SMEMCPY(&static_route_table[i], &static_route_table[i - 1], sizeof(struct ip6_route_entry));
|
||||
}
|
||||
|
||||
insert:
|
||||
/* Insert into the slot selected */
|
||||
SMEMCPY(&static_route_table[i].prefix, ip6_prefix, sizeof(struct ip6_prefix));
|
||||
static_route_table[i].netif = netif;
|
||||
|
||||
/* Add gateway to route table */
|
||||
static_route_table[i].gateway = gateway;
|
||||
|
||||
if (idx != NULL) {
|
||||
*idx = i;
|
||||
}
|
||||
|
||||
exit:
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the route entry from the static route table.
|
||||
*
|
||||
* @param ip6_prefix the route prefix entry to delete.
|
||||
*/
|
||||
void
|
||||
ip6_remove_route_entry(const struct ip6_prefix *ip6_prefix)
|
||||
{
|
||||
int i, pos = -1;
|
||||
|
||||
for (i = 0; i < LWIP_IPV6_NUM_ROUTE_ENTRIES; i++) {
|
||||
/* compare prefix to find position to delete */
|
||||
if (ip6_prefix->prefix_len == static_route_table[i].prefix.prefix_len &&
|
||||
memcmp(&ip6_prefix->addr, &static_route_table[i].prefix.addr,
|
||||
ip6_prefix->prefix_len / 8) == 0) {
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (pos >= 0) {
|
||||
/* Shift everything beyond pos one slot up */
|
||||
for (i = pos; i < LWIP_IPV6_NUM_ROUTE_ENTRIES - 1; i++) {
|
||||
SMEMCPY(&static_route_table[i], &static_route_table[i+1], sizeof(struct ip6_route_entry));
|
||||
if (static_route_table[i].netif == NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* Zero the remaining entries */
|
||||
for (; i < LWIP_IPV6_NUM_ROUTE_ENTRIES; i++) {
|
||||
ip6_addr_set_zero((&static_route_table[i].prefix.addr));
|
||||
static_route_table[i].netif = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the appropriate route entry in the static route table corresponding to the given
|
||||
* destination IPv6 address. Since the entries in the route table are kept sorted in decreasing
|
||||
* order of prefix length, a linear search down the list is performed to retrieve a matching
|
||||
* index.
|
||||
*
|
||||
* @param ip6_dest_addr the destination address to match
|
||||
* @return the idx of the found route entry; -1 if not found.
|
||||
*/
|
||||
s8_t
|
||||
ip6_find_route_entry(const ip6_addr_t *ip6_dest_addr)
|
||||
{
|
||||
s8_t i, idx = -1;
|
||||
|
||||
/* Search prefix in the sorted(decreasing order of prefix length) list */
|
||||
for(i = 0; i < LWIP_IPV6_NUM_ROUTE_ENTRIES; i++) {
|
||||
if (memcmp(ip6_dest_addr, &static_route_table[i].prefix.addr,
|
||||
static_route_table[i].prefix.prefix_len / 8) == 0) {
|
||||
idx = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return idx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the appropriate network interface for a given IPv6 address from a routing table with
|
||||
* static IPv6 routes.
|
||||
*
|
||||
* @param src the source IPv6 address, if known
|
||||
* @param dest the destination IPv6 address for which to find the route
|
||||
* @return the netif on which to send to reach dest
|
||||
*/
|
||||
struct netif *
|
||||
ip6_static_route(const ip6_addr_t *src, const ip6_addr_t *dest)
|
||||
{
|
||||
int i;
|
||||
|
||||
LWIP_UNUSED_ARG(src);
|
||||
|
||||
/* Perform table lookup */
|
||||
i = ip6_find_route_entry(dest);
|
||||
|
||||
if (i >= 0) {
|
||||
return static_route_table[i].netif;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the gateway IP6 address for a given destination IPv6 address and target netif
|
||||
* from a routing table with static IPv6 routes.
|
||||
*
|
||||
* @param netif the netif used for sending
|
||||
* @param dest the destination IPv6 address
|
||||
* @return the ip6 address of the gateway to forward packet to
|
||||
*/
|
||||
const ip6_addr_t *
|
||||
ip6_get_gateway(struct netif *netif, const ip6_addr_t *dest)
|
||||
{
|
||||
const ip6_addr_t *ret_gw = NULL;
|
||||
const int i = ip6_find_route_entry(dest);
|
||||
|
||||
LWIP_UNUSED_ARG(netif);
|
||||
|
||||
if (i >= 0) {
|
||||
if (static_route_table[i].gateway != NULL) {
|
||||
ret_gw = static_route_table[i].gateway;
|
||||
}
|
||||
}
|
||||
|
||||
return ret_gw;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the top of the route table.
|
||||
* This should be used for debug printing only.
|
||||
*
|
||||
* @return the top of the route table.
|
||||
*/
|
||||
const struct ip6_route_entry *
|
||||
ip6_get_route_table(void)
|
||||
{
|
||||
return static_route_table;
|
||||
}
|
||||
|
||||
#endif /* LWIP_IPV6 */
|
94
contrib/addons/ipv6_static_routing/ip6_route_table.h
Normal file
94
contrib/addons/ipv6_static_routing/ip6_route_table.h
Normal file
@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* IPv6 static route table.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Nest Labs, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* Author: Pradip De <pradipd@google.com>
|
||||
*
|
||||
*
|
||||
* Please coordinate changes and requests with Pradip De
|
||||
* <pradipd@google.com>
|
||||
*/
|
||||
|
||||
#ifndef __LWIP_IP6_ROUTE_TABLE_H__
|
||||
#define __LWIP_IP6_ROUTE_TABLE_H__
|
||||
|
||||
#include "lwip/opt.h"
|
||||
|
||||
#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */
|
||||
|
||||
#include "lwip/ip6_addr.h"
|
||||
#include "lwip/err.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct netif;
|
||||
|
||||
/**
|
||||
* LWIP_IPV6_NUM_ROUTES: Number of IPV6 routes that can be kept in the static route table.
|
||||
*/
|
||||
#ifndef LWIP_IPV6_NUM_ROUTE_ENTRIES
|
||||
#define LWIP_IPV6_NUM_ROUTE_ENTRIES (8)
|
||||
#endif
|
||||
|
||||
#define IP6_MAX_PREFIX_LEN (128)
|
||||
#define IP6_PREFIX_ALLOWED_GRANULARITY (8)
|
||||
/* Prefix length cannot be greater than 128 bits and needs to be at a byte boundary */
|
||||
#define ip6_prefix_valid(prefix_len) (((prefix_len) <= IP6_MAX_PREFIX_LEN) && \
|
||||
(((prefix_len) % IP6_PREFIX_ALLOWED_GRANULARITY) == 0))
|
||||
|
||||
struct ip6_prefix {
|
||||
ip6_addr_t addr;
|
||||
u8_t prefix_len; /* prefix length in bits at byte boundaries */
|
||||
};
|
||||
|
||||
struct ip6_route_entry {
|
||||
struct ip6_prefix prefix;
|
||||
struct netif *netif;
|
||||
const ip6_addr_t *gateway;
|
||||
};
|
||||
|
||||
err_t ip6_add_route_entry(const struct ip6_prefix *ip6_prefix, struct netif *netif,
|
||||
const ip6_addr_t *gateway, s8_t *idx);
|
||||
void ip6_remove_route_entry(const struct ip6_prefix *ip6_prefix);
|
||||
s8_t ip6_find_route_entry(const ip6_addr_t *ip6_dest_addr);
|
||||
struct netif *ip6_static_route(const ip6_addr_t *src, const ip6_addr_t *dest);
|
||||
const ip6_addr_t *ip6_get_gateway(struct netif *netif, const ip6_addr_t *dest);
|
||||
const struct ip6_route_entry *ip6_get_route_table(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* LWIP_IPV6 */
|
||||
|
||||
#endif /* __LWIP_IP6_ROUTE_TABLE_H__ */
|
164
contrib/addons/netconn/external_resolve/dnssd.c
Normal file
164
contrib/addons/netconn/external_resolve/dnssd.c
Normal file
@ -0,0 +1,164 @@
|
||||
/**
|
||||
* @file
|
||||
* DNS-SD APIs used by LWIP_HOOK_NETCONN_EXTERNAL_RESOLVE
|
||||
*
|
||||
* This implementation assumes the DNS-SD API implementation (most likely provided by
|
||||
* mDNSResponder) is implemented in the same process space as LwIP and can directly
|
||||
* invoke the callback for DNSServiceGetAddrInfo. This is the typical deployment in
|
||||
* an embedded environment where as a traditional OS requires pumping the callback results
|
||||
* through an IPC mechanism (see DNSServiceRefSockFD/DNSServiceProcessResult)
|
||||
*
|
||||
* @defgroup dnssd DNS-SD
|
||||
* @ingroup dns
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2017 Joel Cunningham, Garmin International, Inc. <joel.cunningham@garmin.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Joel Cunningham <joel.cunningham@me.com>
|
||||
*
|
||||
*/
|
||||
#include "lwip/opt.h"
|
||||
|
||||
#include "lwip/err.h"
|
||||
#include "lwip/inet.h"
|
||||
#include "lwip/sockets.h"
|
||||
#include "lwip/sys.h"
|
||||
|
||||
#include "dnssd.h"
|
||||
|
||||
/* External headers */
|
||||
#include <string.h>
|
||||
#include <dns_sd.h>
|
||||
|
||||
/* This timeout should allow for multiple queries.
|
||||
mDNSResponder has the following query timeline:
|
||||
Query 1: time = 0s
|
||||
Query 2: time = 1s
|
||||
Query 3: time = 4s
|
||||
*/
|
||||
#define GETADDR_TIMEOUT_MS 5000
|
||||
#define LOCAL_DOMAIN ".local"
|
||||
|
||||
/* Only consume .local hosts */
|
||||
#ifndef CONSUME_LOCAL_ONLY
|
||||
#define CONSUME_LOCAL_ONLY 1
|
||||
#endif
|
||||
|
||||
struct addr_clbk_msg {
|
||||
sys_sem_t sem;
|
||||
struct sockaddr_storage addr;
|
||||
err_t err;
|
||||
};
|
||||
|
||||
static void addr_info_callback(DNSServiceRef ref, DNSServiceFlags flags, u32_t interface_index,
|
||||
DNSServiceErrorType error_code, char const* hostname,
|
||||
const struct sockaddr* address, u32_t ttl, void* context);
|
||||
|
||||
int
|
||||
lwip_dnssd_gethostbyname(const char *name, ip_addr_t *addr, u8_t addrtype, err_t *err)
|
||||
{
|
||||
DNSServiceErrorType result;
|
||||
DNSServiceRef ref;
|
||||
struct addr_clbk_msg msg;
|
||||
char *p;
|
||||
|
||||
/* @todo: use with IPv6 */
|
||||
LWIP_UNUSED_ARG(addrtype);
|
||||
|
||||
#if CONSUME_LOCAL_ONLY
|
||||
/* check if this is a .local host. If it is, then we consume the query */
|
||||
p = strstr(name, LOCAL_DOMAIN);
|
||||
if (p == NULL) {
|
||||
return 0; /* not consumed */
|
||||
}
|
||||
p += (sizeof(LOCAL_DOMAIN) - 1);
|
||||
/* check to make sure .local isn't a substring (only allow .local\0 or .local.\0) */
|
||||
if ((*p != '.' && *p != '\0') ||
|
||||
(*p == '.' && *(p + 1) != '\0')) {
|
||||
return 0; /* not consumed */
|
||||
}
|
||||
#endif /* CONSUME_LOCAL_ONLY */
|
||||
|
||||
msg.err = sys_sem_new(&msg.sem, 0);
|
||||
if (msg.err != ERR_OK) {
|
||||
goto query_done;
|
||||
}
|
||||
|
||||
msg.err = ERR_TIMEOUT;
|
||||
result = DNSServiceGetAddrInfo(&ref, 0, 0, kDNSServiceProtocol_IPv4, name, addr_info_callback, &msg);
|
||||
if (result == kDNSServiceErr_NoError) {
|
||||
sys_arch_sem_wait(&msg.sem, GETADDR_TIMEOUT_MS);
|
||||
DNSServiceRefDeallocate(ref);
|
||||
|
||||
/* We got a response */
|
||||
if (msg.err == ERR_OK) {
|
||||
struct sockaddr_in* addr_in = (struct sockaddr_in *)&msg.addr;
|
||||
if (addr_in->sin_family == AF_INET) {
|
||||
inet_addr_to_ip4addr(ip_2_ip4(addr), &addr_in->sin_addr);
|
||||
} else {
|
||||
/* @todo add IPv6 support */
|
||||
msg.err = ERR_VAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
sys_sem_free(&msg.sem);
|
||||
|
||||
/* Query has been consumed and is finished */
|
||||
query_done:
|
||||
*err = msg.err;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
addr_info_callback(DNSServiceRef ref, DNSServiceFlags flags, u32_t interface_index,
|
||||
DNSServiceErrorType error_code, char const* hostname,
|
||||
const struct sockaddr* address, u32_t ttl, void* context)
|
||||
{
|
||||
struct addr_clbk_msg* msg = (struct addr_clbk_msg*)context;
|
||||
struct sockaddr_in* addr_in = (struct sockaddr_in *)address;
|
||||
|
||||
LWIP_UNUSED_ARG(ref);
|
||||
LWIP_UNUSED_ARG(flags);
|
||||
LWIP_UNUSED_ARG(interface_index);
|
||||
LWIP_UNUSED_ARG(hostname);
|
||||
LWIP_UNUSED_ARG(ttl);
|
||||
LWIP_UNUSED_ARG(context);
|
||||
|
||||
if ((error_code == kDNSServiceErr_NoError) &&
|
||||
(addr_in->sin_family == AF_INET)) {
|
||||
MEMCPY(&msg->addr, addr_in, sizeof(*addr_in));
|
||||
msg->err = ERR_OK;
|
||||
}
|
||||
else {
|
||||
/* @todo add IPv6 support */
|
||||
msg->err = ERR_VAL;
|
||||
}
|
||||
|
||||
sys_sem_signal(&msg->sem);
|
||||
} /* addr_info_callback() */
|
50
contrib/addons/netconn/external_resolve/dnssd.h
Normal file
50
contrib/addons/netconn/external_resolve/dnssd.h
Normal file
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @file
|
||||
* DNS-SD APIs used by LWIP_HOOK_NETCONN_EXTERNAL_RESOLVE
|
||||
*
|
||||
* @defgroup dnssd DNS-SD
|
||||
* @ingroup dns
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2017 Joel Cunningham, Garmin International, Inc. <joel.cunningham@garmin.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Joel Cunningham <joel.cunningham@me.com>
|
||||
*
|
||||
*/
|
||||
#include "lwip/opt.h"
|
||||
|
||||
#ifndef LWIP_HDR_DNSSD_H
|
||||
#define LWIP_HDR_DNSSD_H
|
||||
|
||||
#include "lwip/err.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
|
||||
int lwip_dnssd_gethostbyname(const char *name, ip_addr_t *addr, u8_t addrtype, err_t *err);
|
||||
|
||||
#endif /* LWIP_HDR_DNSSD_H */
|
182
contrib/addons/tcp_isn/tcp_isn.c
Normal file
182
contrib/addons/tcp_isn/tcp_isn.c
Normal file
@ -0,0 +1,182 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* Reference implementation of the TCP ISN algorithm standardized in RFC 6528.
|
||||
* Produce TCP Initial Sequence Numbers by combining an MD5-generated hash
|
||||
* based on the new TCP connection's identity and a stable secret, with the
|
||||
* current time at 4-microsecond granularity.
|
||||
*
|
||||
* Specifically, the implementation uses MD5 to compute a hash of the input
|
||||
* buffer, which contains both the four-tuple of the new TCP connection (local
|
||||
* and remote IP address and port), as well as a 16-byte secret to make the
|
||||
* results unpredictable to external parties. The secret must be given at
|
||||
* initialization time and should ideally remain the same across system
|
||||
* reboots. To be sure: the spoofing-resistance of the resulting ISN depends
|
||||
* mainly on the strength of the supplied secret!
|
||||
*
|
||||
* The implementation takes 32 bits from the computed hash, and adds to it the
|
||||
* current time, in 4-microsecond units. The current time is computed from a
|
||||
* boot time given at initialization, and the current uptime as provided by
|
||||
* sys_now(). Thus, it assumes that sys_now() returns a time value that is
|
||||
* relative to the boot time, i.e., that it starts at 0 at system boot, and
|
||||
* only ever increases monotonically.
|
||||
*
|
||||
* For efficiency reasons, a single MD5 input buffer is used, and partially
|
||||
* filled in at initialization time. Specifically, of this 64-byte buffer, the
|
||||
* first 36 bytes are used for the four-way TCP tuple data, followed by the
|
||||
* 16-byte secret, followed by 12-byte zero padding. The 64-byte size of the
|
||||
* buffer should achieve the best performance for the actual MD5 computation.
|
||||
*
|
||||
* Basic usage:
|
||||
*
|
||||
* 1. in your lwipopts.h, add the following lines:
|
||||
*
|
||||
* #include <lwip/arch.h>
|
||||
* struct ip_addr;
|
||||
* u32_t lwip_hook_tcp_isn(const struct ip_addr *local_ip, u16_t local_port,
|
||||
* const struct ip_addr *remote_ip, u16_t remote_port);
|
||||
* "#define LWIP_HOOK_TCP_ISN lwip_hook_tcp_isn";
|
||||
*
|
||||
* 2. from your own code, call lwip_init_tcp_isn() at initialization time, with
|
||||
* appropriate parameters.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2016 The MINIX 3 Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* Author: David van Moolenbroek <david@minix3.org>
|
||||
*/
|
||||
|
||||
#include "tcp_isn.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "lwip/sys.h"
|
||||
#include <string.h>
|
||||
|
||||
#ifdef LWIP_HOOK_TCP_ISN
|
||||
|
||||
/* pull in md5 of ppp? */
|
||||
#include "netif/ppp/ppp_opts.h"
|
||||
#if !PPP_SUPPORT || (!LWIP_USE_EXTERNAL_POLARSSL && !LWIP_USE_EXTERNAL_MBEDTLS)
|
||||
#undef LWIP_INCLUDED_POLARSSL_MD5
|
||||
#define LWIP_INCLUDED_POLARSSL_MD5 1
|
||||
#include "netif/ppp/polarssl/md5.h"
|
||||
#endif
|
||||
|
||||
static u8_t input[64];
|
||||
static u32_t base_time;
|
||||
|
||||
/**
|
||||
* Initialize the TCP ISN module, with the boot time and a secret.
|
||||
*
|
||||
* @param boot_time Wall clock boot time of the system, in seconds.
|
||||
* @param secret_16_bytes A 16-byte secret used to randomize the TCP ISNs.
|
||||
*/
|
||||
void
|
||||
lwip_init_tcp_isn(u32_t boot_time, const u8_t *secret_16_bytes)
|
||||
{
|
||||
/* Initialize the input buffer with the secret and trailing zeroes. */
|
||||
memset(input, 0, sizeof(input));
|
||||
|
||||
MEMCPY(&input[36], secret_16_bytes, 16);
|
||||
|
||||
/* Save the boot time in 4-us units. Overflow is no problem here. */
|
||||
base_time = boot_time * 250000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook to generate an Initial Sequence Number (ISN) for a new TCP connection.
|
||||
*
|
||||
* @param local_ip The local IP address.
|
||||
* @param local_port The local port number, in host-byte order.
|
||||
* @param remote_ip The remote IP address.
|
||||
* @param remote_port The remote port number, in host-byte order.
|
||||
* @return The ISN to use for the new TCP connection.
|
||||
*/
|
||||
u32_t
|
||||
lwip_hook_tcp_isn(const ip_addr_t *local_ip, u16_t local_port,
|
||||
const ip_addr_t *remote_ip, u16_t remote_port)
|
||||
{
|
||||
md5_context ctx;
|
||||
u8_t output[16];
|
||||
u32_t isn;
|
||||
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
if (IP_IS_V6(local_ip))
|
||||
#endif /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
#if LWIP_IPV6
|
||||
{
|
||||
const ip6_addr_t *local_ip6, *remote_ip6;
|
||||
|
||||
local_ip6 = ip_2_ip6(local_ip);
|
||||
remote_ip6 = ip_2_ip6(remote_ip);
|
||||
|
||||
SMEMCPY(&input[0], &local_ip6->addr, 16);
|
||||
SMEMCPY(&input[16], &remote_ip6->addr, 16);
|
||||
}
|
||||
#endif /* LWIP_IPV6 */
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
else
|
||||
#endif /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
#if LWIP_IPV4
|
||||
{
|
||||
const ip4_addr_t *local_ip4, *remote_ip4;
|
||||
|
||||
local_ip4 = ip_2_ip4(local_ip);
|
||||
remote_ip4 = ip_2_ip4(remote_ip);
|
||||
|
||||
/* Represent IPv4 addresses as IPv4-mapped IPv6 addresses, to ensure that
|
||||
* the IPv4 and IPv6 address spaces are completely disjoint. */
|
||||
memset(&input[0], 0, 10);
|
||||
input[10] = 0xff;
|
||||
input[11] = 0xff;
|
||||
SMEMCPY(&input[12], &local_ip4->addr, 4);
|
||||
memset(&input[16], 0, 10);
|
||||
input[26] = 0xff;
|
||||
input[27] = 0xff;
|
||||
SMEMCPY(&input[28], &remote_ip4->addr, 4);
|
||||
}
|
||||
#endif /* LWIP_IPV4 */
|
||||
|
||||
input[32] = (u8_t)(local_port >> 8);
|
||||
input[33] = (u8_t)(local_port & 0xff);
|
||||
input[34] = (u8_t)(remote_port >> 8);
|
||||
input[35] = (u8_t)(remote_port & 0xff);
|
||||
|
||||
/* The secret and padding are already filled in. */
|
||||
|
||||
/* Generate the hash, using MD5. */
|
||||
md5_starts(&ctx);
|
||||
md5_update(&ctx, input, sizeof(input));
|
||||
md5_finish(&ctx, output);
|
||||
|
||||
/* Arbitrarily take the first 32 bits from the generated hash. */
|
||||
MEMCPY(&isn, output, sizeof(isn));
|
||||
|
||||
/* Add the current time in 4-microsecond units. */
|
||||
return isn + base_time + sys_now() * 250;
|
||||
}
|
||||
|
||||
#endif /* LWIP_HOOK_TCP_ISN */
|
48
contrib/addons/tcp_isn/tcp_isn.h
Normal file
48
contrib/addons/tcp_isn/tcp_isn.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2016 The MINIX 3 Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* Author: David van Moolenbroek <david@minix3.org>
|
||||
*/
|
||||
|
||||
#ifndef LWIP_HDR_CONTRIB_ADDONS_TCP_ISN_H
|
||||
#define LWIP_HDR_CONTRIB_ADDONS_TCP_ISN_H
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void lwip_init_tcp_isn(u32_t boot_time, const u8_t *secret_16_bytes);
|
||||
u32_t lwip_hook_tcp_isn(const ip_addr_t *local_ip, u16_t local_port,
|
||||
const ip_addr_t *remote_ip, u16_t remote_port);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* LWIP_HDR_CONTRIB_ADDONS_TCP_ISN_H */
|
27
contrib/addons/tcp_md5/README
Normal file
27
contrib/addons/tcp_md5/README
Normal file
@ -0,0 +1,27 @@
|
||||
This folder provides an example implementation of how to add custom tcp header
|
||||
options and custom socket options.
|
||||
|
||||
It does this by implementing the (seldom used) tcp md5 signature.
|
||||
|
||||
To enable it, add an LWIP_HOOK_FILENAME hook file, include tcp_md5.h in it and
|
||||
define these hooks:
|
||||
|
||||
#define LWIP_HOOK_TCP_INPACKET_PCB(pcb, hdr, optlen, opt1len, opt2, p) tcp_md5_check_inpacket(pcb, hdr, optlen, opt1len, opt2, p)
|
||||
#define LWIP_HOOK_TCP_OPT_LENGTH_SEGMENT(pcb, internal_len) tcp_md5_get_additional_option_length(pcb, internal_len)
|
||||
#define LWIP_HOOK_TCP_ADD_TX_OPTIONS(p, hdr, pcb, opts) tcp_md5_add_tx_options(p, hdr, pcb, opts)
|
||||
#define LWIP_HOOK_SOCKETS_SETSOCKOPT(s, sock, level, optname, optval, optlen, err) tcp_md5_setsockopt_hook(sock, level, optname, optval, optlen, err)
|
||||
|
||||
Then, in your sockets application, enable md5 signature on a socket like this:
|
||||
|
||||
struct tcp_md5sig md5;
|
||||
struct sockaddr_storage addr_remote; /* Initialize this to remote address and port */
|
||||
memcpy(&md5.tcpm_addr, &addr_remote, sizeof(addr_remote));
|
||||
strcpy(md5.tcpm_key, key); /* this is the md5 key per connection */
|
||||
md5.tcpm_keylen = strlen(key);
|
||||
if ((ret = setsockopt(sockfd, IPPROTO_TCP, TCP_MD5SIG, &md5, sizeof(md5))) < 0) {
|
||||
perror("setsockopt TCP_MD5SIG");
|
||||
return;
|
||||
}
|
||||
|
||||
After that, your connection (client) or all incoming connections (server) require
|
||||
tcp md5 signatures.
|
534
contrib/addons/tcp_md5/tcp_md5.c
Normal file
534
contrib/addons/tcp_md5/tcp_md5.c
Normal file
@ -0,0 +1,534 @@
|
||||
/**
|
||||
* @file: An implementation of TCP MD5 signatures by using various hooks in
|
||||
* lwIP to implement custom tcp options and custom socket options.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2018 Simon Goldschmidt
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* Author: Simon Goldschmidt <goldsimon@gmx.de>
|
||||
*/
|
||||
|
||||
#include "tcp_md5.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "lwip/sys.h"
|
||||
#include "lwip/prot/tcp.h"
|
||||
#include "lwip/priv/tcp_priv.h"
|
||||
#include "lwip/sockets.h"
|
||||
#include "lwip/priv/sockets_priv.h"
|
||||
#include "lwip/api.h"
|
||||
#include <string.h>
|
||||
|
||||
/* pull in md5 of ppp? */
|
||||
#include "netif/ppp/ppp_opts.h"
|
||||
#if !PPP_SUPPORT || (!LWIP_USE_EXTERNAL_POLARSSL && !LWIP_USE_EXTERNAL_MBEDTLS)
|
||||
#undef LWIP_INCLUDED_POLARSSL_MD5
|
||||
#define LWIP_INCLUDED_POLARSSL_MD5 1
|
||||
#include "netif/ppp/polarssl/md5.h"
|
||||
#endif
|
||||
|
||||
#if !LWIP_TCP_PCB_NUM_EXT_ARGS
|
||||
#error tcp_md5 needs LWIP_TCP_PCB_NUM_EXT_ARGS
|
||||
#endif
|
||||
|
||||
#define LWIP_TCP_OPT_MD5 19 /* number of the md5 option */
|
||||
#define LWIP_TCP_OPT_LEN_MD5 18 /* length of the md5 option */
|
||||
#define LWIP_TCP_OPT_LEN_MD5_OUT 20 /* 18 + alignment */
|
||||
|
||||
#define LWIP_TCP_MD5_DIGEST_LEN 16
|
||||
|
||||
/* This keeps the md5 state internally */
|
||||
struct tcp_md5_conn_info {
|
||||
struct tcp_md5_conn_info *next;
|
||||
ip_addr_t remote_addr;
|
||||
u16_t remote_port;
|
||||
u8_t key[TCP_MD5SIG_MAXKEYLEN];
|
||||
u16_t key_len;
|
||||
};
|
||||
|
||||
/* Callback function prototypes: */
|
||||
static void tcp_md5_extarg_destroy(u8_t id, void *data);
|
||||
static err_t tcp_md5_extarg_passive_open(u8_t id, struct tcp_pcb_listen *lpcb, struct tcp_pcb *cpcb);
|
||||
/* Define our tcp ext arg callback structure: */
|
||||
const struct tcp_ext_arg_callbacks tcp_md5_ext_arg_callbacks = {
|
||||
tcp_md5_extarg_destroy,
|
||||
tcp_md5_extarg_passive_open
|
||||
};
|
||||
|
||||
static u8_t tcp_md5_extarg_id = LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID;
|
||||
static u8_t tcp_md5_opts_buf[40];
|
||||
|
||||
/** Initialize this module (allocates a tcp ext arg id) */
|
||||
void
|
||||
tcp_md5_init(void)
|
||||
{
|
||||
tcp_md5_extarg_id = tcp_ext_arg_alloc_id();
|
||||
}
|
||||
|
||||
/* Create a conn-info structure that holds the md5 state per connection */
|
||||
static struct tcp_md5_conn_info *
|
||||
tcp_md5_conn_info_alloc(void)
|
||||
{
|
||||
return (struct tcp_md5_conn_info *)mem_malloc(sizeof(struct tcp_md5_conn_info));
|
||||
}
|
||||
|
||||
/* Frees a conn-info structure that holds the md5 state per connection */
|
||||
static void
|
||||
tcp_md5_conn_info_free(struct tcp_md5_conn_info *info)
|
||||
{
|
||||
mem_free(info);
|
||||
}
|
||||
|
||||
/* A pcb is about to be destroyed. Free its extdata */
|
||||
static void
|
||||
tcp_md5_extarg_destroy(u8_t id, void *data)
|
||||
{
|
||||
struct tcp_md5_conn_info *iter;
|
||||
|
||||
LWIP_ASSERT("tcp_md5_extarg_id != LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID",
|
||||
tcp_md5_extarg_id != LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID);
|
||||
LWIP_ASSERT("id == tcp_md5_extarg_id", id == tcp_md5_extarg_id);
|
||||
LWIP_UNUSED_ARG(id);
|
||||
|
||||
iter = (struct tcp_md5_conn_info *)data;
|
||||
while (iter != NULL) {
|
||||
struct tcp_md5_conn_info *info = iter;
|
||||
iter = iter->next;
|
||||
tcp_md5_conn_info_free(info);
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to find an md5 connection info for the specified remote connection */
|
||||
static struct tcp_md5_conn_info *
|
||||
tcp_md5_get_info(const struct tcp_pcb *pcb, const ip_addr_t *remote_ip, u16_t remote_port)
|
||||
{
|
||||
if (pcb != NULL) {
|
||||
struct tcp_md5_conn_info *info = (struct tcp_md5_conn_info *)tcp_ext_arg_get(pcb, tcp_md5_extarg_id);
|
||||
while (info != NULL) {
|
||||
if (ip_addr_cmp(&info->remote_addr, remote_ip)) {
|
||||
if (info->remote_port == remote_port) {
|
||||
return info;
|
||||
}
|
||||
}
|
||||
info = info->next;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Passive open: copy md5 connection info from listen pcb to connection pcb
|
||||
* or return error (connection will be closed)
|
||||
*/
|
||||
static err_t
|
||||
tcp_md5_extarg_passive_open(u8_t id, struct tcp_pcb_listen *lpcb, struct tcp_pcb *cpcb)
|
||||
{
|
||||
struct tcp_md5_conn_info *iter;
|
||||
|
||||
LWIP_ASSERT("lpcb != NULL", lpcb != NULL);
|
||||
LWIP_ASSERT("cpcb != NULL", cpcb != NULL);
|
||||
LWIP_ASSERT("tcp_md5_extarg_id != LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID",
|
||||
tcp_md5_extarg_id != LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID);
|
||||
LWIP_ASSERT("id == tcp_md5_extarg_id", id == tcp_md5_extarg_id);
|
||||
LWIP_UNUSED_ARG(id);
|
||||
|
||||
iter = (struct tcp_md5_conn_info *)tcp_ext_arg_get((struct tcp_pcb *)lpcb, id);
|
||||
while (iter != NULL) {
|
||||
if (iter->remote_port == cpcb->remote_port) {
|
||||
if (ip_addr_cmp(&iter->remote_addr, &cpcb->remote_ip)) {
|
||||
struct tcp_md5_conn_info *info = tcp_md5_conn_info_alloc();
|
||||
if (info != NULL) {
|
||||
memcpy(info, iter, sizeof(struct tcp_md5_conn_info));
|
||||
tcp_ext_arg_set(cpcb, id, info);
|
||||
tcp_ext_arg_set_callbacks(cpcb, id, &tcp_md5_ext_arg_callbacks);
|
||||
return ERR_OK;
|
||||
} else {
|
||||
return ERR_MEM;
|
||||
}
|
||||
}
|
||||
}
|
||||
iter = iter->next;
|
||||
}
|
||||
/* remote connection not found */
|
||||
return ERR_VAL;
|
||||
}
|
||||
|
||||
/* Parse tcp header options and return 1 if an md5 signature option was found */
|
||||
static int
|
||||
tcp_md5_parseopt(const u8_t *opts, u16_t optlen, u8_t *md5_digest_out)
|
||||
{
|
||||
u8_t data;
|
||||
u16_t optidx;
|
||||
|
||||
/* Parse the TCP MSS option, if present. */
|
||||
if (optlen != 0) {
|
||||
for (optidx = 0; optidx < optlen; ) {
|
||||
u8_t opt = opts[optidx++];
|
||||
switch (opt) {
|
||||
case LWIP_TCP_OPT_EOL:
|
||||
/* End of options. */
|
||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n"));
|
||||
return 0;
|
||||
case LWIP_TCP_OPT_NOP:
|
||||
/* NOP option. */
|
||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n"));
|
||||
break;
|
||||
case LWIP_TCP_OPT_MD5:
|
||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MD5\n"));
|
||||
if (opts[optidx++] != LWIP_TCP_OPT_LEN_MD5 || (optidx - 2 + LWIP_TCP_OPT_LEN_MD5) > optlen) {
|
||||
/* Bad length */
|
||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n"));
|
||||
return 0;
|
||||
}
|
||||
/* An MD5 option with the right option length. */
|
||||
memcpy(md5_digest_out, &opts[optidx], LWIP_TCP_MD5_DIGEST_LEN);
|
||||
/* no need to process the options further */
|
||||
return 1;
|
||||
break;
|
||||
default:
|
||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n"));
|
||||
data = opts[optidx++];
|
||||
if (data < 2) {
|
||||
LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n"));
|
||||
/* If the length field is zero, the options are malformed
|
||||
and we don't process them further. */
|
||||
return 0;
|
||||
}
|
||||
/* All other options have a length field, so that we easily
|
||||
can skip past them. */
|
||||
optidx += data - 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Get tcp options into contiguous memory. May be required if input pbufs
|
||||
* are chained.
|
||||
*/
|
||||
static const u8_t*
|
||||
tcp_md5_options_singlebuf(struct tcp_hdr *hdr, u16_t optlen, u16_t opt1len, u8_t *opt2)
|
||||
{
|
||||
const u8_t *opts;
|
||||
LWIP_ASSERT("hdr != NULL", hdr != NULL);
|
||||
LWIP_ASSERT("optlen >= opt1len", optlen >= opt1len);
|
||||
opts = (const u8_t *)hdr + TCP_HLEN;
|
||||
if (optlen == opt1len) {
|
||||
/* arleady in one piece */
|
||||
return opts;
|
||||
}
|
||||
if (optlen > sizeof(tcp_md5_opts_buf)) {
|
||||
/* options too long */
|
||||
return NULL;
|
||||
}
|
||||
LWIP_ASSERT("opt2 != NULL", opt2 != NULL);
|
||||
/* copy first part */
|
||||
memcpy(tcp_md5_opts_buf, opts, opt1len);
|
||||
/* copy second part */
|
||||
memcpy(&tcp_md5_opts_buf[opt1len], opt2, optlen - opt1len);
|
||||
return tcp_md5_opts_buf;
|
||||
}
|
||||
|
||||
/* Create the md5 digest for a given segment */
|
||||
static int
|
||||
tcp_md5_create_digest(const ip_addr_t *ip_src, const ip_addr_t *ip_dst, const struct tcp_hdr *hdr,
|
||||
const u8_t *key, size_t key_len, u8_t *digest_out, struct pbuf *p)
|
||||
{
|
||||
md5_context ctx;
|
||||
u8_t tmp8;
|
||||
u16_t tmp16;
|
||||
const size_t addr_len = IP_ADDR_RAW_SIZE(*ip_src);
|
||||
|
||||
if (p != NULL) {
|
||||
LWIP_ASSERT("pbuf must not point to tcp header here!", (const void *)hdr != p->payload);
|
||||
}
|
||||
|
||||
/* Generate the hash, using MD5. */
|
||||
md5_starts(&ctx);
|
||||
/* 1. the TCP pseudo-header (in the order: source IP address,
|
||||
destination IP address, zero-padded protocol number, and
|
||||
segment length) */
|
||||
md5_update(&ctx, (const unsigned char*)ip_src, addr_len);
|
||||
md5_update(&ctx, (const unsigned char*)ip_dst, addr_len);
|
||||
tmp8 = 0; /* zero-padded */
|
||||
md5_update(&ctx, &tmp8, 1);
|
||||
tmp8 = IP_PROTO_TCP;
|
||||
md5_update(&ctx, &tmp8, 1);
|
||||
tmp16 = lwip_htons(TCPH_HDRLEN_BYTES(hdr) + (p ? p->tot_len : 0));
|
||||
md5_update(&ctx, (const unsigned char*)&tmp16, 2);
|
||||
/* 2. the TCP header, excluding options, and assuming a checksum of
|
||||
zero */
|
||||
md5_update(&ctx, (const unsigned char*)hdr, sizeof(struct tcp_hdr));
|
||||
/* 3. the TCP segment data (if any) */
|
||||
if ((p != NULL) && (p->tot_len != 0)) {
|
||||
struct pbuf *q;
|
||||
for (q = p; q != NULL; q = q->next) {
|
||||
md5_update(&ctx, (const unsigned char*)q->payload, q->len);
|
||||
}
|
||||
}
|
||||
/* 4. an independently-specified key or password, known to both TCPs
|
||||
and presumably connection-specific */
|
||||
md5_update(&ctx, key, key_len);
|
||||
|
||||
md5_finish(&ctx, digest_out);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Duplicate a tcp header and make sure the fields are in network byte order */
|
||||
static void
|
||||
tcp_md5_dup_tcphdr(struct tcp_hdr *tcphdr_copy, const struct tcp_hdr *tcphdr_in, int tcphdr_in_is_host_order)
|
||||
{
|
||||
memcpy(tcphdr_copy, tcphdr_in, sizeof(struct tcp_hdr));
|
||||
tcphdr_copy->chksum = 0; /* checksum is zero for the pseudo header */
|
||||
if (tcphdr_in_is_host_order) {
|
||||
/* lwIP writes the TCP header values back to the buffer, we need to invert that here: */
|
||||
tcphdr_copy->src = lwip_htons(tcphdr_copy->src);
|
||||
tcphdr_copy->dest = lwip_htons(tcphdr_copy->dest);
|
||||
tcphdr_copy->seqno = lwip_htonl(tcphdr_copy->seqno);
|
||||
tcphdr_copy->ackno = lwip_htonl(tcphdr_copy->ackno);
|
||||
tcphdr_copy->wnd = lwip_htons(tcphdr_copy->wnd);
|
||||
tcphdr_copy->urgp = lwip_htons(tcphdr_copy->urgp);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if md5 is enabled on a given pcb */
|
||||
static int
|
||||
tcp_md5_is_enabled_on_pcb(const struct tcp_pcb *pcb)
|
||||
{
|
||||
if (tcp_md5_extarg_id != LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID) {
|
||||
struct tcp_md5_conn_info *info = (struct tcp_md5_conn_info *)tcp_ext_arg_get(pcb, tcp_md5_extarg_id);
|
||||
if (info != NULL) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check if md5 is enabled on a given listen pcb */
|
||||
static int
|
||||
tcp_md5_is_enabled_on_lpcb(const struct tcp_pcb_listen *lpcb)
|
||||
{
|
||||
/* same as for connection pcbs */
|
||||
return tcp_md5_is_enabled_on_pcb((const struct tcp_pcb *)lpcb);
|
||||
}
|
||||
|
||||
/* Hook implementation for LWIP_HOOK_TCP_OPT_LENGTH_SEGMENT */
|
||||
u8_t
|
||||
tcp_md5_get_additional_option_length(const struct tcp_pcb *pcb, u8_t internal_option_length)
|
||||
{
|
||||
if ((pcb != NULL) && tcp_md5_is_enabled_on_pcb(pcb)) {
|
||||
u8_t new_option_length = internal_option_length + LWIP_TCP_OPT_LEN_MD5_OUT;
|
||||
LWIP_ASSERT("overflow", new_option_length > internal_option_length);
|
||||
LWIP_ASSERT("options too long", new_option_length <= TCP_MAX_OPTION_BYTES);
|
||||
return new_option_length;
|
||||
}
|
||||
return internal_option_length;
|
||||
}
|
||||
|
||||
/* Hook implementation for LWIP_HOOK_TCP_INPACKET_PCB when called for listen pcbs */
|
||||
static err_t
|
||||
tcp_md5_check_listen(struct tcp_pcb_listen* lpcb, struct tcp_hdr *hdr, u16_t optlen, u16_t opt1len, u8_t *opt2)
|
||||
{
|
||||
LWIP_ASSERT("lpcb != NULL", lpcb != NULL);
|
||||
|
||||
if (tcp_md5_is_enabled_on_lpcb(lpcb)) {
|
||||
const u8_t *opts;
|
||||
u8_t digest_received[LWIP_TCP_MD5_DIGEST_LEN];
|
||||
u8_t digest_calculated[LWIP_TCP_MD5_DIGEST_LEN];
|
||||
const struct tcp_md5_conn_info *info = tcp_md5_get_info((struct tcp_pcb *)lpcb, ip_current_src_addr(), hdr->src);
|
||||
if (info != NULL) {
|
||||
opts = tcp_md5_options_singlebuf(hdr, optlen, opt1len, opt2);
|
||||
if (opts != NULL) {
|
||||
if (tcp_md5_parseopt(opts, optlen, digest_received)) {
|
||||
struct tcp_hdr tcphdr_copy;
|
||||
tcp_md5_dup_tcphdr(&tcphdr_copy, hdr, 1);
|
||||
if (tcp_md5_create_digest(ip_current_src_addr(), ip_current_dest_addr(), &tcphdr_copy, info->key, info->key_len, digest_calculated, NULL)) {
|
||||
/* everything set up, compare the digests */
|
||||
if (!memcmp(digest_received, digest_calculated, LWIP_TCP_MD5_DIGEST_LEN)) {
|
||||
/* equal */
|
||||
return ERR_OK;
|
||||
}
|
||||
/* not equal */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* md5 enabled on this pcb but no match or other error -> fail */
|
||||
return ERR_VAL;
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/* Hook implementation for LWIP_HOOK_TCP_INPACKET_PCB */
|
||||
err_t
|
||||
tcp_md5_check_inpacket(struct tcp_pcb* pcb, struct tcp_hdr *hdr, u16_t optlen, u16_t opt1len, u8_t *opt2, struct pbuf *p)
|
||||
{
|
||||
LWIP_ASSERT("pcb != NULL", pcb != NULL);
|
||||
|
||||
if (pcb->state == LISTEN) {
|
||||
return tcp_md5_check_listen((struct tcp_pcb_listen *)pcb, hdr, optlen, opt1len, opt2);
|
||||
}
|
||||
|
||||
if (tcp_md5_is_enabled_on_pcb(pcb)) {
|
||||
const struct tcp_md5_conn_info *info = tcp_md5_get_info(pcb, ip_current_src_addr(), hdr->src);
|
||||
if (info != NULL) {
|
||||
const u8_t *opts;
|
||||
u8_t digest_received[LWIP_TCP_MD5_DIGEST_LEN];
|
||||
u8_t digest_calculated[LWIP_TCP_MD5_DIGEST_LEN];
|
||||
opts = tcp_md5_options_singlebuf(hdr, optlen, opt1len, opt2);
|
||||
if (opts != NULL) {
|
||||
if (tcp_md5_parseopt(opts, optlen, digest_received)) {
|
||||
struct tcp_hdr hdr_copy;
|
||||
tcp_md5_dup_tcphdr(&hdr_copy, hdr, 1);
|
||||
if (tcp_md5_create_digest(&pcb->remote_ip, &pcb->local_ip, &hdr_copy, info->key, info->key_len, digest_calculated, p)) {
|
||||
/* everything set up, compare the digests */
|
||||
if (!memcmp(digest_received, digest_calculated, LWIP_TCP_MD5_DIGEST_LEN)) {
|
||||
/* equal */
|
||||
return ERR_OK;
|
||||
}
|
||||
/* not equal */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* md5 enabled on this pcb but no match or other error -> fail */
|
||||
return ERR_VAL;
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/* Hook implementation for LWIP_HOOK_TCP_ADD_TX_OPTIONS */
|
||||
u32_t *
|
||||
tcp_md5_add_tx_options(struct pbuf *p, struct tcp_hdr *hdr, const struct tcp_pcb *pcb, u32_t *opts)
|
||||
{
|
||||
LWIP_ASSERT("p != NULL", p != NULL);
|
||||
LWIP_ASSERT("hdr != NULL", hdr != NULL);
|
||||
LWIP_ASSERT("pcb != NULL", pcb != NULL);
|
||||
LWIP_ASSERT("opts != NULL", opts != NULL);
|
||||
|
||||
if (tcp_md5_is_enabled_on_pcb(pcb)) {
|
||||
u8_t digest_calculated[LWIP_TCP_MD5_DIGEST_LEN];
|
||||
u32_t *opts_ret = opts + 5; /* we use 20 bytes: 2 bytes padding + 18 bytes for this option */
|
||||
u8_t *ptr = (u8_t*)opts;
|
||||
|
||||
const struct tcp_md5_conn_info *info = tcp_md5_get_info(pcb, &pcb->remote_ip, pcb->remote_port);
|
||||
if (info != NULL) {
|
||||
struct tcp_hdr hdr_copy;
|
||||
size_t hdrsize = TCPH_HDRLEN_BYTES(hdr);
|
||||
tcp_md5_dup_tcphdr(&hdr_copy, hdr, 0);
|
||||
/* p->payload points to the tcp header */
|
||||
LWIP_ASSERT("p->payload == hdr", p->payload == hdr);
|
||||
if (!pbuf_remove_header(p, hdrsize)) {
|
||||
u8_t ret;
|
||||
if (!tcp_md5_create_digest(&pcb->local_ip, &pcb->remote_ip, &hdr_copy, info->key, info->key_len, digest_calculated, p)) {
|
||||
info = NULL;
|
||||
}
|
||||
ret = pbuf_add_header_force(p, hdrsize);
|
||||
LWIP_ASSERT("tcp_md5_add_tx_options: pbuf_add_header_force failed", !ret);
|
||||
LWIP_UNUSED_ARG(ret);
|
||||
} else {
|
||||
LWIP_ASSERT("error", 0);
|
||||
}
|
||||
}
|
||||
if (info == NULL) {
|
||||
/* create an invalid signature by zeroing the digest */
|
||||
memset(&digest_calculated, 0, sizeof(digest_calculated));
|
||||
}
|
||||
|
||||
*ptr++ = LWIP_TCP_OPT_NOP;
|
||||
*ptr++ = LWIP_TCP_OPT_NOP;
|
||||
*ptr++ = LWIP_TCP_OPT_MD5;
|
||||
*ptr++ = LWIP_TCP_OPT_LEN_MD5;
|
||||
memcpy(ptr, digest_calculated, LWIP_TCP_MD5_DIGEST_LEN);
|
||||
ptr += LWIP_TCP_MD5_DIGEST_LEN;
|
||||
LWIP_ASSERT("ptr == opts_ret", ptr == (u8_t *)opts_ret);
|
||||
return opts_ret;
|
||||
}
|
||||
return opts;
|
||||
}
|
||||
|
||||
/* Hook implementation for LWIP_HOOK_SOCKETS_SETSOCKOPT */
|
||||
int
|
||||
tcp_md5_setsockopt_hook(struct lwip_sock *sock, int level, int optname, const void *optval, socklen_t optlen, int *err)
|
||||
{
|
||||
LWIP_ASSERT("sock != NULL", sock != NULL);
|
||||
LWIP_ASSERT("err != NULL", err != NULL);
|
||||
|
||||
if ((level == IPPROTO_TCP) && (optname == TCP_MD5SIG)) {
|
||||
const struct tcp_md5sig *md5 = (const struct tcp_md5sig*)optval;
|
||||
if ((optval == NULL) || (optlen < sizeof(struct tcp_md5sig))) {
|
||||
*err = EINVAL;
|
||||
} else {
|
||||
if (sock->conn && (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) && (sock->conn->pcb.tcp != NULL)) {
|
||||
if (tcp_md5_extarg_id == LWIP_TCP_PCB_NUM_EXT_ARG_ID_INVALID) {
|
||||
/* not initialized */
|
||||
*err = EINVAL;
|
||||
} else {
|
||||
struct tcp_md5_conn_info *info = tcp_md5_conn_info_alloc();
|
||||
if (info == NULL) {
|
||||
*err = ENOMEM;
|
||||
} else {
|
||||
int addr_valid = 0;
|
||||
/* OK, fill and link this request */
|
||||
memcpy(info->key, md5->tcpm_key, TCP_MD5SIG_MAXKEYLEN);
|
||||
info->key_len = md5->tcpm_keylen;
|
||||
memset(&info->remote_addr, 0, sizeof(info->remote_addr));
|
||||
if (md5->tcpm_addr.ss_family == AF_INET) {
|
||||
#if LWIP_IPV4
|
||||
const struct sockaddr_in *sin = (const struct sockaddr_in *)&md5->tcpm_addr;
|
||||
memcpy(&info->remote_addr, &sin->sin_addr, sizeof(sin->sin_addr));
|
||||
IP_SET_TYPE_VAL(info->remote_addr, IPADDR_TYPE_V4);
|
||||
info->remote_port = lwip_htons(sin->sin_port);
|
||||
addr_valid = 1;
|
||||
#endif /* LWIP_IPV4 */
|
||||
} else if (md5->tcpm_addr.ss_family == AF_INET6) {
|
||||
#if LWIP_IPV6
|
||||
const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)&md5->tcpm_addr;
|
||||
memcpy(&info->remote_addr, &sin6->sin6_addr, sizeof(sin6->sin6_addr));
|
||||
IP_SET_TYPE_VAL(info->remote_addr, IPADDR_TYPE_V6);
|
||||
info->remote_port = lwip_htons(sin6->sin6_port);
|
||||
addr_valid = 1;
|
||||
#endif /* LWIP_IPV6 */
|
||||
}
|
||||
if (addr_valid) {
|
||||
/* store it */
|
||||
tcp_ext_arg_set_callbacks(sock->conn->pcb.tcp, tcp_md5_extarg_id, &tcp_md5_ext_arg_callbacks);
|
||||
info->next = (struct tcp_md5_conn_info *)tcp_ext_arg_get(sock->conn->pcb.tcp, tcp_md5_extarg_id);
|
||||
tcp_ext_arg_set(sock->conn->pcb.tcp, tcp_md5_extarg_id, info);
|
||||
} else {
|
||||
*err = EINVAL;
|
||||
tcp_md5_conn_info_free(info);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* not a tcp netconn */
|
||||
*err = EINVAL;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
84
contrib/addons/tcp_md5/tcp_md5.h
Normal file
84
contrib/addons/tcp_md5/tcp_md5.h
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2018 Simon Goldschmidt
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* Author: Simon Goldschmidt <goldsimon@gmx.de>
|
||||
*
|
||||
* To use the hooks in this file, make sure this file is included in LWIP_HOOK_FILENAME
|
||||
* and define these hooks:
|
||||
*
|
||||
* #define LWIP_HOOK_TCP_INPACKET_PCB(pcb, hdr, optlen, opt1len, opt2, p) tcp_md5_check_inpacket(pcb, hdr, optlen, opt1len, opt2, p)
|
||||
* #define LWIP_HOOK_TCP_OPT_LENGTH_SEGMENT(pcb, internal_len) tcp_md5_get_additional_option_length(pcb, internal_len)
|
||||
* #define LWIP_HOOK_TCP_ADD_TX_OPTIONS(p, hdr, pcb, opts) tcp_md5_add_tx_options(p, hdr, pcb, opts)
|
||||
*
|
||||
* #define LWIP_HOOK_SOCKETS_SETSOCKOPT(s, sock, level, optname, optval, optlen, err) tcp_md5_setsockopt_hook(sock, level, optname, optval, optlen, err)
|
||||
*/
|
||||
|
||||
#ifndef LWIP_HDR_CONTRIB_ADDONS_TCP_MD5_H
|
||||
#define LWIP_HDR_CONTRIB_ADDONS_TCP_MD5_H
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "lwip/err.h"
|
||||
|
||||
#include "lwip/priv/sockets_priv.h"
|
||||
#include "lwip/priv/tcp_priv.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* setsockopt definitions and structs: */
|
||||
|
||||
/* This is the optname (for level = IPPROTO_TCP) */
|
||||
#ifndef TCP_MD5SIG
|
||||
#define TCP_MD5SIG 14
|
||||
#endif
|
||||
|
||||
#define TCP_MD5SIG_MAXKEYLEN 80
|
||||
|
||||
/* This is the optval type */
|
||||
struct tcp_md5sig {
|
||||
struct sockaddr_storage tcpm_addr;
|
||||
u16_t __tcpm_pad1;
|
||||
u16_t tcpm_keylen;
|
||||
u32_t __tcpm_pad2;
|
||||
u8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
|
||||
};
|
||||
|
||||
/* socket setsockopt hook: */
|
||||
int tcp_md5_setsockopt_hook(struct lwip_sock *sock, int level, int optname, const void *optval, u32_t optlen, int *err);
|
||||
|
||||
/* Internal hook functions */
|
||||
void tcp_md5_init(void);
|
||||
err_t tcp_md5_check_inpacket(struct tcp_pcb* pcb, struct tcp_hdr *hdr, u16_t optlen, u16_t opt1len, u8_t *opt2, struct pbuf *p);
|
||||
u8_t tcp_md5_get_additional_option_length(const struct tcp_pcb *pcb, u8_t internal_option_length);
|
||||
u32_t *tcp_md5_add_tx_options(struct pbuf *p, struct tcp_hdr *hdr, const struct tcp_pcb *pcb, u32_t *opts);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* LWIP_HDR_CONTRIB_ADDONS_TCP_MD5_H */
|
@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CCodeGeneration</RootNamespace>
|
||||
<AssemblyName>CCodeGeneration</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CFile.cs" />
|
||||
<Compile Include="Code.cs" />
|
||||
<Compile Include="CodeContainerBase.cs" />
|
||||
<Compile Include="CodeElement.cs" />
|
||||
<Compile Include="Comment.cs" />
|
||||
<Compile Include="EmptyLine.cs" />
|
||||
<Compile Include="Function.cs" />
|
||||
<Compile Include="CGenerator.cs" />
|
||||
<Compile Include="IfThenElse.cs" />
|
||||
<Compile Include="PlainText.cs" />
|
||||
<Compile Include="Switch.cs" />
|
||||
<Compile Include="PP_If.cs" />
|
||||
<Compile Include="PP_Ifdef.cs" />
|
||||
<Compile Include="PP_Include.cs" />
|
||||
<Compile Include="FunctionDeclaration.cs" />
|
||||
<Compile Include="PP_Macro.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="VariableDeclaration.cs" />
|
||||
<Compile Include="VariablePrototype.cs" />
|
||||
<Compile Include="VariableType.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
54
contrib/apps/LwipMibCompiler/CCodeGeneration/CFile.cs
Normal file
54
contrib/apps/LwipMibCompiler/CCodeGeneration/CFile.cs
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class CFile: CodeContainerBase
|
||||
{
|
||||
public CFile()
|
||||
{
|
||||
base.IncreaseLevel = false;
|
||||
}
|
||||
|
||||
public void Save(CGenerator generator)
|
||||
{
|
||||
if (generator == null)
|
||||
{
|
||||
throw new ArgumentNullException("generator");
|
||||
}
|
||||
|
||||
this.GenerateCode(0, generator);
|
||||
}
|
||||
}
|
||||
}
|
119
contrib/apps/LwipMibCompiler/CCodeGeneration/CGenerator.cs
Normal file
119
contrib/apps/LwipMibCompiler/CCodeGeneration/CGenerator.cs
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class CGenerator
|
||||
{
|
||||
public TextWriter OutputStream { get; private set; }
|
||||
public string File { get; private set; }
|
||||
public uint IndentCount { get; private set; }
|
||||
public string IndentChar { get; private set; }
|
||||
public string NewLine { get; private set; }
|
||||
|
||||
public CGenerator(System.IO.TextWriter outputStream, string file, uint indentCount, string indentChar, string newLine)
|
||||
{
|
||||
this.OutputStream = outputStream;
|
||||
this.File = file;
|
||||
this.IndentCount = indentCount;
|
||||
this.IndentChar = indentChar;
|
||||
this.NewLine = newLine;
|
||||
}
|
||||
|
||||
public string FileName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.File))
|
||||
{
|
||||
return Path.GetFileName(this.File);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void WriteSequence(string value, uint repetitions)
|
||||
{
|
||||
while (repetitions > 0)
|
||||
{
|
||||
this.OutputStream.Write(value);
|
||||
repetitions--;
|
||||
}
|
||||
}
|
||||
|
||||
public void IndentLine(int level)
|
||||
{
|
||||
while (level > 0)
|
||||
{
|
||||
WriteSequence(this.IndentChar, this.IndentCount);
|
||||
level--;
|
||||
}
|
||||
}
|
||||
|
||||
public void WriteNewLine()
|
||||
{
|
||||
this.OutputStream.Write(this.NewLine);
|
||||
}
|
||||
|
||||
public void WriteMultilineString(string value, int level = 0)
|
||||
{
|
||||
if (String.IsNullOrEmpty(value))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// only \n and \r\n are recognized as linebreaks
|
||||
string[] lines = value.Split(new char[] { '\n' }, StringSplitOptions.None);
|
||||
|
||||
for (int l = 0; l < (lines.Length - 1); l++)
|
||||
{
|
||||
if (lines[l].EndsWith("\r"))
|
||||
{
|
||||
this.OutputStream.Write(lines[l].Substring(0, lines[l].Length-1));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.OutputStream.Write(lines[l]);
|
||||
}
|
||||
|
||||
this.WriteNewLine();
|
||||
this.IndentLine(level);
|
||||
}
|
||||
|
||||
this.OutputStream.Write(lines[lines.Length - 1]);
|
||||
}
|
||||
}
|
||||
}
|
56
contrib/apps/LwipMibCompiler/CCodeGeneration/Code.cs
Normal file
56
contrib/apps/LwipMibCompiler/CCodeGeneration/Code.cs
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class Code: CodeElement
|
||||
{
|
||||
public string Code_ { get; set; }
|
||||
|
||||
public Code()
|
||||
{
|
||||
}
|
||||
|
||||
public Code(string code)
|
||||
{
|
||||
this.Code_ = code;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
generator.WriteMultilineString(this.Code_, level);
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,139 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class CodeContainerBase: CodeElement
|
||||
{
|
||||
private readonly List<CodeElement> declarations = new List<CodeElement>();
|
||||
private readonly List<CodeElement> innerElements = new List<CodeElement>();
|
||||
private bool increaseLevel = true;
|
||||
|
||||
public List<CodeElement> Declarations
|
||||
{
|
||||
get { return this.declarations; }
|
||||
}
|
||||
|
||||
public List<CodeElement> InnerElements
|
||||
{
|
||||
get { return this.innerElements; }
|
||||
}
|
||||
|
||||
protected bool IncreaseLevel
|
||||
{
|
||||
get { return this.increaseLevel; }
|
||||
set { this.increaseLevel = value; }
|
||||
}
|
||||
|
||||
public void AddElements(IList<CodeElement> elements, params CodeElement[] spacerElements)
|
||||
{
|
||||
if (elements != null)
|
||||
{
|
||||
if ((spacerElements == null) || (spacerElements.Length == 0))
|
||||
{
|
||||
this.innerElements.AddRange(elements);
|
||||
}
|
||||
else
|
||||
{
|
||||
bool spacerAdded = false;
|
||||
|
||||
foreach (CodeElement element in elements)
|
||||
{
|
||||
this.innerElements.Add(element);
|
||||
this.innerElements.AddRange(spacerElements);
|
||||
spacerAdded = true;
|
||||
}
|
||||
|
||||
if (spacerAdded)
|
||||
{
|
||||
// remove last spacer again
|
||||
this.innerElements.RemoveRange(this.innerElements.Count - spacerElements.Length, spacerElements.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CodeElement AddElement(CodeElement element)
|
||||
{
|
||||
if (element != null)
|
||||
{
|
||||
this.innerElements.Add(element);
|
||||
}
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
public Code AddCode(string code)
|
||||
{
|
||||
return this.AddElement(new Code(code)) as Code;
|
||||
}
|
||||
|
||||
public Code AddCodeFormat(string codeFormat, params object[] args)
|
||||
{
|
||||
return this.AddElement(new Code(String.Format(codeFormat, args))) as Code;
|
||||
}
|
||||
|
||||
public CodeElement AddDeclaration(CodeElement declaration)
|
||||
{
|
||||
if (declaration != null)
|
||||
{
|
||||
this.declarations.Add(declaration);
|
||||
}
|
||||
|
||||
return declaration;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (this.increaseLevel)
|
||||
level++;
|
||||
|
||||
if (this.declarations.Count > 0)
|
||||
{
|
||||
foreach (CodeElement element in this.declarations)
|
||||
{
|
||||
element.GenerateCode(level, generator);
|
||||
}
|
||||
|
||||
EmptyLine.SingleLine.GenerateCode(level, generator);
|
||||
}
|
||||
|
||||
foreach (CodeElement element in this.innerElements)
|
||||
{
|
||||
element.GenerateCode(level, generator);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
41
contrib/apps/LwipMibCompiler/CCodeGeneration/CodeElement.cs
Normal file
41
contrib/apps/LwipMibCompiler/CCodeGeneration/CodeElement.cs
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class CodeElement
|
||||
{
|
||||
public virtual void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
75
contrib/apps/LwipMibCompiler/CCodeGeneration/Comment.cs
Normal file
75
contrib/apps/LwipMibCompiler/CCodeGeneration/Comment.cs
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class Comment: CodeElement
|
||||
{
|
||||
public const string CommentStart = "/*";
|
||||
public const string CommentEnd = "*/";
|
||||
|
||||
public string Comment_ { get; set; }
|
||||
public bool SingleLine { get; set; }
|
||||
|
||||
public Comment()
|
||||
{
|
||||
}
|
||||
|
||||
public Comment(string comment, bool singleLine = false)
|
||||
{
|
||||
this.Comment_ = comment;
|
||||
this.SingleLine = singleLine;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write(CommentStart);
|
||||
|
||||
if (!this.SingleLine)
|
||||
{
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
generator.WriteMultilineString(this.Comment_, level);
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
}
|
||||
else
|
||||
{
|
||||
generator.OutputStream.Write(" " + Comment_ + " ");
|
||||
}
|
||||
|
||||
generator.OutputStream.Write(CommentEnd);
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
64
contrib/apps/LwipMibCompiler/CCodeGeneration/EmptyLine.cs
Normal file
64
contrib/apps/LwipMibCompiler/CCodeGeneration/EmptyLine.cs
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class EmptyLine : CodeElement
|
||||
{
|
||||
public static readonly EmptyLine SingleLine = new EmptyLine();
|
||||
public static readonly EmptyLine TwoLines = new EmptyLine(2);
|
||||
public static readonly EmptyLine ThreeLines = new EmptyLine(3);
|
||||
|
||||
public uint Count { get; set; }
|
||||
|
||||
public EmptyLine()
|
||||
{
|
||||
this.Count = 1;
|
||||
}
|
||||
|
||||
public EmptyLine(uint count)
|
||||
{
|
||||
this.Count = count;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
uint c = this.Count;
|
||||
|
||||
while (c > 0)
|
||||
{
|
||||
generator.WriteNewLine();
|
||||
c--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
129
contrib/apps/LwipMibCompiler/CCodeGeneration/Function.cs
Normal file
129
contrib/apps/LwipMibCompiler/CCodeGeneration/Function.cs
Normal file
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class Function: CodeContainerBase
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public bool IsStatic { get; set; }
|
||||
|
||||
private readonly List<VariableType> parameter = new List<VariableType>();
|
||||
private VariableType returnType = VariableType.Void;
|
||||
|
||||
public Function()
|
||||
{
|
||||
}
|
||||
|
||||
public Function(string name, bool isStatic = false)
|
||||
{
|
||||
this.Name = name;
|
||||
this.IsStatic = isStatic;
|
||||
}
|
||||
|
||||
public List<VariableType> Parameter
|
||||
{
|
||||
get { return this.parameter; }
|
||||
}
|
||||
|
||||
public VariableType ReturnType
|
||||
{
|
||||
get { return this.returnType; }
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException("ReturnValue");
|
||||
}
|
||||
this.returnType = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static Function FromDeclaration(FunctionDeclaration decl)
|
||||
{
|
||||
Function result = new Function(decl.Name, decl.IsStatic);
|
||||
result.ReturnType = decl.ReturnType.Clone() as VariableType;
|
||||
|
||||
foreach (VariableType param in decl.Parameter)
|
||||
{
|
||||
result.parameter.Add(param.Clone() as VariableType);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
|
||||
if (this.IsStatic)
|
||||
{
|
||||
generator.OutputStream.Write("static ");
|
||||
}
|
||||
|
||||
this.returnType.GenerateCode(generator);
|
||||
generator.OutputStream.Write(" " + this.Name + "(");
|
||||
|
||||
if (this.Parameter.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < this.parameter.Count; i++)
|
||||
{
|
||||
this.parameter[i].GenerateCode(generator);
|
||||
|
||||
if (i < (this.parameter.Count - 1))
|
||||
{
|
||||
generator.OutputStream.Write(", ");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
generator.OutputStream.Write("void");
|
||||
}
|
||||
|
||||
generator.OutputStream.Write(")");
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("{");
|
||||
generator.WriteNewLine();
|
||||
|
||||
base.GenerateCode(level, generator);
|
||||
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("}");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class FunctionDeclaration: CodeElement
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public bool IsStatic { get; set; }
|
||||
public bool IsExtern { get; set; }
|
||||
|
||||
private readonly List<VariableType> parameter = new List<VariableType>();
|
||||
private VariableType returnType = VariableType.Void;
|
||||
|
||||
public FunctionDeclaration()
|
||||
{
|
||||
}
|
||||
|
||||
public FunctionDeclaration(string name, bool isStatic = false, bool isExtern = false)
|
||||
{
|
||||
this.Name = name;
|
||||
this.IsStatic = isStatic;
|
||||
this.IsExtern = isExtern;
|
||||
}
|
||||
|
||||
public List<VariableType> Parameter
|
||||
{
|
||||
get { return this.parameter; }
|
||||
}
|
||||
|
||||
public VariableType ReturnType
|
||||
{
|
||||
get { return this.returnType; }
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException("ReturnValue");
|
||||
}
|
||||
this.returnType = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
|
||||
if (this.IsExtern)
|
||||
{
|
||||
generator.OutputStream.Write("extern ");
|
||||
}
|
||||
|
||||
if (this.IsStatic)
|
||||
{
|
||||
generator.OutputStream.Write("static ");
|
||||
}
|
||||
|
||||
this.returnType.GenerateCode(generator);
|
||||
generator.OutputStream.Write(" " + this.Name + "(");
|
||||
|
||||
if (this.Parameter.Count > 0)
|
||||
{
|
||||
for (int i = 0; i < this.parameter.Count; i++)
|
||||
{
|
||||
this.parameter[i].GenerateCode(generator);
|
||||
|
||||
if (i < (this.parameter.Count - 1))
|
||||
{
|
||||
generator.OutputStream.Write(", ");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
generator.OutputStream.Write("void");
|
||||
}
|
||||
|
||||
generator.OutputStream.Write(");");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
137
contrib/apps/LwipMibCompiler/CCodeGeneration/IfThenElse.cs
Normal file
137
contrib/apps/LwipMibCompiler/CCodeGeneration/IfThenElse.cs
Normal file
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class ElseIf : CodeContainerBase
|
||||
{
|
||||
public string Condition { get; set; }
|
||||
|
||||
public ElseIf()
|
||||
{
|
||||
}
|
||||
|
||||
public ElseIf(string condition)
|
||||
{
|
||||
this.Condition = condition;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Condition))
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write(String.Format("else if ({0})", this.Condition));
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("{");
|
||||
generator.WriteNewLine();
|
||||
|
||||
base.GenerateCode(level, generator);
|
||||
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("}");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class IfThenElse: CodeContainerBase
|
||||
{
|
||||
public string Condition { get; set; }
|
||||
|
||||
private List<ElseIf> elseIf = new List<ElseIf>();
|
||||
private CodeContainerBase else_ = new CodeContainerBase();
|
||||
|
||||
public IfThenElse()
|
||||
{
|
||||
}
|
||||
|
||||
public IfThenElse(string condition)
|
||||
{
|
||||
this.Condition = condition;
|
||||
}
|
||||
|
||||
public List<ElseIf> ElseIf
|
||||
{
|
||||
get { return this.elseIf; }
|
||||
}
|
||||
|
||||
public CodeContainerBase Else
|
||||
{
|
||||
get { return this.else_; }
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Condition))
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write(String.Format("if ({0})", this.Condition));
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("{");
|
||||
generator.WriteNewLine();
|
||||
|
||||
base.GenerateCode(level, generator);
|
||||
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("}");
|
||||
generator.WriteNewLine();
|
||||
|
||||
foreach (ElseIf elif in this.elseIf)
|
||||
{
|
||||
elif.GenerateCode(level, generator);
|
||||
}
|
||||
|
||||
if (this.else_.InnerElements.Count > 0)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("else");
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("{");
|
||||
generator.WriteNewLine();
|
||||
|
||||
this.else_.GenerateCode(level, generator);
|
||||
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("}");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
67
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_If.cs
Normal file
67
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_If.cs
Normal file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class PP_If: CodeContainerBase
|
||||
{
|
||||
public string Condition { get; set; }
|
||||
|
||||
public PP_If()
|
||||
{
|
||||
base.IncreaseLevel = false;
|
||||
}
|
||||
|
||||
public PP_If(string condition)
|
||||
: this()
|
||||
{
|
||||
this.Condition = condition;
|
||||
}
|
||||
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Condition))
|
||||
{
|
||||
generator.OutputStream.Write("#if " + this.Condition);
|
||||
generator.WriteNewLine();
|
||||
|
||||
base.GenerateCode(level, generator);
|
||||
|
||||
generator.OutputStream.Write("#endif /* " + this.Condition + " */");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
76
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_Ifdef.cs
Normal file
76
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_Ifdef.cs
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class PP_Ifdef: CodeContainerBase
|
||||
{
|
||||
public string Macro { get; set; }
|
||||
public bool Inverted { get; set; }
|
||||
|
||||
public PP_Ifdef()
|
||||
{
|
||||
base.IncreaseLevel = false;
|
||||
}
|
||||
|
||||
public PP_Ifdef(string macro, bool inverted = false)
|
||||
: this()
|
||||
{
|
||||
this.Macro = macro;
|
||||
this.Inverted = inverted;
|
||||
}
|
||||
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Macro))
|
||||
{
|
||||
if (this.Inverted)
|
||||
{
|
||||
generator.OutputStream.Write("#ifndef " + this.Macro);
|
||||
}
|
||||
else
|
||||
{
|
||||
generator.OutputStream.Write("#ifdef " + this.Macro);
|
||||
}
|
||||
generator.WriteNewLine();
|
||||
|
||||
base.GenerateCode(level, generator);
|
||||
|
||||
generator.OutputStream.Write("#endif /* " + this.Macro + " */");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
71
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_Include.cs
Normal file
71
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_Include.cs
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class PP_Include : CodeElement
|
||||
{
|
||||
public string File { get; set; }
|
||||
public bool IsLocal { get; set; }
|
||||
|
||||
public PP_Include()
|
||||
{
|
||||
this.IsLocal = true;
|
||||
}
|
||||
|
||||
public PP_Include(string file, bool isLocal = true)
|
||||
{
|
||||
this.File = file;
|
||||
this.IsLocal = isLocal;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.File))
|
||||
{
|
||||
// includes are never indented
|
||||
if (this.IsLocal)
|
||||
{
|
||||
generator.OutputStream.Write("#include \"" + this.File + "\"");
|
||||
}
|
||||
else
|
||||
{
|
||||
generator.OutputStream.Write("#include <" + this.File + ">");
|
||||
}
|
||||
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
59
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_Macro.cs
Normal file
59
contrib/apps/LwipMibCompiler/CCodeGeneration/PP_Macro.cs
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class PP_Macro: CodeElement
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Value { get; set; }
|
||||
|
||||
public PP_Macro()
|
||||
{
|
||||
}
|
||||
|
||||
public PP_Macro(string name, string value)
|
||||
{
|
||||
this.Name = name;
|
||||
this.Value = value;
|
||||
}
|
||||
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
// macros are not indented at all
|
||||
generator.OutputStream.Write("#define " + this.Name + " ");
|
||||
generator.WriteMultilineString(this.Value);
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
49
contrib/apps/LwipMibCompiler/CCodeGeneration/PlainText.cs
Normal file
49
contrib/apps/LwipMibCompiler/CCodeGeneration/PlainText.cs
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class PlainText : CodeElement
|
||||
{
|
||||
public string Value { get; set; }
|
||||
|
||||
public PlainText(string value)
|
||||
{
|
||||
this.Value = value;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
generator.WriteMultilineString(this.Value);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die mit einer Assembly verknüpft sind.
|
||||
[assembly: AssemblyTitle("CCodeGeneration")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CCodeGeneration")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
|
||||
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("8f07a0fa-86f4-48a0-97c7-f94fc5c3f103")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
146
contrib/apps/LwipMibCompiler/CCodeGeneration/Switch.cs
Normal file
146
contrib/apps/LwipMibCompiler/CCodeGeneration/Switch.cs
Normal file
@ -0,0 +1,146 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class SwitchCase : CodeContainerBase
|
||||
{
|
||||
public string Value { get; set; }
|
||||
|
||||
public SwitchCase()
|
||||
{
|
||||
}
|
||||
|
||||
public SwitchCase(string value)
|
||||
{
|
||||
this.Value = value;
|
||||
}
|
||||
|
||||
public bool IsDefault
|
||||
{
|
||||
get { return (this.Value.ToLowerInvariant() == "default"); }
|
||||
}
|
||||
|
||||
public static SwitchCase GenerateDefault()
|
||||
{
|
||||
return new SwitchCase("default");
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Value))
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
if (this.IsDefault)
|
||||
{
|
||||
generator.OutputStream.Write("default:");
|
||||
}
|
||||
else
|
||||
{
|
||||
generator.OutputStream.Write(String.Format("case {0}:", this.Value));
|
||||
}
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level + 1);
|
||||
generator.OutputStream.Write("{");
|
||||
generator.WriteNewLine();
|
||||
|
||||
base.GenerateCode(level + 1, generator);
|
||||
|
||||
generator.IndentLine(level + 1);
|
||||
generator.OutputStream.Write("}");
|
||||
generator.WriteNewLine();
|
||||
|
||||
generator.IndentLine(level + 1);
|
||||
generator.OutputStream.Write("break;");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Switch: CodeElement
|
||||
{
|
||||
public string SwitchVar { get; set; }
|
||||
|
||||
private List<SwitchCase> switches = new List<SwitchCase>();
|
||||
|
||||
public Switch()
|
||||
{
|
||||
}
|
||||
|
||||
public Switch(string switchVar)
|
||||
{
|
||||
this.SwitchVar = switchVar;
|
||||
}
|
||||
|
||||
public List<SwitchCase> Switches
|
||||
{
|
||||
get { return this.switches; }
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.SwitchVar))
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write(String.Format("switch ({0})", this.SwitchVar));
|
||||
generator.WriteNewLine();
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("{");
|
||||
generator.WriteNewLine();
|
||||
|
||||
SwitchCase defaultCase = null; // generate 'default' always as last case
|
||||
foreach (SwitchCase switchCase in this.switches)
|
||||
{
|
||||
if (switchCase.IsDefault)
|
||||
{
|
||||
defaultCase = switchCase;
|
||||
}
|
||||
else
|
||||
{
|
||||
switchCase.GenerateCode(level + 1, generator);
|
||||
}
|
||||
}
|
||||
if (defaultCase != null)
|
||||
{
|
||||
defaultCase.GenerateCode(level + 1, generator);
|
||||
}
|
||||
|
||||
generator.IndentLine(level);
|
||||
generator.OutputStream.Write("}");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class VariableDeclaration : CodeElement
|
||||
{
|
||||
public VariableType Type { get; set; }
|
||||
public string InitialValue { get; set; }
|
||||
public bool IsStatic { get; set; }
|
||||
|
||||
public VariableDeclaration()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public VariableDeclaration(VariableType type, string initialValue = null, bool isStatic = false) :
|
||||
base()
|
||||
{
|
||||
this.Type = type;
|
||||
this.InitialValue = initialValue;
|
||||
this.IsStatic = isStatic;
|
||||
}
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (this.Type != null)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
|
||||
if (this.IsStatic)
|
||||
{
|
||||
generator.OutputStream.Write("static ");
|
||||
}
|
||||
|
||||
// declare the variable
|
||||
this.Type.GenerateCode(generator);
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(this.InitialValue))
|
||||
{
|
||||
// add initialization value
|
||||
generator.OutputStream.Write(" = ");
|
||||
generator.WriteMultilineString(this.InitialValue, level);
|
||||
}
|
||||
|
||||
generator.OutputStream.Write(";");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public class VariablePrototype : CodeElement
|
||||
{
|
||||
public VariableType Type { get; set; }
|
||||
|
||||
public VariablePrototype()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public VariablePrototype(VariableType type) :
|
||||
base()
|
||||
{
|
||||
Type = type;
|
||||
}
|
||||
|
||||
public static VariablePrototype FromVariableDeclaration(VariableDeclaration declaration)
|
||||
{
|
||||
return new VariablePrototype(declaration.Type);
|
||||
}
|
||||
|
||||
|
||||
public override void GenerateCode(int level, CGenerator generator)
|
||||
{
|
||||
if (this.Type != null)
|
||||
{
|
||||
generator.IndentLine(level);
|
||||
|
||||
generator.OutputStream.Write("extern ");
|
||||
|
||||
// declare the variable
|
||||
this.Type.GenerateCode(generator);
|
||||
|
||||
generator.OutputStream.Write(";");
|
||||
generator.WriteNewLine();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
130
contrib/apps/LwipMibCompiler/CCodeGeneration/VariableType.cs
Normal file
130
contrib/apps/LwipMibCompiler/CCodeGeneration/VariableType.cs
Normal file
@ -0,0 +1,130 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
namespace CCodeGeneration
|
||||
{
|
||||
public enum ConstType
|
||||
{
|
||||
None,
|
||||
Value,
|
||||
Indirection,
|
||||
Both
|
||||
}
|
||||
|
||||
public class VariableType : ICloneable
|
||||
{
|
||||
public const string VoidString = "void";
|
||||
public static readonly VariableType Void = new VariableType(null, "void");
|
||||
|
||||
public string Name { get; set; }
|
||||
public string Type { get; set; }
|
||||
public string Indirection { get; set; }
|
||||
public ConstType Const { get; set; }
|
||||
public string ArraySpecifier { get; set; }
|
||||
|
||||
public VariableType()
|
||||
{
|
||||
}
|
||||
|
||||
public VariableType(string name, string type, string indirection = null, ConstType const_ = ConstType.None, string arraySpecifier = null)
|
||||
{
|
||||
this.Name = name;
|
||||
this.Type = type;
|
||||
this.Indirection = indirection;
|
||||
this.Const = const_;
|
||||
this.ArraySpecifier = arraySpecifier;
|
||||
}
|
||||
|
||||
public void GenerateCode(CGenerator generator)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Type))
|
||||
{
|
||||
generator.OutputStream.Write(this.ToString().Trim());
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(this.Type))
|
||||
{
|
||||
StringBuilder vt = new StringBuilder();
|
||||
|
||||
if ((this.Const == ConstType.Value) || (this.Const == ConstType.Both))
|
||||
{
|
||||
vt.Append("const ");
|
||||
}
|
||||
|
||||
vt.Append(this.Type);
|
||||
vt.Append(" ");
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(this.Indirection))
|
||||
{
|
||||
vt.Append(this.Indirection);
|
||||
}
|
||||
|
||||
if ((this.Const == ConstType.Indirection) || (this.Const == ConstType.Both))
|
||||
{
|
||||
vt.Append("const ");
|
||||
}
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(this.Name))
|
||||
{
|
||||
vt.Append(this.Name);
|
||||
}
|
||||
|
||||
if (this.ArraySpecifier != null)
|
||||
{
|
||||
vt.Append("[");
|
||||
vt.Append(this.ArraySpecifier);
|
||||
vt.Append("]");
|
||||
}
|
||||
|
||||
return vt.ToString().Trim();
|
||||
}
|
||||
|
||||
return base.ToString();
|
||||
}
|
||||
|
||||
#region ICloneable Member
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
// we only have value types as members -> simply use .net base function
|
||||
return this.MemberwiseClone();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
47
contrib/apps/LwipMibCompiler/LwipMibCompiler.sln
Normal file
47
contrib/apps/LwipMibCompiler/LwipMibCompiler.sln
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LwipMibCompiler", "LwipMibCompiler\LwipMibCompiler.csproj", "{C25D5640-D999-49BD-82E0-A1975296A91E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LwipSnmpCodeGeneration", "LwipSnmpCodeGeneration\LwipSnmpCodeGeneration.csproj", "{AABCAB90-1540-45D4-A159-14831A54E9A3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CCodeGeneration", "CCodeGeneration\CCodeGeneration.csproj", "{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpSnmpLib.Mib", "SharpSnmpLib\SharpSnmpLib.Mib.csproj", "{CBE20411-5DB7-487D-825D-7694267BB6F5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MibViewer", "MibViewer\MibViewer.csproj", "{86CC0B65-7985-4017-A252-0A7A18DCAEF3}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{86CC0B65-7985-4017-A252-0A7A18DCAEF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{86CC0B65-7985-4017-A252-0A7A18DCAEF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{86CC0B65-7985-4017-A252-0A7A18DCAEF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{86CC0B65-7985-4017-A252-0A7A18DCAEF3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AABCAB90-1540-45D4-A159-14831A54E9A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AABCAB90-1540-45D4-A159-14831A54E9A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AABCAB90-1540-45D4-A159-14831A54E9A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AABCAB90-1540-45D4-A159-14831A54E9A3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C25D5640-D999-49BD-82E0-A1975296A91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C25D5640-D999-49BD-82E0-A1975296A91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C25D5640-D999-49BD-82E0-A1975296A91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C25D5640-D999-49BD-82E0-A1975296A91E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CBE20411-5DB7-487D-825D-7694267BB6F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CBE20411-5DB7-487D-825D-7694267BB6F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CBE20411-5DB7-487D-825D-7694267BB6F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CBE20411-5DB7-487D-825D-7694267BB6F5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
StartupItem = LwipMibCompiler\LwipMibCompiler.csproj
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{C25D5640-D999-49BD-82E0-A1975296A91E}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LwipMibCompiler</RootNamespace>
|
||||
<AssemblyName>LwipMibCompiler</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Optimize>false</Optimize>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CCodeGeneration\CCodeGeneration.csproj">
|
||||
<Project>{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}</Project>
|
||||
<Name>CCodeGeneration</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\LwipSnmpCodeGeneration\LwipSnmpCodeGeneration.csproj">
|
||||
<Project>{AABCAB90-1540-45D4-A159-14831A54E9A3}</Project>
|
||||
<Name>LwipSnmpCodeGeneration</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SharpSnmpLib\SharpSnmpLib.Mib.csproj">
|
||||
<Project>{CBE20411-5DB7-487D-825D-7694267BB6F5}</Project>
|
||||
<Name>SharpSnmpLib.Mib</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
480
contrib/apps/LwipMibCompiler/LwipMibCompiler/Program.cs
Normal file
480
contrib/apps/LwipMibCompiler/LwipMibCompiler/Program.cs
Normal file
@ -0,0 +1,480 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text.RegularExpressions;
|
||||
using CCodeGeneration;
|
||||
using Lextm.SharpSnmpLib.Mib;
|
||||
using Lextm.SharpSnmpLib.Mib.Elements.Entities;
|
||||
using Lextm.SharpSnmpLib.Mib.Elements.Types;
|
||||
using LwipSnmpCodeGeneration;
|
||||
|
||||
namespace LwipMibCompiler
|
||||
{
|
||||
class Program
|
||||
{
|
||||
private static readonly Regex _alphaNumericRegex = new Regex("[^a-zA-Z0-9]");
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Console.WriteLine("lwIP MIB Compiler");
|
||||
Console.WriteLine("");
|
||||
|
||||
// check args
|
||||
if ((args.Length < 2) || String.IsNullOrWhiteSpace(args[0]) || String.IsNullOrWhiteSpace(args[1]))
|
||||
{
|
||||
PrintUsage();
|
||||
return;
|
||||
}
|
||||
|
||||
string mibFile = args[0];
|
||||
if (!File.Exists(mibFile))
|
||||
{
|
||||
Console.WriteLine(String.Format("Unable to find file '{0}'!", mibFile));
|
||||
}
|
||||
|
||||
string destFile = args[1];
|
||||
string destHeaderFile;
|
||||
|
||||
if (Directory.Exists(destFile))
|
||||
{
|
||||
// only directory passed -> create dest filename from mib filename
|
||||
string mibFileName = Path.GetFileNameWithoutExtension(mibFile).ToLowerInvariant();
|
||||
destFile = Path.Combine(destFile, mibFileName + ".c");
|
||||
}
|
||||
|
||||
string destFileExt = Path.GetExtension(destFile);
|
||||
if (!String.IsNullOrEmpty(destFileExt))
|
||||
{
|
||||
destHeaderFile = destFile.Substring(0, destFile.Length - destFileExt.Length);
|
||||
}
|
||||
else
|
||||
{
|
||||
destHeaderFile = destFile;
|
||||
}
|
||||
destHeaderFile += ".h";
|
||||
|
||||
for (int i=2; i<args.Length; i++)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(args[i]) && Directory.Exists(args[i]))
|
||||
{
|
||||
MibTypesResolver.RegisterResolver(new FileSystemMibResolver(args[i], true));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// read and resolve MIB
|
||||
Console.WriteLine(" Reading MIB file...");
|
||||
|
||||
MibDocument md = new MibDocument(mibFile);
|
||||
MibTypesResolver.ResolveTypes(md.Modules[0]);
|
||||
MibTree mt = new MibTree(md.Modules[0] as MibModule);
|
||||
|
||||
if (mt.Root.Count == 0)
|
||||
{
|
||||
Console.WriteLine("No root element found inside MIB!");
|
||||
return;
|
||||
}
|
||||
|
||||
MibCFile generatedFile = new MibCFile();
|
||||
MibHeaderFile generatedHeaderFile = new MibHeaderFile();
|
||||
|
||||
foreach (MibTreeNode mibTreeNode in mt.Root)
|
||||
{
|
||||
// create LWIP object tree from MIB structure
|
||||
Console.WriteLine(" Creating lwIP object tree " + mibTreeNode.Entity.Name);
|
||||
|
||||
SnmpMib snmpMib = new SnmpMib();
|
||||
snmpMib.Oid = mibTreeNode.Entity.Value;
|
||||
snmpMib.BaseOid = MibTypesResolver.ResolveOid(mibTreeNode.Entity).GetOidValues();
|
||||
snmpMib.Name = mibTreeNode.Entity.Name;
|
||||
|
||||
ProcessMibTreeNode(mibTreeNode, snmpMib);
|
||||
|
||||
// let the tree transform itself depending on node structure
|
||||
snmpMib.Analyze();
|
||||
|
||||
if (snmpMib.ChildNodes.Count != 0)
|
||||
{
|
||||
// generate code from LWIP object tree
|
||||
Console.WriteLine(" Generating code " + snmpMib.Name);
|
||||
snmpMib.Generate(generatedFile, generatedHeaderFile);
|
||||
}
|
||||
}
|
||||
|
||||
string preservedCode = MibCFile.GetPreservedCode(destFile);
|
||||
if (!string.IsNullOrEmpty(preservedCode))
|
||||
{
|
||||
generatedFile.PreservedCode.Add(new PlainText(preservedCode));
|
||||
}
|
||||
else
|
||||
{
|
||||
generatedFile.PreservedCode.AddRange(generatedFile.Implementation);
|
||||
}
|
||||
generatedFile.Implementation.Clear();
|
||||
|
||||
|
||||
using (StreamWriter fileWriter = new StreamWriter(destHeaderFile))
|
||||
{
|
||||
CGenerator cGenerator = new CGenerator(fileWriter, destHeaderFile, 3, " ", Environment.NewLine);
|
||||
generatedHeaderFile.Save(cGenerator);
|
||||
}
|
||||
using (StreamWriter fileWriter = new StreamWriter(destFile))
|
||||
{
|
||||
CGenerator cGenerator = new CGenerator(fileWriter, destFile, 3, " ", Environment.NewLine);
|
||||
generatedFile.Save(cGenerator);
|
||||
}
|
||||
|
||||
Console.WriteLine(" Done");
|
||||
}
|
||||
|
||||
private static void PrintUsage()
|
||||
{
|
||||
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
|
||||
string appName = Path.GetFileName(codeBase);
|
||||
|
||||
Console.WriteLine("Usage:");
|
||||
Console.WriteLine(String.Format(" {0} <source MIB file> <dest C file> [<search path 1 for referred MIB's> <search path 2 for referred MIB's> ...]", appName));
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine(" <source MIB file>");
|
||||
Console.WriteLine(" Path and filename of MIB file to convert.");
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine(" <dest C file>");
|
||||
Console.WriteLine(" Destination path and file. If a path is passed only, filename is auto");
|
||||
Console.WriteLine(" generated from MIB file name.");
|
||||
Console.WriteLine("");
|
||||
Console.WriteLine(" <search path X for referred MIB's>");
|
||||
Console.WriteLine(" It's important to provide all referred MIB's in order to correctly ");
|
||||
Console.WriteLine(" resolve all used types.");
|
||||
Console.WriteLine("");
|
||||
}
|
||||
|
||||
|
||||
#region Generation of LWIP Object Tree
|
||||
|
||||
private static void ProcessMibTreeNode(MibTreeNode mibTreeNode, SnmpTreeNode assignedSnmpNode)
|
||||
{
|
||||
foreach (MibTreeNode mtn in mibTreeNode.ChildNodes)
|
||||
{
|
||||
// in theory container nodes may also be scalars or tables at the same time (for now only process real containers)
|
||||
if (mtn.NodeType == MibTreeNodeType.Container)
|
||||
{
|
||||
SnmpTreeNode snmpTreeNode = GenerateSnmpTreeNode(mtn, assignedSnmpNode);
|
||||
assignedSnmpNode.ChildNodes.Add(snmpTreeNode);
|
||||
|
||||
ProcessMibTreeNode(mtn, snmpTreeNode);
|
||||
}
|
||||
else if ((mtn.NodeType & MibTreeNodeType.Scalar) != 0)
|
||||
{
|
||||
SnmpScalarNode snmpScalarNode = GenerateSnmpScalarNode(mtn, assignedSnmpNode);
|
||||
if (snmpScalarNode != null)
|
||||
{
|
||||
assignedSnmpNode.ChildNodes.Add(snmpScalarNode);
|
||||
}
|
||||
}
|
||||
else if ((mtn.NodeType & MibTreeNodeType.Table) != 0)
|
||||
{
|
||||
SnmpTableNode snmpTableNode = GenerateSnmpTableNode(mtn, assignedSnmpNode);
|
||||
if (snmpTableNode != null)
|
||||
{
|
||||
assignedSnmpNode.ChildNodes.Add(snmpTableNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static SnmpTreeNode GenerateSnmpTreeNode(MibTreeNode mibTreeNode, SnmpTreeNode parentNode)
|
||||
{
|
||||
SnmpTreeNode result = new SnmpTreeNode(parentNode);
|
||||
result.Name = _alphaNumericRegex.Replace (mibTreeNode.Entity.Name, "");
|
||||
result.Oid = mibTreeNode.Entity.Value;
|
||||
result.FullOid = MibTypesResolver.ResolveOid(mibTreeNode.Entity).GetOidString();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static SnmpScalarNode GenerateSnmpScalarNode(MibTreeNode mibTreeNode, SnmpTreeNode parentNode, bool ignoreAccessibleFlag = false)
|
||||
{
|
||||
ObjectType ote = mibTreeNode.Entity as ObjectType;
|
||||
if (ote != null)
|
||||
{
|
||||
return GenerateSnmpScalarNode(ote, parentNode, ignoreAccessibleFlag);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static SnmpScalarNode GenerateSnmpScalarNode(ObjectType ote, SnmpTreeNode parentNode, bool ignoreAccessibleFlag = false)
|
||||
{
|
||||
SnmpScalarNode result;
|
||||
|
||||
ITypeAssignment mibType = ote.BaseType;
|
||||
IntegerType it = (mibType as IntegerType);
|
||||
if (it != null)
|
||||
{
|
||||
if (ote.ReferredType.Name == Symbol.TruthValue.ToString())
|
||||
{
|
||||
result = new SnmpScalarNodeTruthValue(parentNode);
|
||||
}
|
||||
else if ((it.Type == IntegerType.Types.Integer) || (it.Type == IntegerType.Types.Integer32))
|
||||
{
|
||||
result = new SnmpScalarNodeInt(parentNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(String.Format("Unsupported IntegerType '{0}'!", it.Type));
|
||||
return null;
|
||||
}
|
||||
if (it.IsEnumeration)
|
||||
{
|
||||
result.Restrictions.AddRange(CreateRestrictions(it.Enumeration));
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Restrictions.AddRange(CreateRestrictions(it.Ranges));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UnsignedType ut = (mibType as UnsignedType);
|
||||
if (ut != null)
|
||||
{
|
||||
if ((ut.Type == UnsignedType.Types.Unsigned32) ||
|
||||
(ut.Type == UnsignedType.Types.Gauge32))
|
||||
{
|
||||
result = new SnmpScalarNodeUint(SnmpDataType.Gauge, parentNode);
|
||||
}
|
||||
else if (ut.Type == UnsignedType.Types.Counter32)
|
||||
{
|
||||
result = new SnmpScalarNodeUint(SnmpDataType.Counter, parentNode);
|
||||
}
|
||||
else if (ut.Type == UnsignedType.Types.TimeTicks)
|
||||
{
|
||||
result = new SnmpScalarNodeUint(SnmpDataType.TimeTicks, parentNode);
|
||||
}
|
||||
else if (ut.Type == UnsignedType.Types.Counter64)
|
||||
{
|
||||
result = new SnmpScalarNodeCounter64(parentNode);
|
||||
if ((ut.Ranges != null) && (ut.Ranges.Count > 0))
|
||||
{
|
||||
Console.WriteLine(String.Format("Generation of ranges is not supported for Counter64 type!"));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(String.Format("Unsupported UnsignedType '{0}'!", ut.Type));
|
||||
return null;
|
||||
}
|
||||
result.Restrictions.AddRange(CreateRestrictions(ut.Ranges));
|
||||
}
|
||||
else if (mibType is IpAddressType)
|
||||
{
|
||||
result = new SnmpScalarNodeOctetString(SnmpDataType.IpAddress, parentNode);
|
||||
result.Restrictions.AddRange(CreateRestrictions((mibType as OctetStringType).Size));
|
||||
}
|
||||
else if (mibType is OpaqueType)
|
||||
{
|
||||
result = new SnmpScalarNodeOctetString(SnmpDataType.Opaque, parentNode);
|
||||
result.Restrictions.AddRange(CreateRestrictions((mibType as OctetStringType).Size));
|
||||
}
|
||||
else if (mibType is OctetStringType)
|
||||
{
|
||||
result = new SnmpScalarNodeOctetString(SnmpDataType.OctetString, parentNode);
|
||||
result.Restrictions.AddRange(CreateRestrictions((mibType as OctetStringType).Size));
|
||||
}
|
||||
else if (mibType is ObjectIdentifierType)
|
||||
{
|
||||
result = new SnmpScalarNodeObjectIdentifier(parentNode);
|
||||
}
|
||||
else if (mibType is BitsType)
|
||||
{
|
||||
result = new SnmpScalarNodeBits(parentNode, (uint)((mibType as BitsType).Map.GetHighestValue() + 1));
|
||||
result.Restrictions.AddRange(CreateRestrictions(mibType as BitsType));
|
||||
}
|
||||
else
|
||||
{
|
||||
TypeAssignment ta = mibType as TypeAssignment;
|
||||
if (ta != null)
|
||||
{
|
||||
Console.WriteLine(String.Format("Unsupported BaseType: Module='{0}', Name='{1}', Type='{2}'!", ta.Module.Name, ta.Name, ta.Type));
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(String.Format("Unsupported BaseType: Module='{0}', Name='{1}'!", mibType.Module, mibType.Name));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
result.Name = _alphaNumericRegex.Replace(ote.Name, "");
|
||||
result.Oid = ote.Value;
|
||||
|
||||
if (ote.Access == MaxAccess.readWrite)
|
||||
{
|
||||
result.AccessMode = SnmpAccessMode.ReadWrite;
|
||||
}
|
||||
else if (ote.Access == MaxAccess.readOnly)
|
||||
{
|
||||
result.AccessMode = SnmpAccessMode.ReadOnly;
|
||||
}
|
||||
else if (ote.Access == MaxAccess.readCreate)
|
||||
{
|
||||
result.AccessMode = SnmpAccessMode.ReadOnly;
|
||||
}
|
||||
else if (ignoreAccessibleFlag && (ote.Access == MaxAccess.notAccessible))
|
||||
{
|
||||
result.AccessMode = SnmpAccessMode.NotAccessible;
|
||||
}
|
||||
else
|
||||
{
|
||||
// not accessible or unsupported accress type
|
||||
return null;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static IEnumerable<IRestriction> CreateRestrictions(ValueRanges ranges)
|
||||
{
|
||||
List<IRestriction> result = new List<IRestriction>();
|
||||
|
||||
if (ranges != null)
|
||||
{
|
||||
foreach (ValueRange range in ranges)
|
||||
{
|
||||
if (!range.End.HasValue)
|
||||
{
|
||||
result.Add(new IsEqualRestriction(range.Start));
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Add(new IsInRangeRestriction(range.Start, range.End.Value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static IEnumerable<IRestriction> CreateRestrictions(ValueMap map)
|
||||
{
|
||||
if ((map != null) && (map.Count > 0))
|
||||
{
|
||||
return CreateRestrictions(map.GetContinousRanges());
|
||||
}
|
||||
|
||||
return new List<IRestriction>();
|
||||
}
|
||||
|
||||
private static IEnumerable<IRestriction> CreateRestrictions(BitsType bt)
|
||||
{
|
||||
List<IRestriction> result = new List<IRestriction>();
|
||||
|
||||
if ((bt != null) && (bt.Map != null))
|
||||
{
|
||||
result.Add(new BitMaskRestriction(bt.Map.GetBitMask()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static SnmpTableNode GenerateSnmpTableNode(MibTreeNode mibTreeNode, SnmpTreeNode parentNode)
|
||||
{
|
||||
SnmpTableNode result = new SnmpTableNode(parentNode);
|
||||
result.Name = mibTreeNode.Entity.Name;
|
||||
result.Oid = mibTreeNode.Entity.Value;
|
||||
|
||||
// expect exactly one row entry
|
||||
if ((mibTreeNode.ChildNodes.Count != 1) || ((mibTreeNode.ChildNodes[0].NodeType & MibTreeNodeType.TableRow) == 0) || (mibTreeNode.ChildNodes[0].Entity.Value != 1))
|
||||
{
|
||||
Console.WriteLine("Found table with unsupported properties! Table needs exactly one (fixed) TableRow with OID=1 ! (" + mibTreeNode.Entity.Name + ")");
|
||||
return null;
|
||||
}
|
||||
|
||||
MibTreeNode rowNode = mibTreeNode.ChildNodes[0];
|
||||
|
||||
ObjectType rot = rowNode.Entity as ObjectType;
|
||||
if (rot != null)
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(rot.Augments))
|
||||
{
|
||||
result.AugmentedTableRow = rot.Augments;
|
||||
|
||||
// the indeces from another table shall be used because this table is only an extension of it
|
||||
rot = MibTypesResolver.ResolveDeclaration(rot.Module, rot.Augments) as ObjectType;
|
||||
}
|
||||
|
||||
if (rot.Indices != null)
|
||||
{
|
||||
foreach (string index in rot.Indices)
|
||||
{
|
||||
ObjectType indexEntity = MibTypesResolver.ResolveDeclaration(rot.Module, index) as ObjectType;
|
||||
if (indexEntity == null)
|
||||
{
|
||||
Console.WriteLine(String.Format("Could not resolve index '{0}' for table '{1}'! Table omitted!", index, result.Name));
|
||||
return null;
|
||||
}
|
||||
|
||||
result.IndexNodes.Add(GenerateSnmpScalarNode(indexEntity, parentNode, ignoreAccessibleFlag: true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (result.IndexNodes.Count == 0)
|
||||
{
|
||||
// a table cannot be used without index
|
||||
Console.WriteLine("Found table without any index column ! (" + mibTreeNode.Entity.Name + ")");
|
||||
return null;
|
||||
}
|
||||
|
||||
// add child nodes
|
||||
foreach (MibTreeNode cellNode in rowNode.ChildNodes)
|
||||
{
|
||||
SnmpScalarNode ssn = GenerateSnmpScalarNode(cellNode, parentNode);
|
||||
if (ssn != null)
|
||||
{
|
||||
result.CellNodes.Add(ssn);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die mit einer Assembly verknüpft sind.
|
||||
[assembly: AssemblyTitle("ConsoleApplication28")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ConsoleApplication28")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
|
||||
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("0abf7541-6a96-43cd-9e24-462e074b2c96")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
3
contrib/apps/LwipMibCompiler/LwipMibCompiler/app.config
Normal file
3
contrib/apps/LwipMibCompiler/LwipMibCompiler/app.config
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public interface IRestriction
|
||||
{
|
||||
string GetCheckCodeValid(string varNameToCheck);
|
||||
string GetCheckCodeInvalid(string varNameToCheck);
|
||||
}
|
||||
|
||||
public class BitMaskRestriction : IRestriction
|
||||
{
|
||||
UInt32 mask;
|
||||
|
||||
public BitMaskRestriction(UInt32 mask)
|
||||
{
|
||||
this.mask = mask;
|
||||
}
|
||||
|
||||
public string GetCheckCodeValid(string varNameToCheck)
|
||||
{
|
||||
return String.Format("(({0} & {1}) == {0})", varNameToCheck, this.mask);
|
||||
}
|
||||
|
||||
public string GetCheckCodeInvalid(string varNameToCheck)
|
||||
{
|
||||
return String.Format("(({0} & {1}) != {0})", varNameToCheck, this.mask);
|
||||
}
|
||||
}
|
||||
|
||||
public class IsEqualRestriction : IRestriction
|
||||
{
|
||||
private Int64 value;
|
||||
|
||||
public IsEqualRestriction(Int64 value)
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long Value
|
||||
{
|
||||
get { return value; }
|
||||
}
|
||||
|
||||
public string GetCheckCodeValid(string varNameToCheck)
|
||||
{
|
||||
return String.Format("({0} == {1})", varNameToCheck, this.value);
|
||||
}
|
||||
|
||||
public string GetCheckCodeInvalid(string varNameToCheck)
|
||||
{
|
||||
return String.Format("({0} != {1})", varNameToCheck, this.value);
|
||||
}
|
||||
}
|
||||
|
||||
public class IsInRangeRestriction : IRestriction
|
||||
{
|
||||
private Int64 rangeStart;
|
||||
private Int64 rangeEnd;
|
||||
|
||||
public IsInRangeRestriction(Int64 rangeStart, Int64 rangeEnd)
|
||||
{
|
||||
this.rangeStart = rangeStart;
|
||||
this.rangeEnd = rangeEnd;
|
||||
}
|
||||
|
||||
public long RangeStart
|
||||
{
|
||||
get { return this.rangeStart; }
|
||||
}
|
||||
|
||||
public long RangeEnd
|
||||
{
|
||||
get { return this.rangeEnd; }
|
||||
}
|
||||
|
||||
public string GetCheckCodeValid(string varNameToCheck)
|
||||
{
|
||||
return String.Format("(({0} >= {1}) && ({0} <= {2}))", varNameToCheck, this.rangeStart, this.rangeEnd);
|
||||
}
|
||||
|
||||
public string GetCheckCodeInvalid(string varNameToCheck)
|
||||
{
|
||||
return String.Format("(({0} < {1}) || ({0} > {2}))", varNameToCheck, this.rangeStart, this.rangeEnd);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
199
contrib/apps/LwipMibCompiler/LwipSnmpCodeGeneration/LwipSnmp.cs
Normal file
199
contrib/apps/LwipMibCompiler/LwipSnmpCodeGeneration/LwipSnmp.cs
Normal file
@ -0,0 +1,199 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public static class LwipOpts
|
||||
{
|
||||
public static bool GenerateEmptyFolders = false;
|
||||
/// <summary>
|
||||
/// If a tree node only has scalar nodes as child nodes, it is replaced by
|
||||
/// a single scalar array node in order to save memory and have only one single get/test/set method for all scalars.
|
||||
/// </summary>
|
||||
public static bool GenerateScalarArrays = true;
|
||||
/// <summary>
|
||||
/// If a tree node has multiple scalars as subnodes as well as other treenodes it
|
||||
/// defines a single get/test/set method for all scalar child node.
|
||||
/// (without other treenodes as child it would have been converted to scalar array node).
|
||||
/// </summary>
|
||||
public static bool GenerateSingleAccessMethodsForTreeNodeScalars = GenerateScalarArrays;
|
||||
}
|
||||
|
||||
public static class LwipDefs
|
||||
{
|
||||
public const string Null = "NULL";
|
||||
public const string Vt_U8 = "u8_t";
|
||||
public const string Vt_U16 = "u16_t";
|
||||
public const string Vt_U32 = "u32_t";
|
||||
public const string Vt_S8 = "s8_t";
|
||||
public const string Vt_S16 = "s16_t";
|
||||
public const string Vt_S32 = "s32_t";
|
||||
public const string Vt_Snmp_err = "snmp_err_t";
|
||||
|
||||
public const string Incl_SnmpOpts = "lwip/apps/snmp_opts.h";
|
||||
public const string Opt_SnmpEnabled = "LWIP_SNMP";
|
||||
|
||||
public const string Vt_StMib = "struct snmp_mib";
|
||||
public const string Vt_StObjectId = "struct snmp_obj_id";
|
||||
public const string Vt_StNode = "struct snmp_node";
|
||||
public const string Vt_StNodeInstance = "struct snmp_node_instance";
|
||||
public const string Vt_StTreeNode = "struct snmp_tree_node";
|
||||
public const string Vt_StScalarNode = "struct snmp_scalar_node";
|
||||
public const string Vt_StScalarArrayNode = "struct snmp_scalar_array_node";
|
||||
public const string Vt_StScalarArrayNodeDef = "struct snmp_scalar_array_node_def";
|
||||
public const string Vt_StTableNode = "struct snmp_table_node";
|
||||
public const string Vt_StTableColumnDef = "struct snmp_table_col_def";
|
||||
public const string Vt_StNextOidState = "struct snmp_next_oid_state";
|
||||
|
||||
public const string Def_NodeAccessReadOnly = "SNMP_NODE_INSTANCE_READ_ONLY";
|
||||
public const string Def_NodeAccessReadWrite = "SNMP_NODE_INSTANCE_READ_WRITE";
|
||||
public const string Def_NodeAccessWriteOnly = "SNMP_NODE_INSTANCE_WRITE_ONLY";
|
||||
public const string Def_NodeAccessNotAccessible = "SNMP_NODE_INSTANCE_NOT_ACCESSIBLE";
|
||||
|
||||
public const string Def_ErrorCode_Ok = "SNMP_ERR_NOERROR";
|
||||
public const string Def_ErrorCode_WrongValue = "SNMP_ERR_WRONGVALUE";
|
||||
public const string Def_ErrorCode_NoSuchInstance = "SNMP_ERR_NOSUCHINSTANCE";
|
||||
|
||||
public const string FnctSuffix_GetValue = "_get_value";
|
||||
public const string FnctSuffix_SetTest = "_set_test";
|
||||
public const string FnctSuffix_SetValue = "_set_value";
|
||||
public const string FnctSuffix_GetInstance = "_get_instance";
|
||||
public const string FnctSuffix_GetNextInstance = "_get_next_instance";
|
||||
|
||||
public const string FnctName_SetTest_Ok = "snmp_set_test_ok";
|
||||
|
||||
public static string GetLwipDefForSnmpAccessMode(SnmpAccessMode am)
|
||||
{
|
||||
switch (am)
|
||||
{
|
||||
case SnmpAccessMode.ReadOnly: return Def_NodeAccessReadOnly;
|
||||
case SnmpAccessMode.ReadWrite: return Def_NodeAccessReadWrite;
|
||||
case SnmpAccessMode.NotAccessible: return Def_NodeAccessNotAccessible;
|
||||
case SnmpAccessMode.WriteOnly: return Def_NodeAccessWriteOnly;
|
||||
default: throw new NotSupportedException("Unknown SnmpAccessMode!");
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetAsn1DefForSnmpDataType(SnmpDataType dt)
|
||||
{
|
||||
switch (dt)
|
||||
{
|
||||
// primitive
|
||||
case SnmpDataType.Null:
|
||||
return "SNMP_ASN1_TYPE_NULL";
|
||||
case SnmpDataType.Bits:
|
||||
case SnmpDataType.OctetString:
|
||||
return "SNMP_ASN1_TYPE_OCTET_STRING";
|
||||
case SnmpDataType.ObjectIdentifier:
|
||||
return "SNMP_ASN1_TYPE_OBJECT_ID";
|
||||
case SnmpDataType.Integer:
|
||||
return "SNMP_ASN1_TYPE_INTEGER";
|
||||
|
||||
// application
|
||||
case SnmpDataType.IpAddress:
|
||||
return "SNMP_ASN1_TYPE_IPADDR";
|
||||
case SnmpDataType.Counter:
|
||||
return "SNMP_ASN1_TYPE_COUNTER";
|
||||
case SnmpDataType.Gauge:
|
||||
return "SNMP_ASN1_TYPE_GAUGE";
|
||||
case SnmpDataType.TimeTicks:
|
||||
return "SNMP_ASN1_TYPE_TIMETICKS";
|
||||
case SnmpDataType.Opaque:
|
||||
return "SNMP_ASN1_TYPE_OPAQUE";
|
||||
case SnmpDataType.Counter64:
|
||||
return "SNMP_ASN1_TYPE_COUNTER64";
|
||||
default:
|
||||
throw new NotSupportedException("Unknown SnmpDataType!");
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetLengthForSnmpDataType(SnmpDataType dt)
|
||||
{
|
||||
switch (dt)
|
||||
{
|
||||
case SnmpDataType.Null:
|
||||
return "0";
|
||||
|
||||
case SnmpDataType.Integer:
|
||||
case SnmpDataType.Counter:
|
||||
case SnmpDataType.IpAddress:
|
||||
case SnmpDataType.Gauge:
|
||||
case SnmpDataType.TimeTicks:
|
||||
return "4";
|
||||
|
||||
case SnmpDataType.Counter64:
|
||||
return "8";
|
||||
|
||||
case SnmpDataType.OctetString:
|
||||
case SnmpDataType.ObjectIdentifier:
|
||||
case SnmpDataType.Bits:
|
||||
case SnmpDataType.Opaque:
|
||||
return null;
|
||||
|
||||
default:
|
||||
throw new NotSupportedException("Unknown SnmpDataType!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum SnmpDataType
|
||||
{
|
||||
Null,
|
||||
|
||||
Integer, // INTEGER, Integer32
|
||||
|
||||
Counter, // Counter, Counter32
|
||||
Gauge, // Gauge, Gauge32, Unsigned32
|
||||
TimeTicks,
|
||||
|
||||
Counter64,
|
||||
|
||||
OctetString,
|
||||
Opaque,
|
||||
Bits,
|
||||
|
||||
ObjectIdentifier,
|
||||
|
||||
IpAddress,
|
||||
}
|
||||
|
||||
public enum SnmpAccessMode
|
||||
{
|
||||
ReadOnly,
|
||||
ReadWrite,
|
||||
WriteOnly,
|
||||
NotAccessible
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{AABCAB90-1540-45D4-A159-14831A54E9A3}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LwipSnmpCodeGeneration</RootNamespace>
|
||||
<AssemblyName>LwipSnmpCodeGeneration</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="IRestriction.cs" />
|
||||
<Compile Include="SnmpScalarNodeCounter64.cs" />
|
||||
<Compile Include="SnmpScalarNodeTruthValue.cs" />
|
||||
<Compile Include="SnmpScalarAggregationNode.cs" />
|
||||
<Compile Include="SnmpTableNode.cs" />
|
||||
<Compile Include="SnmpScalarArrayNode.cs" />
|
||||
<Compile Include="MibHeaderFile.cs" />
|
||||
<Compile Include="SnmpScalarNodeBits.cs" />
|
||||
<Compile Include="SnmpMib.cs" />
|
||||
<Compile Include="SnmpScalarNodeInt.cs" />
|
||||
<Compile Include="SnmpScalarNodeObjectIdentifier.cs" />
|
||||
<Compile Include="SnmpScalarNodeOctetString.cs" />
|
||||
<Compile Include="SnmpScalarNodeUint.cs" />
|
||||
<Compile Include="SnmpTreeNode.cs" />
|
||||
<Compile Include="LwipSnmp.cs" />
|
||||
<Compile Include="MibCFile.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SnmpNode.cs" />
|
||||
<Compile Include="SnmpScalarNode.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CCodeGeneration\CCodeGeneration.csproj">
|
||||
<Project>{7DA7C0AB-0982-4BF5-9324-F59A7A08D65B}</Project>
|
||||
<Name>CCodeGeneration</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
196
contrib/apps/LwipMibCompiler/LwipSnmpCodeGeneration/MibCFile.cs
Normal file
196
contrib/apps/LwipMibCompiler/LwipSnmpCodeGeneration/MibCFile.cs
Normal file
@ -0,0 +1,196 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using CCodeGeneration;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class MibCFile
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private const string PreservedSectionMarker = "LWIP MIB generator - preserved section begin";
|
||||
private const string PreservedSectionHeader =
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" +
|
||||
PreservedSectionMarker + "\n" +
|
||||
"Code below is preserved on regeneration. Remove these comment lines to regenerate code.\n" +
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
|
||||
|
||||
private readonly List<CodeElement> includes = new List<CodeElement>();
|
||||
private readonly List<CodeElement> defines = new List<CodeElement>();
|
||||
private readonly List<CodeElement> declarations = new List<CodeElement>();
|
||||
private readonly List<CodeElement> implementation = new List<CodeElement>();
|
||||
private readonly List<CodeElement> preservedCode = new List<CodeElement>();
|
||||
|
||||
#endregion
|
||||
|
||||
public MibCFile()
|
||||
{
|
||||
}
|
||||
|
||||
#region Accessors
|
||||
|
||||
public List<CodeElement> Includes
|
||||
{
|
||||
get { return this.includes; }
|
||||
}
|
||||
|
||||
public List<CodeElement> Defines
|
||||
{
|
||||
get { return this.defines; }
|
||||
}
|
||||
|
||||
public List<CodeElement> Declarations
|
||||
{
|
||||
get { return this.declarations; }
|
||||
}
|
||||
|
||||
public List<CodeElement> Implementation
|
||||
{
|
||||
get { return this.implementation; }
|
||||
}
|
||||
|
||||
public List<CodeElement> PreservedCode
|
||||
{
|
||||
get { return this.preservedCode; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
public void Save(CGenerator cGenerator)
|
||||
{
|
||||
CFile cFile = new CFile();
|
||||
|
||||
cFile.AddElement(new Comment("Generated by LwipMibCompiler"));
|
||||
cFile.AddElement(EmptyLine.SingleLine);
|
||||
|
||||
cFile.AddElement(new PP_Include(LwipDefs.Incl_SnmpOpts));
|
||||
CodeContainerBase e = cFile.AddElement(new PP_If(LwipDefs.Opt_SnmpEnabled)) as CodeContainerBase;
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
|
||||
// include header file
|
||||
string file = cGenerator.FileName;
|
||||
if (!String.IsNullOrWhiteSpace(file))
|
||||
{
|
||||
string ext = System.IO.Path.GetExtension(file);
|
||||
|
||||
string headerFile = !String.IsNullOrEmpty(ext) ? file.Substring(0, file.Length - ext.Length) : file;
|
||||
headerFile += ".h";
|
||||
|
||||
e.AddElement(new PP_Include(headerFile));
|
||||
}
|
||||
|
||||
// include common snmp files
|
||||
e.AddElement(new PP_Include("lwip/apps/snmp.h"));
|
||||
e.AddElement(new PP_Include("lwip/apps/snmp_core.h"));
|
||||
e.AddElement(new PP_Include("lwip/apps/snmp_scalar.h"));
|
||||
e.AddElement(new PP_Include("lwip/apps/snmp_table.h"));
|
||||
|
||||
if (this.includes.Count > 0)
|
||||
{
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
e.AddElements(this.includes);
|
||||
}
|
||||
|
||||
if (this.defines.Count > 0)
|
||||
{
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
e.AddElements(this.defines);
|
||||
}
|
||||
|
||||
if (this.declarations.Count > 0)
|
||||
{
|
||||
e.AddElement(EmptyLine.TwoLines);
|
||||
e.AddElements(this.declarations);
|
||||
}
|
||||
|
||||
if (this.implementation.Count > 0)
|
||||
{
|
||||
e.AddElement(EmptyLine.TwoLines);
|
||||
e.AddElements(this.implementation);
|
||||
}
|
||||
|
||||
if (this.preservedCode.Count > 0)
|
||||
{
|
||||
e.AddElement(EmptyLine.TwoLines);
|
||||
e.AddElement(new Comment(PreservedSectionHeader));
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
e.AddElements(this.preservedCode);
|
||||
}
|
||||
|
||||
cFile.Save(cGenerator);
|
||||
}
|
||||
|
||||
public static string GetPreservedCode(string file)
|
||||
{
|
||||
if (File.Exists(file))
|
||||
{
|
||||
using (StreamReader fileStream = new StreamReader(file))
|
||||
{
|
||||
while (!fileStream.EndOfStream)
|
||||
{
|
||||
string line = fileStream.ReadLine();
|
||||
if (line == PreservedSectionMarker)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!fileStream.EndOfStream)
|
||||
{
|
||||
// skip the rest of the comment + spacer line
|
||||
fileStream.ReadLine(); // "Code below is preserved...
|
||||
fileStream.ReadLine(); // "+++++++++++++++++++++++...
|
||||
fileStream.ReadLine(); // */
|
||||
fileStream.ReadLine(); //
|
||||
|
||||
string preservedCode = fileStream.ReadToEnd();
|
||||
|
||||
int lastEndif = preservedCode.LastIndexOf("#endif", StringComparison.Ordinal);
|
||||
preservedCode = preservedCode.Remove(lastEndif);
|
||||
|
||||
return preservedCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class MibHeaderFile
|
||||
{
|
||||
|
||||
#region Fields
|
||||
|
||||
private readonly List<CodeElement> defines = new List<CodeElement>();
|
||||
private readonly List<CodeElement> includes = new List<CodeElement>();
|
||||
private readonly List<CodeElement> functionDeclarations = new List<CodeElement>();
|
||||
private readonly List<CodeElement> variableDeclarations = new List<CodeElement>();
|
||||
|
||||
#endregion
|
||||
|
||||
public MibHeaderFile()
|
||||
{
|
||||
}
|
||||
|
||||
#region Accessors
|
||||
|
||||
public List<CodeElement> Defines
|
||||
{
|
||||
get { return this.defines; }
|
||||
}
|
||||
|
||||
public List<CodeElement> Includes
|
||||
{
|
||||
get { return this.includes; }
|
||||
}
|
||||
|
||||
public List<CodeElement> FunctionDeclarations
|
||||
{
|
||||
get { return this.functionDeclarations; }
|
||||
}
|
||||
|
||||
public List<CodeElement> VariableDeclarations
|
||||
{
|
||||
get { return this.variableDeclarations; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
public void Save(CGenerator cGenerator)
|
||||
{
|
||||
CFile cFile = new CFile();
|
||||
|
||||
cFile.AddElement(new Comment("Generated by LwipMibCompiler"));
|
||||
cFile.AddElement(EmptyLine.SingleLine);
|
||||
|
||||
string headerDefine = cGenerator.FileName;
|
||||
headerDefine = new Regex("[^a-zA-Z0-9]").Replace(headerDefine, "_");
|
||||
headerDefine = headerDefine.ToUpperInvariant();
|
||||
|
||||
CodeContainerBase e = cFile.AddElement(new PP_Ifdef(headerDefine, inverted: true)) as CodeContainerBase;
|
||||
e.AddElement(new PP_Macro(headerDefine, headerDefine));
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
|
||||
e.AddElement(new PP_Include(LwipDefs.Incl_SnmpOpts));
|
||||
e = e.AddElement(new PP_If(LwipDefs.Opt_SnmpEnabled)) as CodeContainerBase;
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
|
||||
CodeContainerBase cplusplusopen = e.AddElement(new PP_Ifdef("__cplusplus")) as CodeContainerBase;
|
||||
cplusplusopen.AddElement(new Code("extern \"C\" {"));
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
|
||||
if (this.includes.Count > 0)
|
||||
{
|
||||
e.AddElements(this.includes);
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
}
|
||||
|
||||
if (this.defines.Count > 0)
|
||||
{
|
||||
e.AddElements(this.defines);
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
}
|
||||
|
||||
e.AddElements(this.functionDeclarations, EmptyLine.SingleLine);
|
||||
e.AddElements(this.variableDeclarations, EmptyLine.SingleLine);
|
||||
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
CodeContainerBase cplusplusclose = e.AddElement(new PP_Ifdef("__cplusplus")) as CodeContainerBase;
|
||||
cplusplusclose.AddElement(new Code("}"));
|
||||
|
||||
e.AddElement(EmptyLine.SingleLine);
|
||||
cFile.Save(cGenerator);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die mit einer Assembly verknüpft sind.
|
||||
[assembly: AssemblyTitle("LwipSnmpCodeGeneration")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("LwipSnmpCodeGeneration")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
|
||||
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("8cfbbb8b-dfbb-4dd5-80c9-e07845dd58c9")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpMib : SnmpTreeNode
|
||||
{
|
||||
public uint[] BaseOid { get; set; }
|
||||
|
||||
public SnmpMib()
|
||||
: base(null)
|
||||
{
|
||||
}
|
||||
|
||||
public SnmpMib(uint[] baseOid)
|
||||
: base(null)
|
||||
{
|
||||
this.BaseOid = baseOid;
|
||||
}
|
||||
|
||||
public override string FullNodeName
|
||||
{
|
||||
get { return this.Name.ToLowerInvariant() + "_root"; }
|
||||
}
|
||||
|
||||
public override void GenerateCode(MibCFile mibFile)
|
||||
{
|
||||
base.GenerateCode(mibFile);
|
||||
|
||||
System.Diagnostics.Debug.Assert((this.BaseOid != null) && (this.BaseOid.Length > 0));
|
||||
|
||||
// create and add BaseOID declarations
|
||||
StringBuilder boidInitialization = new StringBuilder("{");
|
||||
foreach (uint t in this.BaseOid)
|
||||
{
|
||||
boidInitialization.Append(t);
|
||||
boidInitialization.Append(",");
|
||||
}
|
||||
boidInitialization.Length -= 1;
|
||||
boidInitialization.Append("}");
|
||||
|
||||
VariableDeclaration boidDecl = new VariableDeclaration(
|
||||
new VariableType(this.Name.ToLowerInvariant() + "_base_oid", LwipDefs.Vt_U32, null, ConstType.Value, String.Empty),
|
||||
boidInitialization.ToString(), true);
|
||||
|
||||
mibFile.Declarations.Add(boidDecl);
|
||||
mibFile.Declarations.Add(GetExportDeclaration());
|
||||
}
|
||||
|
||||
public override void GenerateHeaderCode(MibHeaderFile mibHeaderFile)
|
||||
{
|
||||
mibHeaderFile.Includes.Add(new PP_Include("lwip/apps/snmp_core.h"));
|
||||
|
||||
mibHeaderFile.VariableDeclarations.Add(VariablePrototype.FromVariableDeclaration(GetExportDeclaration()));
|
||||
}
|
||||
|
||||
VariableDeclaration GetExportDeclaration()
|
||||
{
|
||||
return new VariableDeclaration(
|
||||
new VariableType(this.Name.ToLowerInvariant(), LwipDefs.Vt_StMib, null, ConstType.Value),
|
||||
String.Format("{{{0}_base_oid, LWIP_ARRAYSIZE({0}_base_oid), &{1}.node}}", this.Name.ToLowerInvariant(), this.FullNodeName));
|
||||
}
|
||||
}
|
||||
}
|
119
contrib/apps/LwipMibCompiler/LwipSnmpCodeGeneration/SnmpNode.cs
Normal file
119
contrib/apps/LwipMibCompiler/LwipSnmpCodeGeneration/SnmpNode.cs
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public abstract class SnmpNode
|
||||
{
|
||||
public static readonly Regex NameValidationRegex = new Regex(@"^\w+$");
|
||||
|
||||
private string name;
|
||||
private readonly SnmpTreeNode parentNode;
|
||||
|
||||
protected SnmpNode(SnmpTreeNode parentNode)
|
||||
{
|
||||
this.parentNode = parentNode;
|
||||
}
|
||||
|
||||
public SnmpTreeNode ParentNode
|
||||
{
|
||||
get { return this.parentNode; }
|
||||
}
|
||||
|
||||
public virtual uint Oid { get; set; }
|
||||
|
||||
public abstract string FullNodeName
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public virtual string Name
|
||||
{
|
||||
get { return this.name; }
|
||||
set
|
||||
{
|
||||
if (value != this.name)
|
||||
{
|
||||
// check for valid name
|
||||
if (!NameValidationRegex.IsMatch(value))
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Name");
|
||||
}
|
||||
|
||||
this.name = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Generate(MibCFile generatedFile, MibHeaderFile generatedHeaderFile)
|
||||
{
|
||||
int declCount = generatedFile.Declarations.Count;
|
||||
int implCount = generatedFile.Implementation.Count;
|
||||
|
||||
this.GenerateHeaderCode(generatedHeaderFile);
|
||||
this.GenerateCode(generatedFile);
|
||||
|
||||
if (generatedFile.Declarations.Count != declCount)
|
||||
{
|
||||
generatedFile.Declarations.Add(EmptyLine.SingleLine);
|
||||
}
|
||||
if (generatedFile.Implementation.Count != implCount)
|
||||
{
|
||||
generatedFile.Implementation.Add(EmptyLine.SingleLine);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void GenerateCode(MibCFile mibFile);
|
||||
|
||||
public virtual void GenerateHeaderCode(MibHeaderFile mibHeaderFile)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called after node structure creation is completed and before code is created.
|
||||
/// Offers the possibility to perform operations depending on properties/subnodes.
|
||||
/// If the node shall be transformed to another node(-type) than the own instance
|
||||
/// may be replaced on parent node by the transformed instance.
|
||||
/// Calling sequence is always from leafs up to root. So a tree node can assume
|
||||
/// that the analyze method was already called on all child nodes.
|
||||
/// E.g. a tree node only has scalar sub nodes -> it transforms itself to a scalar array node
|
||||
/// </summary>
|
||||
/// <returns>The transformed node or null if nothing shall be changed in parent structure.</returns>
|
||||
public virtual void Analyze()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,293 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public abstract class SnmpScalarAggregationNode: SnmpNode
|
||||
{
|
||||
private bool getMethodRequired = false;
|
||||
private bool testMethodRequired = false;
|
||||
private bool setMethodRequired = false;
|
||||
|
||||
protected SnmpScalarAggregationNode(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual string GetMethodName
|
||||
{
|
||||
get { return this.FullNodeName + LwipDefs.FnctSuffix_GetValue; }
|
||||
}
|
||||
|
||||
protected bool GetMethodRequired
|
||||
{
|
||||
get { return this.getMethodRequired; }
|
||||
}
|
||||
|
||||
protected virtual string TestMethodName
|
||||
{
|
||||
get { return this.FullNodeName + LwipDefs.FnctSuffix_SetTest; }
|
||||
}
|
||||
|
||||
protected bool TestMethodRequired
|
||||
{
|
||||
get { return this.testMethodRequired; }
|
||||
}
|
||||
|
||||
protected virtual string SetMethodName
|
||||
{
|
||||
get { return this.FullNodeName + LwipDefs.FnctSuffix_SetValue; }
|
||||
}
|
||||
|
||||
protected bool SetMethodRequired
|
||||
{
|
||||
get { return this.setMethodRequired; }
|
||||
}
|
||||
|
||||
protected abstract IEnumerable<SnmpScalarNode> AggregatedScalarNodes
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public override void Analyze()
|
||||
{
|
||||
base.Analyze();
|
||||
|
||||
this.getMethodRequired = false;
|
||||
this.testMethodRequired = false;
|
||||
this.setMethodRequired = false;
|
||||
|
||||
foreach (SnmpScalarNode scalarNode in this.AggregatedScalarNodes)
|
||||
{
|
||||
if ((scalarNode.AccessMode == SnmpAccessMode.ReadOnly) || (scalarNode.AccessMode == SnmpAccessMode.ReadWrite))
|
||||
{
|
||||
this.getMethodRequired = true;
|
||||
}
|
||||
if ((scalarNode.AccessMode == SnmpAccessMode.WriteOnly) || (scalarNode.AccessMode == SnmpAccessMode.ReadWrite))
|
||||
{
|
||||
this.testMethodRequired = true;
|
||||
this.setMethodRequired = true;
|
||||
}
|
||||
|
||||
if (this.getMethodRequired && this.setMethodRequired)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void GenerateAggregatedCode(MibCFile mibFile, VariableType instanceType, string switchSelector, bool generateDeclarations = true, bool generateImplementations = true)
|
||||
{
|
||||
if (this.getMethodRequired)
|
||||
{
|
||||
FunctionDeclaration getMethodDecl = new FunctionDeclaration(this.GetMethodName, isStatic: true);
|
||||
getMethodDecl.Parameter.Add(instanceType);
|
||||
getMethodDecl.Parameter.Add(new VariableType("value", VariableType.VoidString, "*"));
|
||||
getMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_S16);
|
||||
|
||||
if (generateDeclarations)
|
||||
{
|
||||
mibFile.Declarations.Add(getMethodDecl);
|
||||
}
|
||||
if (generateImplementations)
|
||||
{
|
||||
Function getMethod = Function.FromDeclaration(getMethodDecl);
|
||||
GenerateGetMethodCode(getMethod, switchSelector);
|
||||
mibFile.Implementation.Add(getMethod);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.testMethodRequired)
|
||||
{
|
||||
FunctionDeclaration testMethodDecl = new FunctionDeclaration(this.TestMethodName, isStatic: true);
|
||||
testMethodDecl.Parameter.Add(instanceType);
|
||||
testMethodDecl.Parameter.Add(new VariableType("len", LwipDefs.Vt_U16));
|
||||
testMethodDecl.Parameter.Add(new VariableType("value", VariableType.VoidString, "*"));
|
||||
testMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_Snmp_err);
|
||||
|
||||
if (generateDeclarations)
|
||||
{
|
||||
mibFile.Declarations.Add(testMethodDecl);
|
||||
}
|
||||
if (generateImplementations)
|
||||
{
|
||||
Function testMethod = Function.FromDeclaration(testMethodDecl);
|
||||
GenerateTestMethodCode(testMethod, switchSelector);
|
||||
mibFile.Implementation.Add(testMethod);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.setMethodRequired)
|
||||
{
|
||||
FunctionDeclaration setMethodDecl = new FunctionDeclaration(this.SetMethodName, isStatic: true);
|
||||
setMethodDecl.Parameter.Add(instanceType);
|
||||
setMethodDecl.Parameter.Add(new VariableType("len", LwipDefs.Vt_U16));
|
||||
setMethodDecl.Parameter.Add(new VariableType("value", VariableType.VoidString, "*"));
|
||||
setMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_Snmp_err);
|
||||
|
||||
if (generateDeclarations)
|
||||
{
|
||||
mibFile.Declarations.Add(setMethodDecl);
|
||||
}
|
||||
if (generateImplementations)
|
||||
{
|
||||
Function setMethod = Function.FromDeclaration(setMethodDecl);
|
||||
GenerateSetMethodCode(setMethod, switchSelector);
|
||||
mibFile.Implementation.Add(setMethod);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void GenerateGetMethodCode(Function getMethod, string switchSelector)
|
||||
{
|
||||
VariableDeclaration returnValue = new VariableDeclaration((VariableType)getMethod.ReturnType.Clone());
|
||||
returnValue.Type.Name = "value_len";
|
||||
getMethod.Declarations.Add(returnValue);
|
||||
Switch sw = new Switch(switchSelector);
|
||||
|
||||
bool valueVarUsed = false;
|
||||
|
||||
foreach (SnmpScalarNode scalarNode in this.AggregatedScalarNodes)
|
||||
{
|
||||
if ((scalarNode.AccessMode == SnmpAccessMode.ReadOnly) || (scalarNode.AccessMode == SnmpAccessMode.ReadWrite))
|
||||
{
|
||||
SwitchCase sc = new SwitchCase(scalarNode.Oid.ToString(CultureInfo.InvariantCulture));
|
||||
sc.Declarations.Add(new Comment(scalarNode.Name, singleLine: true));
|
||||
|
||||
scalarNode.GenerateGetMethodCode(sc, getMethod.Parameter[1].Name, ref valueVarUsed, returnValue.Type.Name);
|
||||
|
||||
sw.Switches.Add(sc);
|
||||
}
|
||||
}
|
||||
|
||||
SwitchCase scd = SwitchCase.GenerateDefault();
|
||||
scd.AddCodeFormat("LWIP_DEBUGF(SNMP_MIB_DEBUG,(\"{0}(): unknown id: %\"S32_F\"\\n\", {1}));", getMethod.Name, switchSelector);
|
||||
scd.AddCodeFormat("{0} = 0;", returnValue.Type.Name);
|
||||
sw.Switches.Add(scd);
|
||||
|
||||
if (!valueVarUsed)
|
||||
{
|
||||
getMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", getMethod.Parameter[1].Name);
|
||||
}
|
||||
|
||||
getMethod.AddElement(sw);
|
||||
|
||||
getMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
}
|
||||
|
||||
protected virtual void GenerateTestMethodCode(Function testMethod, string switchSelector)
|
||||
{
|
||||
VariableDeclaration returnValue = new VariableDeclaration((VariableType)testMethod.ReturnType.Clone(), LwipDefs.Def_ErrorCode_WrongValue);
|
||||
returnValue.Type.Name = "err";
|
||||
testMethod.Declarations.Add(returnValue);
|
||||
Switch sw = new Switch(switchSelector);
|
||||
|
||||
bool valueVarUsed = false;
|
||||
bool lenVarUsed = false;
|
||||
|
||||
foreach (SnmpScalarNode scalarNode in this.AggregatedScalarNodes)
|
||||
{
|
||||
if ((scalarNode.AccessMode == SnmpAccessMode.WriteOnly) || (scalarNode.AccessMode == SnmpAccessMode.ReadWrite))
|
||||
{
|
||||
SwitchCase sc = new SwitchCase(scalarNode.Oid.ToString(CultureInfo.InvariantCulture));
|
||||
sc.Declarations.Add(new Comment(scalarNode.Name, singleLine: true));
|
||||
|
||||
scalarNode.GenerateTestMethodCode(sc, testMethod.Parameter[2].Name, ref valueVarUsed, testMethod.Parameter[1].Name, ref lenVarUsed, returnValue.Type.Name);
|
||||
|
||||
sw.Switches.Add(sc);
|
||||
}
|
||||
}
|
||||
|
||||
SwitchCase scd = SwitchCase.GenerateDefault();
|
||||
scd.AddCodeFormat("LWIP_DEBUGF(SNMP_MIB_DEBUG,(\"{0}(): unknown id: %\"S32_F\"\\n\", {1}));", testMethod.Name, switchSelector);
|
||||
sw.Switches.Add(scd);
|
||||
|
||||
if (!valueVarUsed)
|
||||
{
|
||||
testMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", testMethod.Parameter[2].Name);
|
||||
}
|
||||
if (!lenVarUsed)
|
||||
{
|
||||
testMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", testMethod.Parameter[1].Name);
|
||||
}
|
||||
|
||||
testMethod.AddElement(sw);
|
||||
|
||||
testMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
}
|
||||
|
||||
protected virtual void GenerateSetMethodCode(Function setMethod, string switchSelector)
|
||||
{
|
||||
VariableDeclaration returnValue = new VariableDeclaration((VariableType)setMethod.ReturnType.Clone(), LwipDefs.Def_ErrorCode_Ok);
|
||||
returnValue.Type.Name = "err";
|
||||
setMethod.Declarations.Add(returnValue);
|
||||
Switch sw = new Switch(switchSelector);
|
||||
|
||||
bool valueVarUsed = false;
|
||||
bool lenVarUsed = false;
|
||||
|
||||
foreach (SnmpScalarNode scalarNode in this.AggregatedScalarNodes)
|
||||
{
|
||||
if ((scalarNode.AccessMode == SnmpAccessMode.WriteOnly) || (scalarNode.AccessMode == SnmpAccessMode.ReadWrite))
|
||||
{
|
||||
SwitchCase sc = new SwitchCase(scalarNode.Oid.ToString(CultureInfo.InvariantCulture));
|
||||
sc.Declarations.Add(new Comment(scalarNode.Name, singleLine: true));
|
||||
|
||||
scalarNode.GenerateSetMethodCode(sc, setMethod.Parameter[2].Name, ref valueVarUsed, setMethod.Parameter[1].Name, ref lenVarUsed, returnValue.Type.Name);
|
||||
|
||||
sw.Switches.Add(sc);
|
||||
}
|
||||
}
|
||||
|
||||
SwitchCase scd = SwitchCase.GenerateDefault();
|
||||
scd.AddCodeFormat("LWIP_DEBUGF(SNMP_MIB_DEBUG,(\"{0}(): unknown id: %\"S32_F\"\\n\", {1}));", setMethod.Name, switchSelector);
|
||||
sw.Switches.Add(scd);
|
||||
|
||||
if (!valueVarUsed)
|
||||
{
|
||||
setMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", setMethod.Parameter[2].Name);
|
||||
}
|
||||
if (!lenVarUsed)
|
||||
{
|
||||
setMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", setMethod.Parameter[1].Name);
|
||||
}
|
||||
|
||||
setMethod.AddElement(sw);
|
||||
|
||||
setMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarArrayNode : SnmpScalarAggregationNode
|
||||
{
|
||||
private readonly List<SnmpScalarNode> scalarNodes;
|
||||
|
||||
public SnmpScalarArrayNode(List<SnmpScalarNode> scalarNodes, SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
this.scalarNodes = scalarNodes;
|
||||
}
|
||||
|
||||
public override string FullNodeName
|
||||
{
|
||||
get { return this.Name.ToLowerInvariant() + "_scalars"; }
|
||||
}
|
||||
|
||||
protected override IEnumerable<SnmpScalarNode> AggregatedScalarNodes
|
||||
{
|
||||
get { return this.scalarNodes; }
|
||||
}
|
||||
|
||||
public override void GenerateCode(MibCFile mibFile)
|
||||
{
|
||||
VariableType instanceType = new VariableType("node", LwipDefs.Vt_StScalarArrayNodeDef, "*", ConstType.Value);
|
||||
GenerateAggregatedCode(
|
||||
mibFile,
|
||||
instanceType,
|
||||
instanceType.Name + "->oid");
|
||||
|
||||
|
||||
// create and add node definitions
|
||||
StringBuilder nodeDefs = new StringBuilder();
|
||||
foreach (SnmpScalarNode scalarNode in this.scalarNodes)
|
||||
{
|
||||
nodeDefs.AppendFormat(" {{{0}, {1}, {2}}}, /* {3} */ \n",
|
||||
scalarNode.Oid,
|
||||
LwipDefs.GetAsn1DefForSnmpDataType(scalarNode.DataType),
|
||||
LwipDefs.GetLwipDefForSnmpAccessMode(scalarNode.AccessMode),
|
||||
scalarNode.Name);
|
||||
}
|
||||
if (nodeDefs.Length > 0)
|
||||
nodeDefs.Length--;
|
||||
|
||||
VariableDeclaration nodeDefsDecl = new VariableDeclaration(
|
||||
new VariableType(this.FullNodeName + "_nodes", LwipDefs.Vt_StScalarArrayNodeDef, null, ConstType.Value, String.Empty),
|
||||
"{\n" + nodeDefs + "\n}" ,
|
||||
isStatic: true);
|
||||
|
||||
mibFile.Declarations.Add(nodeDefsDecl);
|
||||
|
||||
|
||||
// create and add node declaration
|
||||
string nodeInitialization = String.Format("SNMP_SCALAR_CREATE_ARRAY_NODE({0}, {1}, {2}, {3}, {4})",
|
||||
this.Oid,
|
||||
nodeDefsDecl.Type.Name,
|
||||
(this.GetMethodRequired) ? this.GetMethodName : LwipDefs.Null,
|
||||
(this.TestMethodRequired) ? this.TestMethodName : LwipDefs.Null,
|
||||
(this.SetMethodRequired) ? this.SetMethodName : LwipDefs.Null
|
||||
);
|
||||
|
||||
mibFile.Declarations.Add(new VariableDeclaration(
|
||||
new VariableType(this.FullNodeName, LwipDefs.Vt_StScalarArrayNode, null, ConstType.Value),
|
||||
nodeInitialization,
|
||||
isStatic: true));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,395 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNode: SnmpNode
|
||||
{
|
||||
protected const string LocalValueName = "v"; // name of (casted) local value variable
|
||||
|
||||
private SnmpDataType dataType;
|
||||
private SnmpAccessMode accessMode;
|
||||
private readonly List<IRestriction> restrictions = new List<IRestriction>();
|
||||
|
||||
private bool useExternalMethods = false;
|
||||
private string externalGetMethod;
|
||||
private string externalTestMethod;
|
||||
private string externalSetMethod;
|
||||
|
||||
|
||||
public SnmpScalarNode(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
}
|
||||
|
||||
public override string FullNodeName
|
||||
{
|
||||
get { return this.Name.ToLowerInvariant() + "_scalar"; }
|
||||
}
|
||||
|
||||
public SnmpDataType DataType
|
||||
{
|
||||
get { return this.dataType; }
|
||||
set { this.dataType = value; }
|
||||
}
|
||||
|
||||
public List<IRestriction> Restrictions
|
||||
{
|
||||
get { return this.restrictions; }
|
||||
}
|
||||
|
||||
public SnmpAccessMode AccessMode
|
||||
{
|
||||
get { return this.accessMode; }
|
||||
set { this.accessMode = value; }
|
||||
}
|
||||
|
||||
public virtual string FixedValueLength
|
||||
{
|
||||
get { return null; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// If scalar is used as a table index its value becomes part of the OID. This value returns how many OID parts are required to represent this value.
|
||||
/// </summary>
|
||||
public virtual int OidRepresentationLen
|
||||
{
|
||||
get { return -1; }
|
||||
}
|
||||
|
||||
public bool UseExternalMethods
|
||||
{
|
||||
get { return this.useExternalMethods; }
|
||||
set { this.useExternalMethods = value; }
|
||||
}
|
||||
|
||||
public string ExternalGetMethod
|
||||
{
|
||||
get { return this.externalGetMethod; }
|
||||
set { this.externalGetMethod = value; }
|
||||
}
|
||||
public string ExternalTestMethod
|
||||
{
|
||||
get { return this.externalTestMethod; }
|
||||
set { this.externalTestMethod = value; }
|
||||
}
|
||||
public string ExternalSetMethod
|
||||
{
|
||||
get { return this.externalSetMethod; }
|
||||
set { this.externalSetMethod = value; }
|
||||
}
|
||||
|
||||
public override void GenerateCode(MibCFile mibFile)
|
||||
{
|
||||
string getMethodName;
|
||||
string testMethodName;
|
||||
string setMethodName;
|
||||
|
||||
if (this.useExternalMethods)
|
||||
{
|
||||
getMethodName = this.externalGetMethod;
|
||||
testMethodName = this.externalTestMethod;
|
||||
setMethodName = this.externalSetMethod;
|
||||
}
|
||||
else
|
||||
{
|
||||
getMethodName = LwipDefs.Null;
|
||||
testMethodName = LwipDefs.Null;
|
||||
setMethodName = LwipDefs.Null;
|
||||
|
||||
if ((this.accessMode == SnmpAccessMode.ReadWrite) || (this.accessMode == SnmpAccessMode.ReadOnly))
|
||||
{
|
||||
FunctionDeclaration getMethodDecl = new FunctionDeclaration(this.Name + LwipDefs.FnctSuffix_GetValue, isStatic: true);
|
||||
getMethodDecl.Parameter.Add(new VariableType("instance", LwipDefs.Vt_StNodeInstance, "*"));
|
||||
getMethodDecl.Parameter.Add(new VariableType("value", VariableType.VoidString, "*"));
|
||||
getMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_S16);
|
||||
mibFile.Declarations.Add(getMethodDecl);
|
||||
|
||||
Function getMethod = Function.FromDeclaration(getMethodDecl);
|
||||
getMethodName = getMethod.Name;
|
||||
|
||||
VariableDeclaration returnValue = new VariableDeclaration((VariableType)getMethod.ReturnType.Clone());
|
||||
returnValue.Type.Name = "value_len";
|
||||
getMethod.Declarations.Add(returnValue);
|
||||
getMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", getMethod.Parameter[0].Name);
|
||||
|
||||
bool valueVarUsed = false;
|
||||
GenerateGetMethodCode(getMethod, getMethod.Parameter[1].Name, ref valueVarUsed, returnValue.Type.Name);
|
||||
if (!valueVarUsed)
|
||||
{
|
||||
getMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", getMethod.Parameter[1].Name);
|
||||
}
|
||||
|
||||
getMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
|
||||
mibFile.Implementation.Add(getMethod);
|
||||
}
|
||||
|
||||
if ((this.accessMode == SnmpAccessMode.ReadWrite) || (this.accessMode == SnmpAccessMode.WriteOnly))
|
||||
{
|
||||
bool valueVarUsed;
|
||||
bool lenVarUsed;
|
||||
VariableDeclaration returnValue;
|
||||
|
||||
if (this.restrictions.Count > 0)
|
||||
{
|
||||
FunctionDeclaration testMethodDecl = new FunctionDeclaration(this.Name + LwipDefs.FnctSuffix_SetTest, isStatic: true);
|
||||
testMethodDecl.Parameter.Add(new VariableType("instance", LwipDefs.Vt_StNodeInstance, "*"));
|
||||
testMethodDecl.Parameter.Add(new VariableType("len", LwipDefs.Vt_U16));
|
||||
testMethodDecl.Parameter.Add(new VariableType("value", VariableType.VoidString, "*"));
|
||||
testMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_Snmp_err);
|
||||
mibFile.Declarations.Add(testMethodDecl);
|
||||
|
||||
Function testMethod = Function.FromDeclaration(testMethodDecl);
|
||||
testMethodName = testMethod.Name;
|
||||
|
||||
returnValue = new VariableDeclaration((VariableType)testMethod.ReturnType.Clone(), LwipDefs.Def_ErrorCode_WrongValue);
|
||||
returnValue.Type.Name = "err";
|
||||
testMethod.Declarations.Add(returnValue);
|
||||
testMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", testMethod.Parameter[0].Name);
|
||||
|
||||
valueVarUsed = false;
|
||||
lenVarUsed = false;
|
||||
|
||||
GenerateTestMethodCode(testMethod, testMethod.Parameter[2].Name, ref valueVarUsed, testMethod.Parameter[1].Name, ref lenVarUsed, returnValue.Type.Name);
|
||||
|
||||
if (!valueVarUsed)
|
||||
{
|
||||
testMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", testMethod.Parameter[2].Name);
|
||||
}
|
||||
if (!lenVarUsed)
|
||||
{
|
||||
testMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", testMethod.Parameter[1].Name);
|
||||
}
|
||||
|
||||
testMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
|
||||
mibFile.Implementation.Add(testMethod);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
testMethodName = LwipDefs.FnctName_SetTest_Ok;
|
||||
}
|
||||
|
||||
FunctionDeclaration setMethodDecl = null;
|
||||
setMethodDecl = new FunctionDeclaration(this.Name + LwipDefs.FnctSuffix_SetValue, isStatic: true);
|
||||
setMethodDecl.Parameter.Add(new VariableType("instance", LwipDefs.Vt_StNodeInstance, "*"));
|
||||
setMethodDecl.Parameter.Add(new VariableType("len", LwipDefs.Vt_U16));
|
||||
setMethodDecl.Parameter.Add(new VariableType("value", VariableType.VoidString, "*"));
|
||||
setMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_Snmp_err);
|
||||
mibFile.Declarations.Add(setMethodDecl);
|
||||
|
||||
Function setMethod = Function.FromDeclaration(setMethodDecl);
|
||||
setMethodName = setMethod.Name;
|
||||
|
||||
returnValue = new VariableDeclaration((VariableType)setMethod.ReturnType.Clone(), LwipDefs.Def_ErrorCode_Ok);
|
||||
returnValue.Type.Name = "err";
|
||||
setMethod.Declarations.Add(returnValue);
|
||||
setMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", setMethod.Parameter[0].Name);
|
||||
|
||||
valueVarUsed = false;
|
||||
lenVarUsed = false;
|
||||
|
||||
GenerateSetMethodCode(setMethod, setMethod.Parameter[2].Name, ref valueVarUsed, setMethod.Parameter[1].Name, ref lenVarUsed, returnValue.Type.Name);
|
||||
|
||||
if (!valueVarUsed)
|
||||
{
|
||||
setMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", setMethod.Parameter[2].Name);
|
||||
}
|
||||
if (!lenVarUsed)
|
||||
{
|
||||
setMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", setMethod.Parameter[1].Name);
|
||||
}
|
||||
|
||||
setMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
|
||||
mibFile.Implementation.Add(setMethod);
|
||||
}
|
||||
}
|
||||
|
||||
// create and add node declaration
|
||||
string nodeInitialization;
|
||||
if (this.accessMode == SnmpAccessMode.ReadOnly)
|
||||
{
|
||||
nodeInitialization = String.Format("SNMP_SCALAR_CREATE_NODE_READONLY({0}, {1}, {2})",
|
||||
this.Oid,
|
||||
LwipDefs.GetAsn1DefForSnmpDataType(this.dataType),
|
||||
getMethodName);
|
||||
}
|
||||
else
|
||||
{
|
||||
nodeInitialization = String.Format("SNMP_SCALAR_CREATE_NODE({0}, {1}, {2}, {3}, {4}, {5})",
|
||||
this.Oid,
|
||||
LwipDefs.GetLwipDefForSnmpAccessMode(this.accessMode),
|
||||
LwipDefs.GetAsn1DefForSnmpDataType(this.dataType),
|
||||
getMethodName,
|
||||
testMethodName,
|
||||
setMethodName);
|
||||
}
|
||||
|
||||
mibFile.Declarations.Add(new VariableDeclaration(
|
||||
new VariableType(this.FullNodeName, LwipDefs.Vt_StScalarNode, null, ConstType.Value),
|
||||
nodeInitialization, isStatic: true));
|
||||
}
|
||||
|
||||
public virtual void GenerateGetMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string retLenVarName)
|
||||
{
|
||||
bool localValueVarUsed;
|
||||
if (GenerateValueDeclaration(container, LocalValueName, valueVarName))
|
||||
{
|
||||
valueVarUsed = true;
|
||||
localValueVarUsed = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
localValueVarUsed = true; // do not generate UNUSED_ARG code
|
||||
}
|
||||
|
||||
if (this.FixedValueLength == null)
|
||||
{
|
||||
// check that value with variable length fits into buffer
|
||||
container.AddElement(new Comment(String.Format("TODO: take care that value with variable length fits into buffer: ({0} <= SNMP_MAX_VALUE_SIZE)", retLenVarName), singleLine: true));
|
||||
}
|
||||
|
||||
GenerateGetMethodCodeCore(container, LocalValueName, ref localValueVarUsed, retLenVarName);
|
||||
if (!localValueVarUsed)
|
||||
{
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0});", LocalValueName));
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName)
|
||||
{
|
||||
container.AddElement(new Comment(String.Format("TODO: put requested value to '*{0}' here", localValueVarName), singleLine: true));
|
||||
container.AddCodeFormat("{0} = {1};",
|
||||
retLenVarName,
|
||||
(!String.IsNullOrWhiteSpace(this.FixedValueLength)) ? this.FixedValueLength : "0");
|
||||
}
|
||||
|
||||
public virtual void GenerateTestMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
if (this.Restrictions.Count > 0)
|
||||
{
|
||||
bool localVarUsed;
|
||||
if (GenerateValueDeclaration(container, LocalValueName, valueVarName))
|
||||
{
|
||||
valueVarUsed = true;
|
||||
localVarUsed = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
localVarUsed = true; // do not generate UNUSED_ARG code
|
||||
}
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(this.FixedValueLength))
|
||||
{
|
||||
// check for fixed value
|
||||
container.AddCodeFormat("LWIP_ASSERT(\"Invalid length for datatype\", ({0} == {1}));", lenVarName, this.FixedValueLength);
|
||||
lenVarUsed = true;
|
||||
}
|
||||
|
||||
GenerateTestMethodCodeCore(container, LocalValueName, ref localVarUsed, lenVarName, ref lenVarUsed, retErrVarName);
|
||||
|
||||
if (!localVarUsed)
|
||||
{
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0});", LocalValueName));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
container.AddCodeFormat("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
container.AddElement(new Comment(String.Format("TODO: test new value here:\nif (*{0} == ) {1} = {2};", localValueVarName, retErrVarName, LwipDefs.Def_ErrorCode_Ok)));
|
||||
}
|
||||
|
||||
public virtual void GenerateSetMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
bool localVarUsed;
|
||||
if (GenerateValueDeclaration(container, LocalValueName, valueVarName))
|
||||
{
|
||||
valueVarUsed = true;
|
||||
localVarUsed = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
localVarUsed = true; // do not generate UNUSED_ARG code
|
||||
}
|
||||
|
||||
GenerateSetMethodCodeCore(container, LocalValueName, ref localVarUsed, lenVarName, ref lenVarUsed, retErrVarName);
|
||||
|
||||
if (!localVarUsed)
|
||||
{
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0});", LocalValueName));
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void GenerateSetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
container.AddElement(new Comment(String.Format("TODO: store new value contained in '*{0}' here", localValueVarName), singleLine: true));
|
||||
}
|
||||
|
||||
|
||||
protected virtual bool GenerateValueDeclaration(CodeContainerBase container, string variableName, string sourceName)
|
||||
{
|
||||
container.AddDeclaration(new VariableDeclaration(
|
||||
new VariableType(variableName, LwipDefs.Vt_U8, "*"),
|
||||
"(" + new VariableType(null, LwipDefs.Vt_U8, "*") + ")" + sourceName));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static SnmpScalarNode CreateFromDatatype(SnmpDataType dataType, SnmpTreeNode parentNode)
|
||||
{
|
||||
switch (dataType)
|
||||
{
|
||||
case SnmpDataType.Integer:
|
||||
return new SnmpScalarNodeInt(parentNode);
|
||||
|
||||
case SnmpDataType.Gauge:
|
||||
case SnmpDataType.Counter:
|
||||
case SnmpDataType.TimeTicks:
|
||||
return new SnmpScalarNodeUint(dataType, parentNode);
|
||||
}
|
||||
|
||||
return new SnmpScalarNode(parentNode);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeBits : SnmpScalarNode
|
||||
{
|
||||
private readonly uint bitCount;
|
||||
|
||||
public SnmpScalarNodeBits(SnmpTreeNode parentNode, uint bitCount)
|
||||
: base(parentNode)
|
||||
{
|
||||
this.DataType = SnmpDataType.Bits;
|
||||
this.bitCount = bitCount;
|
||||
}
|
||||
|
||||
public override void GenerateGetMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string retLenVarName)
|
||||
{
|
||||
container.AddCode(String.Format(
|
||||
"{0} = snmp_encode_bits(({1} *){2}, SNMP_MAX_VALUE_SIZE, 0 /* TODO: pass real value here */, {3});",
|
||||
retLenVarName,
|
||||
LwipDefs.Vt_U8,
|
||||
valueVarName,
|
||||
this.bitCount));
|
||||
|
||||
valueVarUsed = true;
|
||||
}
|
||||
|
||||
public override void GenerateTestMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
if (this.Restrictions.Count > 0)
|
||||
{
|
||||
const string bitVarName = "bits";
|
||||
|
||||
container.Declarations.Add(new VariableDeclaration(new VariableType(bitVarName, LwipDefs.Vt_U32)));
|
||||
|
||||
IfThenElse ite = new IfThenElse(String.Format(
|
||||
"snmp_decode_bits(({0} *){1}, {2}, &{3}) == ERR_OK",
|
||||
LwipDefs.Vt_U8,
|
||||
valueVarName,
|
||||
lenVarName,
|
||||
bitVarName));
|
||||
|
||||
valueVarUsed = true;
|
||||
lenVarUsed = true;
|
||||
|
||||
StringBuilder innerIfCond = new StringBuilder();
|
||||
foreach (IRestriction restriction in this.Restrictions)
|
||||
{
|
||||
innerIfCond.Append(restriction.GetCheckCodeValid(bitVarName));
|
||||
innerIfCond.Append(" || ");
|
||||
}
|
||||
|
||||
innerIfCond.Length -= 4;
|
||||
|
||||
IfThenElse innerIte = new IfThenElse(innerIfCond.ToString());
|
||||
innerIte.AddCode(String.Format("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok));
|
||||
ite.AddElement(innerIte);
|
||||
container.AddElement(ite);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.GenerateTestMethodCode(container, valueVarName, ref valueVarUsed, lenVarName, ref lenVarUsed, retErrVarName);
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateSetMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
const string bitVarName = "bits";
|
||||
|
||||
container.Declarations.Add(new VariableDeclaration(new VariableType(bitVarName, LwipDefs.Vt_U32)));
|
||||
|
||||
IfThenElse ite = new IfThenElse(String.Format(
|
||||
"snmp_decode_bits(({0} *){1}, {2}, &{3}) == ERR_OK",
|
||||
LwipDefs.Vt_U8,
|
||||
valueVarName,
|
||||
lenVarName,
|
||||
bitVarName));
|
||||
|
||||
valueVarUsed = true;
|
||||
lenVarUsed = true;
|
||||
|
||||
ite.AddElement(new Comment(String.Format("TODO: store new value contained in '{0}' here", bitVarName), singleLine: true));
|
||||
|
||||
container.AddElement(ite);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeCounter64 : SnmpScalarNode
|
||||
{
|
||||
public SnmpScalarNodeCounter64(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
this.DataType = SnmpDataType.Counter64;
|
||||
}
|
||||
|
||||
protected override bool GenerateValueDeclaration(CodeContainerBase container, string variableName, string sourceName)
|
||||
{
|
||||
container.AddDeclaration(new VariableDeclaration(
|
||||
new VariableType(variableName + "_high", LwipDefs.Vt_U32, "*"),
|
||||
"(" + new VariableType(null, LwipDefs.Vt_U32, "*").ToString() + ")" + sourceName));
|
||||
container.AddDeclaration(new VariableDeclaration(
|
||||
new VariableType(variableName + "_low", LwipDefs.Vt_U32, "*"),
|
||||
variableName + "_high + 1"));
|
||||
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0}_high);", variableName));
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0}_low);", variableName));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override string FixedValueLength
|
||||
{
|
||||
get { return String.Format("(2 * sizeof({0}))", LwipDefs.Vt_U32); }
|
||||
}
|
||||
|
||||
public override int OidRepresentationLen
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeInt : SnmpScalarNode
|
||||
{
|
||||
public SnmpScalarNodeInt(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
this.DataType = SnmpDataType.Integer;
|
||||
}
|
||||
|
||||
protected override void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
System.Diagnostics.Trace.Assert(this.Restrictions.Count > 0);
|
||||
|
||||
StringBuilder ifCond = new StringBuilder();
|
||||
foreach (IRestriction restriction in this.Restrictions)
|
||||
{
|
||||
ifCond.Append(restriction.GetCheckCodeValid("*" + localValueVarName));
|
||||
ifCond.Append(" || ");
|
||||
|
||||
localValueVarUsed = true;
|
||||
}
|
||||
|
||||
ifCond.Length -= 4;
|
||||
|
||||
IfThenElse ite = new IfThenElse(ifCond.ToString());
|
||||
ite.AddCode(String.Format("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok));
|
||||
container.AddElement(ite);
|
||||
}
|
||||
|
||||
protected override bool GenerateValueDeclaration(CodeContainerBase container, string variableName, string sourceName)
|
||||
{
|
||||
container.AddDeclaration(new VariableDeclaration(
|
||||
new VariableType(variableName, LwipDefs.Vt_S32, "*"),
|
||||
"(" + new VariableType(null, LwipDefs.Vt_S32, "*") + ")" + sourceName));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override string FixedValueLength
|
||||
{
|
||||
get { return String.Format("sizeof({0})", LwipDefs.Vt_S32); }
|
||||
}
|
||||
|
||||
public override int OidRepresentationLen
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeObjectIdentifier: SnmpScalarNode
|
||||
{
|
||||
public SnmpScalarNodeObjectIdentifier(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
this.DataType = SnmpDataType.ObjectIdentifier;
|
||||
}
|
||||
|
||||
protected override bool GenerateValueDeclaration(CodeContainerBase container, string variableName, string sourceName)
|
||||
{
|
||||
container.AddDeclaration(new VariableDeclaration(
|
||||
new VariableType(variableName, LwipDefs.Vt_U32, "*"),
|
||||
"(" + new VariableType(null, LwipDefs.Vt_U32, "*") + ")" + sourceName));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName)
|
||||
{
|
||||
container.AddElement(new Comment(String.Format("TODO: put requested value to '*{0}' here. '{0}' has to be interpreted as {1}[]", localValueVarName, LwipDefs.Vt_U32), singleLine: true));
|
||||
container.AddElement(EmptyLine.SingleLine);
|
||||
container.AddCode(String.Format("{0} = 0; // TODO: return real value length here (should be 'numOfElements * sizeof({1})')", retLenVarName, LwipDefs.Vt_U32));
|
||||
}
|
||||
|
||||
protected override void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
VariableDeclaration objIdLenVar = new VariableDeclaration(
|
||||
new VariableType(localValueVarName + "_len", LwipDefs.Vt_U8),
|
||||
String.Format("{0} / sizeof({1})", lenVarName, LwipDefs.Vt_U32));
|
||||
lenVarUsed = true;
|
||||
|
||||
container.Declarations.Add(objIdLenVar);
|
||||
|
||||
base.GenerateTestMethodCodeCore(container, localValueVarName, ref localValueVarUsed, lenVarName, ref lenVarUsed, retErrVarName);
|
||||
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0});", objIdLenVar.Type.Name));
|
||||
}
|
||||
|
||||
protected override void GenerateSetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
VariableDeclaration objIdLenVar = new VariableDeclaration(
|
||||
new VariableType(localValueVarName + "_len", LwipDefs.Vt_U8),
|
||||
String.Format("{0} / sizeof({1})", lenVarName, LwipDefs.Vt_U32));
|
||||
lenVarUsed = true;
|
||||
|
||||
container.Declarations.Add(objIdLenVar);
|
||||
|
||||
base.GenerateSetMethodCodeCore(container, localValueVarName, ref localValueVarUsed, lenVarName, ref lenVarUsed, retErrVarName);
|
||||
|
||||
container.AddCode(String.Format("LWIP_UNUSED_ARG({0});", objIdLenVar.Type.Name));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeOctetString : SnmpScalarNode
|
||||
{
|
||||
public SnmpScalarNodeOctetString(SnmpDataType dataType, SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
System.Diagnostics.Debug.Assert(
|
||||
(dataType == SnmpDataType.OctetString) ||
|
||||
(dataType == SnmpDataType.Opaque) ||
|
||||
(dataType == SnmpDataType.IpAddress));
|
||||
|
||||
this.DataType = dataType;
|
||||
}
|
||||
|
||||
protected override void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName)
|
||||
{
|
||||
if (this.Restrictions.Count > 0)
|
||||
{
|
||||
StringBuilder ifCond = new StringBuilder();
|
||||
foreach (IRestriction restriction in this.Restrictions)
|
||||
{
|
||||
ifCond.Append(restriction.GetCheckCodeValid(retLenVarName));
|
||||
ifCond.Append(" || ");
|
||||
}
|
||||
|
||||
ifCond.Length -= 4;
|
||||
container.AddElement(new Comment("TODO: take care of len restrictions defined in MIB: " + ifCond, singleLine: true));
|
||||
}
|
||||
base.GenerateGetMethodCodeCore(container, localValueVarName, ref localValueVarUsed, retLenVarName);
|
||||
}
|
||||
|
||||
protected override void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
System.Diagnostics.Trace.Assert(this.Restrictions.Count > 0);
|
||||
|
||||
// checks refer to length of octet string
|
||||
StringBuilder ifCond = new StringBuilder();
|
||||
foreach (IRestriction restriction in this.Restrictions)
|
||||
{
|
||||
ifCond.Append(restriction.GetCheckCodeValid(lenVarName));
|
||||
ifCond.Append(" || ");
|
||||
|
||||
lenVarUsed = true;
|
||||
}
|
||||
|
||||
ifCond.Length -= 4;
|
||||
|
||||
IfThenElse ite = new IfThenElse(ifCond.ToString());
|
||||
ite.AddCode(String.Format("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok));
|
||||
container.AddElement(ite);
|
||||
}
|
||||
|
||||
public override int OidRepresentationLen
|
||||
{
|
||||
get
|
||||
{
|
||||
// check restrictions if we are set to one fixed length
|
||||
if ((this.Restrictions != null) && (this.Restrictions.Count > 0))
|
||||
{
|
||||
foreach (IRestriction restriction in this.Restrictions)
|
||||
{
|
||||
if (restriction is IsInRangeRestriction)
|
||||
{
|
||||
if ((restriction as IsInRangeRestriction).RangeStart == (restriction as IsInRangeRestriction).RangeEnd)
|
||||
{
|
||||
return (int)(restriction as IsInRangeRestriction).RangeStart;
|
||||
}
|
||||
}
|
||||
else if (restriction is IsEqualRestriction)
|
||||
{
|
||||
return (int)(restriction as IsEqualRestriction).Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1; // variable length
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeTruthValue : SnmpScalarNodeInt
|
||||
{
|
||||
public SnmpScalarNodeTruthValue(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName)
|
||||
{
|
||||
container.AddCodeFormat("snmp_encode_truthvalue({0}, /* TODO: put requested bool value here */ 0);", localValueVarName);
|
||||
localValueVarUsed = true;
|
||||
|
||||
container.AddCode(String.Format("{0} = {1};",
|
||||
retLenVarName,
|
||||
(!String.IsNullOrWhiteSpace(this.FixedValueLength)) ? this.FixedValueLength : "0"));
|
||||
}
|
||||
|
||||
protected override void GenerateSetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
VariableType truthVar = new VariableType("bool_value", LwipDefs.Vt_U8);
|
||||
container.Declarations.Add(new VariableDeclaration(truthVar));
|
||||
|
||||
container.AddCodeFormat("snmp_decode_truthvalue({0}, &{1});", localValueVarName, truthVar.Name);
|
||||
localValueVarUsed = true;
|
||||
|
||||
container.AddElement(new Comment(String.Format("TODO: store new value contained in '{0}' here", truthVar.Name), singleLine: true));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpScalarNodeUint : SnmpScalarNode
|
||||
{
|
||||
public SnmpScalarNodeUint(SnmpDataType dataType, SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
System.Diagnostics.Debug.Assert(
|
||||
(dataType == SnmpDataType.Counter) ||
|
||||
(dataType == SnmpDataType.Gauge) ||
|
||||
(dataType == SnmpDataType.TimeTicks));
|
||||
|
||||
this.DataType = dataType;
|
||||
}
|
||||
|
||||
protected override void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName)
|
||||
{
|
||||
System.Diagnostics.Trace.Assert(this.Restrictions.Count > 0);
|
||||
|
||||
StringBuilder ifCond = new StringBuilder();
|
||||
foreach (IRestriction restriction in this.Restrictions)
|
||||
{
|
||||
ifCond.Append(restriction.GetCheckCodeValid("*" + localValueVarName));
|
||||
ifCond.Append(" || ");
|
||||
|
||||
localValueVarUsed = true;
|
||||
}
|
||||
|
||||
ifCond.Length -= 4;
|
||||
|
||||
IfThenElse ite = new IfThenElse(ifCond.ToString());
|
||||
ite.AddCode(String.Format("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok));
|
||||
container.AddElement(ite);
|
||||
}
|
||||
|
||||
protected override bool GenerateValueDeclaration(CodeContainerBase container, string variableName, string sourceName)
|
||||
{
|
||||
container.AddDeclaration(new VariableDeclaration(
|
||||
new VariableType(variableName, LwipDefs.Vt_U32, "*"),
|
||||
"(" + new VariableType(null, LwipDefs.Vt_U32, "*") + ")" + sourceName));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override string FixedValueLength
|
||||
{
|
||||
get { return String.Format("sizeof({0})", LwipDefs.Vt_U32); }
|
||||
}
|
||||
|
||||
public override int OidRepresentationLen
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,332 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpTableNode: SnmpScalarAggregationNode
|
||||
{
|
||||
private readonly List<SnmpScalarNode> cellNodes = new List<SnmpScalarNode>();
|
||||
private readonly List<SnmpScalarNode> indexNodes = new List<SnmpScalarNode>();
|
||||
private string augmentedTableRow = null;
|
||||
|
||||
|
||||
public SnmpTableNode(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
}
|
||||
|
||||
public List<SnmpScalarNode> CellNodes
|
||||
{
|
||||
get { return cellNodes; }
|
||||
}
|
||||
|
||||
public List<SnmpScalarNode> IndexNodes
|
||||
{
|
||||
get { return indexNodes; }
|
||||
}
|
||||
|
||||
public string AugmentedTableRow
|
||||
{
|
||||
get { return this.augmentedTableRow; }
|
||||
set { this.augmentedTableRow = value; }
|
||||
}
|
||||
|
||||
public override string FullNodeName
|
||||
{
|
||||
get
|
||||
{
|
||||
string result = this.Name.ToLowerInvariant();
|
||||
if (!result.Contains("table"))
|
||||
{
|
||||
result += "_table";
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
protected override IEnumerable<SnmpScalarNode> AggregatedScalarNodes
|
||||
{
|
||||
get { return this.cellNodes; }
|
||||
}
|
||||
|
||||
public override void GenerateCode(MibCFile mibFile)
|
||||
{
|
||||
FunctionDeclaration getInstanceMethodDecl = new FunctionDeclaration(this.FullNodeName + LwipDefs.FnctSuffix_GetInstance, isStatic: true);
|
||||
getInstanceMethodDecl.Parameter.Add(new VariableType("column", LwipDefs.Vt_U32, "*", ConstType.Value));
|
||||
getInstanceMethodDecl.Parameter.Add(new VariableType("row_oid", LwipDefs.Vt_U32, "*", ConstType.Value));
|
||||
getInstanceMethodDecl.Parameter.Add(new VariableType("row_oid_len", LwipDefs.Vt_U8, ""));
|
||||
getInstanceMethodDecl.Parameter.Add(new VariableType("cell_instance", LwipDefs.Vt_StNodeInstance, "*"));
|
||||
getInstanceMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_Snmp_err);
|
||||
mibFile.Declarations.Add(getInstanceMethodDecl);
|
||||
|
||||
Function getInstanceMethod = Function.FromDeclaration(getInstanceMethodDecl);
|
||||
GenerateGetInstanceMethodCode(getInstanceMethod);
|
||||
mibFile.Implementation.Add(getInstanceMethod);
|
||||
|
||||
|
||||
FunctionDeclaration getNextInstanceMethodDecl = new FunctionDeclaration(this.FullNodeName + LwipDefs.FnctSuffix_GetNextInstance, isStatic: true);
|
||||
getNextInstanceMethodDecl.Parameter.Add(new VariableType("column", LwipDefs.Vt_U32, "*", ConstType.Value));
|
||||
getNextInstanceMethodDecl.Parameter.Add(new VariableType("row_oid", LwipDefs.Vt_StObjectId, "*"));
|
||||
getNextInstanceMethodDecl.Parameter.Add(new VariableType("cell_instance", LwipDefs.Vt_StNodeInstance, "*"));
|
||||
getNextInstanceMethodDecl.ReturnType = new VariableType(null, LwipDefs.Vt_Snmp_err);
|
||||
mibFile.Declarations.Add(getNextInstanceMethodDecl);
|
||||
|
||||
Function getNextInstanceMethod = Function.FromDeclaration(getNextInstanceMethodDecl);
|
||||
GenerateGetNextInstanceMethodCode(getNextInstanceMethod);
|
||||
mibFile.Implementation.Add(getNextInstanceMethod);
|
||||
|
||||
|
||||
VariableType instanceType = new VariableType("cell_instance", LwipDefs.Vt_StNodeInstance, "*");
|
||||
GenerateAggregatedCode(
|
||||
mibFile,
|
||||
instanceType,
|
||||
String.Format("SNMP_TABLE_GET_COLUMN_FROM_OID({0}->instance_oid.id)", instanceType.Name));
|
||||
|
||||
|
||||
#region create and add column/table definitions
|
||||
|
||||
StringBuilder colDefs = new StringBuilder();
|
||||
foreach (SnmpScalarNode colNode in this.cellNodes)
|
||||
{
|
||||
colDefs.AppendFormat(" {{{0}, {1}, {2}}}, /* {3} */ \n",
|
||||
colNode.Oid,
|
||||
LwipDefs.GetAsn1DefForSnmpDataType(colNode.DataType),
|
||||
LwipDefs.GetLwipDefForSnmpAccessMode(colNode.AccessMode),
|
||||
colNode.Name);
|
||||
}
|
||||
if (colDefs.Length > 0)
|
||||
{
|
||||
colDefs.Length--;
|
||||
}
|
||||
|
||||
VariableDeclaration colDefsDecl = new VariableDeclaration(
|
||||
new VariableType(this.FullNodeName + "_columns", LwipDefs.Vt_StTableColumnDef, null, ConstType.Value, String.Empty),
|
||||
"{\n" + colDefs + "\n}",
|
||||
isStatic: true);
|
||||
|
||||
mibFile.Declarations.Add(colDefsDecl);
|
||||
|
||||
string nodeInitialization = String.Format("SNMP_TABLE_CREATE({0}, {1}, {2}, {3}, {4}, {5}, {6})",
|
||||
this.Oid,
|
||||
colDefsDecl.Type.Name,
|
||||
getInstanceMethodDecl.Name, getNextInstanceMethodDecl.Name,
|
||||
(this.GetMethodRequired) ? this.GetMethodName : LwipDefs.Null,
|
||||
(this.TestMethodRequired) ? this.TestMethodName : LwipDefs.Null,
|
||||
(this.SetMethodRequired) ? this.SetMethodName : LwipDefs.Null
|
||||
);
|
||||
|
||||
mibFile.Declarations.Add(new VariableDeclaration(
|
||||
new VariableType(this.FullNodeName, LwipDefs.Vt_StTableNode, null, ConstType.Value),
|
||||
nodeInitialization,
|
||||
isStatic: true));
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
protected virtual void GenerateGetInstanceMethodCode(Function getInstanceMethod)
|
||||
{
|
||||
VariableDeclaration returnValue = new VariableDeclaration((VariableType)getInstanceMethod.ReturnType.Clone(), LwipDefs.Def_ErrorCode_NoSuchInstance);
|
||||
returnValue.Type.Name = "err";
|
||||
getInstanceMethod.Declarations.Add(returnValue);
|
||||
|
||||
int instanceOidLength = 0;
|
||||
StringBuilder indexColumns = new StringBuilder();
|
||||
foreach (SnmpScalarNode indexNode in this.indexNodes)
|
||||
{
|
||||
if (instanceOidLength >= 0)
|
||||
{
|
||||
if (indexNode.OidRepresentationLen >= 0)
|
||||
{
|
||||
instanceOidLength += indexNode.OidRepresentationLen;
|
||||
}
|
||||
else
|
||||
{
|
||||
// at least one index column has a variable length -> we cannot perform a static check
|
||||
instanceOidLength = -1;
|
||||
}
|
||||
}
|
||||
|
||||
indexColumns.AppendFormat(
|
||||
" {0} ({1}, OID length = {2})\n",
|
||||
indexNode.Name,
|
||||
indexNode.DataType,
|
||||
(indexNode.OidRepresentationLen >= 0) ? indexNode.OidRepresentationLen.ToString() : "variable");
|
||||
}
|
||||
if (indexColumns.Length > 0)
|
||||
{
|
||||
indexColumns.Length--;
|
||||
|
||||
getInstanceMethod.Declarations.Insert(0, new Comment(String.Format(
|
||||
"The instance OID of this table consists of following (index) column(s):\n{0}",
|
||||
indexColumns)));
|
||||
}
|
||||
|
||||
string augmentsHint = "";
|
||||
if (!String.IsNullOrWhiteSpace(this.augmentedTableRow))
|
||||
{
|
||||
augmentsHint = String.Format(
|
||||
"This table augments table '{0}'! Index columns therefore belong to table '{0}'!\n" +
|
||||
"You may simply call the '*{1}' method of this table.\n\n",
|
||||
(this.augmentedTableRow.ToLowerInvariant().EndsWith("entry")) ? this.augmentedTableRow.Substring(0, this.augmentedTableRow.Length-5) : this.augmentedTableRow,
|
||||
LwipDefs.FnctSuffix_GetInstance);
|
||||
}
|
||||
|
||||
CodeContainerBase ccb = getInstanceMethod;
|
||||
if (instanceOidLength > 0)
|
||||
{
|
||||
IfThenElse ite = new IfThenElse(String.Format("{0} == {1}", getInstanceMethod.Parameter[2].Name, instanceOidLength));
|
||||
getInstanceMethod.AddElement(ite);
|
||||
ccb = ite;
|
||||
}
|
||||
|
||||
ccb.AddCodeFormat("LWIP_UNUSED_ARG({0});", getInstanceMethod.Parameter[0].Name);
|
||||
ccb.AddCodeFormat("LWIP_UNUSED_ARG({0});", getInstanceMethod.Parameter[1].Name);
|
||||
if (instanceOidLength <= 0)
|
||||
{
|
||||
ccb.AddCodeFormat("LWIP_UNUSED_ARG({0});", getInstanceMethod.Parameter[2].Name);
|
||||
}
|
||||
ccb.AddCodeFormat("LWIP_UNUSED_ARG({0});", getInstanceMethod.Parameter[3].Name);
|
||||
|
||||
ccb.AddElement(new Comment(String.Format(
|
||||
"TODO: check if '{0}'/'{1}' params contain a valid instance oid for a row\n" +
|
||||
"If so, set '{2} = {3};'\n\n" +
|
||||
"snmp_oid_* methods may be used for easier processing of oid\n\n" +
|
||||
"{4}" +
|
||||
"In order to avoid decoding OID a second time in subsequent get_value/set_test/set_value methods,\n" +
|
||||
"you may store an arbitrary value (like a pointer to target value object) in '{5}->reference'/'{5}->reference_len'.\n" +
|
||||
"But be aware that not always a subsequent method is called -> Do NOT allocate memory here and try to release it in subsequent methods!\n\n" +
|
||||
"You also may replace function pointers in '{5}' param for get/test/set methods which contain the default values from table definition,\n" +
|
||||
"in order to provide special methods, for the currently processed cell. Changed pointers are only valid for current request.",
|
||||
getInstanceMethod.Parameter[1].Name,
|
||||
getInstanceMethod.Parameter[2].Name,
|
||||
returnValue.Type.Name,
|
||||
LwipDefs.Def_ErrorCode_Ok,
|
||||
augmentsHint,
|
||||
getInstanceMethod.Parameter[3].Name
|
||||
)));
|
||||
|
||||
getInstanceMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
}
|
||||
|
||||
protected virtual void GenerateGetNextInstanceMethodCode(Function getNextInstanceMethod)
|
||||
{
|
||||
getNextInstanceMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", getNextInstanceMethod.Parameter[0].Name);
|
||||
getNextInstanceMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", getNextInstanceMethod.Parameter[1].Name);
|
||||
getNextInstanceMethod.AddCodeFormat("LWIP_UNUSED_ARG({0});", getNextInstanceMethod.Parameter[2].Name);
|
||||
|
||||
VariableDeclaration returnValue = new VariableDeclaration((VariableType)getNextInstanceMethod.ReturnType.Clone(), LwipDefs.Def_ErrorCode_NoSuchInstance);
|
||||
returnValue.Type.Name = "err";
|
||||
getNextInstanceMethod.Declarations.Add(returnValue);
|
||||
|
||||
StringBuilder indexColumns = new StringBuilder();
|
||||
foreach (SnmpScalarNode indexNode in this.indexNodes)
|
||||
{
|
||||
indexColumns.AppendFormat(
|
||||
" {0} ({1}, OID length = {2})\n",
|
||||
indexNode.Name,
|
||||
indexNode.DataType,
|
||||
(indexNode.OidRepresentationLen >= 0) ? indexNode.OidRepresentationLen.ToString() : "variable");
|
||||
}
|
||||
if (indexColumns.Length > 0)
|
||||
{
|
||||
indexColumns.Length--;
|
||||
|
||||
getNextInstanceMethod.Declarations.Insert(0, new Comment(String.Format(
|
||||
"The instance OID of this table consists of following (index) column(s):\n{0}",
|
||||
indexColumns)));
|
||||
}
|
||||
|
||||
string augmentsHint = "";
|
||||
if (!String.IsNullOrWhiteSpace(this.augmentedTableRow))
|
||||
{
|
||||
augmentsHint = String.Format(
|
||||
"This table augments table '{0}'! Index columns therefore belong to table '{0}'!\n" +
|
||||
"You may simply call the '*{1}' method of this table.\n\n",
|
||||
(this.augmentedTableRow.ToLowerInvariant().EndsWith("entry")) ? this.augmentedTableRow.Substring(0, this.augmentedTableRow.Length-5) : this.augmentedTableRow,
|
||||
LwipDefs.FnctSuffix_GetNextInstance);
|
||||
}
|
||||
|
||||
getNextInstanceMethod.AddElement(new Comment(String.Format(
|
||||
"TODO: analyze '{0}->id'/'{0}->len' and return the subsequent row instance\n" +
|
||||
"Be aware that '{0}->id'/'{0}->len' must not point to a valid instance or have correct instance length.\n" +
|
||||
"If '{0}->len' is 0, return the first instance. If '{0}->len' is longer than expected, cut superfluous OID parts.\n" +
|
||||
"If a valid next instance is found, store it in '{0}->id'/'{0}->len' and set '{1} = {2};'\n\n" +
|
||||
"snmp_oid_* methods may be used for easier processing of oid\n\n" +
|
||||
"{3}" +
|
||||
"In order to avoid decoding OID a second time in subsequent get_value/set_test/set_value methods,\n" +
|
||||
"you may store an arbitrary value (like a pointer to target value object) in '{4}->reference'/'{4}->reference_len'.\n" +
|
||||
"But be aware that not always a subsequent method is called -> Do NOT allocate memory here and try to release it in subsequent methods!\n\n" +
|
||||
"You also may replace function pointers in '{4}' param for get/test/set methods which contain the default values from table definition,\n" +
|
||||
"in order to provide special methods, for the currently processed cell. Changed pointers are only valid for current request.",
|
||||
getNextInstanceMethod.Parameter[1].Name,
|
||||
returnValue.Type.Name,
|
||||
LwipDefs.Def_ErrorCode_Ok,
|
||||
augmentsHint,
|
||||
getNextInstanceMethod.Parameter[2].Name
|
||||
)));
|
||||
|
||||
getNextInstanceMethod.AddElement(new Comment(String.Format(
|
||||
"For easier processing and getting the next instance, you may use the 'snmp_next_oid_*' enumerator.\n" +
|
||||
"Simply pass all known instance OID's to it and it returns the next valid one:\n\n" +
|
||||
"{0} state;\n" +
|
||||
"{1} result_buf;\n" +
|
||||
"snmp_next_oid_init(&state, {2}->id, {2}->len, result_buf.id, SNMP_MAX_OBJ_ID_LEN);\n" +
|
||||
"while ({{not all instances passed}}) {{\n" +
|
||||
" {1} test_oid;\n" +
|
||||
" {{fill test_oid to create instance oid for next instance}}\n" +
|
||||
" snmp_next_oid_check(&state, test_oid.id, test_oid.len, {{target_data_ptr}});\n" +
|
||||
"}}\n" +
|
||||
"if(state.status == SNMP_NEXT_OID_STATUS_SUCCESS) {{\n" +
|
||||
" snmp_oid_assign(row_oid, state.next_oid, state.next_oid_len);\n" +
|
||||
" {3}->reference.ptr = state.reference; //==target_data_ptr, for usage in subsequent get/test/set\n" +
|
||||
" {4} = {5};\n" +
|
||||
"}}"
|
||||
,
|
||||
LwipDefs.Vt_StNextOidState,
|
||||
LwipDefs.Vt_StObjectId,
|
||||
getNextInstanceMethod.Parameter[1].Name,
|
||||
getNextInstanceMethod.Parameter[2].Name,
|
||||
returnValue.Type.Name,
|
||||
LwipDefs.Def_ErrorCode_Ok
|
||||
)));
|
||||
|
||||
getNextInstanceMethod.AddCodeFormat("return {0};", returnValue.Type.Name);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,242 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using CCodeGeneration;
|
||||
|
||||
namespace LwipSnmpCodeGeneration
|
||||
{
|
||||
public class SnmpTreeNode: SnmpScalarAggregationNode
|
||||
{
|
||||
private readonly List<SnmpNode> childNodes = new List<SnmpNode>();
|
||||
private readonly List<SnmpScalarNode> childScalarNodes = new List<SnmpScalarNode>();
|
||||
private string fullOid = "";
|
||||
|
||||
public SnmpTreeNode(SnmpTreeNode parentNode)
|
||||
: base(parentNode)
|
||||
{
|
||||
}
|
||||
|
||||
public override string FullNodeName
|
||||
{
|
||||
get { return this.Name.ToLowerInvariant() + "_treenode"; }
|
||||
}
|
||||
|
||||
public string FullOid
|
||||
{
|
||||
get { return this.fullOid; }
|
||||
set { this.fullOid = value; }
|
||||
}
|
||||
|
||||
public List<SnmpNode> ChildNodes
|
||||
{
|
||||
get { return this.childNodes; }
|
||||
}
|
||||
|
||||
protected override IEnumerable<SnmpScalarNode> AggregatedScalarNodes
|
||||
{
|
||||
get { return this.childScalarNodes; }
|
||||
}
|
||||
|
||||
private void GenerateAggregatedCode(MibCFile mibFile, bool generateDeclarations, bool generateImplementations)
|
||||
{
|
||||
VariableType instanceType = new VariableType("instance", LwipDefs.Vt_StNodeInstance, "*");
|
||||
base.GenerateAggregatedCode(
|
||||
mibFile,
|
||||
instanceType,
|
||||
String.Format("{0}->node->oid", instanceType.Name),
|
||||
generateDeclarations,
|
||||
generateImplementations);
|
||||
}
|
||||
|
||||
private void GenerateAggregateMethodDeclarations(MibCFile mibFile)
|
||||
{
|
||||
if (LwipOpts.GenerateSingleAccessMethodsForTreeNodeScalars && (this.childScalarNodes.Count > 1))
|
||||
{
|
||||
GenerateAggregatedCode(mibFile, true, false);
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateCode(MibCFile mibFile)
|
||||
{
|
||||
string nodeInitialization;
|
||||
|
||||
if (LwipOpts.GenerateSingleAccessMethodsForTreeNodeScalars && (this.childScalarNodes.Count > 1))
|
||||
{
|
||||
GenerateAggregatedCode(mibFile, false, true);
|
||||
}
|
||||
|
||||
// create and add node declaration
|
||||
if (this.childNodes.Count > 0)
|
||||
{
|
||||
StringBuilder subnodeArrayInitialization = new StringBuilder();
|
||||
|
||||
for (int i=0; i<this.childNodes.Count; i++)
|
||||
{
|
||||
subnodeArrayInitialization.Append(" &");
|
||||
subnodeArrayInitialization.Append(this.childNodes[i].FullNodeName);
|
||||
subnodeArrayInitialization.Append(".node");
|
||||
if (!(this.childNodes[i] is SnmpTreeNode))
|
||||
{
|
||||
subnodeArrayInitialization.Append(".node");
|
||||
}
|
||||
|
||||
if (i < (this.childNodes.Count - 1))
|
||||
{
|
||||
subnodeArrayInitialization.Append(",\n");
|
||||
}
|
||||
}
|
||||
|
||||
VariableDeclaration subnodeArray = new VariableDeclaration(
|
||||
new VariableType(this.Name.ToLowerInvariant() + "_subnodes", LwipDefs.Vt_StNode, "*", ConstType.Both, String.Empty),
|
||||
"{\n" + subnodeArrayInitialization + "\n}",
|
||||
isStatic: true);
|
||||
|
||||
mibFile.Declarations.Add(subnodeArray);
|
||||
|
||||
nodeInitialization = String.Format("SNMP_CREATE_TREE_NODE({0}, {1})", this.Oid, subnodeArray.Type.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
nodeInitialization = String.Format("SNMP_CREATE_EMPTY_TREE_NODE({0})", this.Oid);
|
||||
}
|
||||
|
||||
mibFile.Declarations.Add(new VariableDeclaration(
|
||||
new VariableType(this.FullNodeName, LwipDefs.Vt_StTreeNode, null, ConstType.Value),
|
||||
nodeInitialization,
|
||||
isStatic: true));
|
||||
}
|
||||
|
||||
public override void Analyze()
|
||||
{
|
||||
this.childScalarNodes.Clear();
|
||||
|
||||
// delegate analyze (don't use enumerator because the child node may change our child collection by e.g. removing or replacing itself)
|
||||
for (int i=this.ChildNodes.Count-1; i>=0; i--)
|
||||
{
|
||||
this.ChildNodes[i].Analyze();
|
||||
}
|
||||
|
||||
// collect scalar nodes
|
||||
foreach (SnmpNode childNode in this.childNodes)
|
||||
{
|
||||
SnmpScalarNode scalarNode = childNode as SnmpScalarNode;
|
||||
if (scalarNode != null)
|
||||
{
|
||||
this.childScalarNodes.Add(scalarNode);
|
||||
}
|
||||
}
|
||||
|
||||
base.Analyze();
|
||||
|
||||
// check if we can merge this node to a scalar array node (all childs need to be scalars)
|
||||
if (this.childNodes.Count > 0)
|
||||
{
|
||||
if (LwipOpts.GenerateScalarArrays && (this.childScalarNodes.Count == this.childNodes.Count) && (this.ParentNode != null))
|
||||
{
|
||||
SnmpScalarArrayNode scalarArrayNode = new SnmpScalarArrayNode(this.childScalarNodes, this.ParentNode);
|
||||
scalarArrayNode.Oid = this.Oid;
|
||||
scalarArrayNode.Name = this.Name;
|
||||
scalarArrayNode.Analyze();
|
||||
|
||||
for (int i=0; i<this.ParentNode.ChildNodes.Count; i++)
|
||||
{
|
||||
if (this.ParentNode.ChildNodes[i] == this)
|
||||
{
|
||||
this.ParentNode.ChildNodes.RemoveAt(i);
|
||||
this.ParentNode.ChildNodes.Insert(i, scalarArrayNode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (LwipOpts.GenerateSingleAccessMethodsForTreeNodeScalars && (this.childScalarNodes.Count > 1))
|
||||
{
|
||||
foreach (SnmpScalarNode scalarNode in this.childScalarNodes)
|
||||
{
|
||||
scalarNode.UseExternalMethods = true;
|
||||
scalarNode.ExternalGetMethod = this.GetMethodName;
|
||||
scalarNode.ExternalTestMethod = this.TestMethodName;
|
||||
scalarNode.ExternalSetMethod = this.SetMethodName;
|
||||
}
|
||||
}
|
||||
}
|
||||
else // if (this.childNodes.Count == 0)
|
||||
{
|
||||
if (!LwipOpts.GenerateEmptyFolders && (this.ParentNode != null))
|
||||
{
|
||||
// do not generate this empty folder because it only waste (static) memory
|
||||
for (int i=0; i<this.ParentNode.ChildNodes.Count; i++)
|
||||
{
|
||||
if (this.ParentNode.ChildNodes[i] == this)
|
||||
{
|
||||
this.ParentNode.ChildNodes.RemoveAt(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Generate(MibCFile generatedFile, MibHeaderFile generatedHeaderFile)
|
||||
{
|
||||
// generate code of child nodes
|
||||
foreach (SnmpNode childNode in this.childNodes)
|
||||
{
|
||||
if (childNode is SnmpTreeNode)
|
||||
{
|
||||
childNode.Generate(generatedFile, generatedHeaderFile);
|
||||
}
|
||||
}
|
||||
|
||||
Comment dividerComment = new Comment(
|
||||
String.Format("--- {0} {1} -----------------------------------------------------", this.Name, this.fullOid),
|
||||
singleLine: true);
|
||||
|
||||
generatedFile.Declarations.Add(dividerComment);
|
||||
generatedFile.Implementation.Add(dividerComment);
|
||||
|
||||
this.GenerateAggregateMethodDeclarations(generatedFile);
|
||||
|
||||
foreach (SnmpNode childNode in this.childNodes)
|
||||
{
|
||||
if (!(childNode is SnmpTreeNode))
|
||||
{
|
||||
childNode.Generate(generatedFile, generatedHeaderFile);
|
||||
}
|
||||
}
|
||||
|
||||
base.Generate(generatedFile, generatedHeaderFile);
|
||||
}
|
||||
}
|
||||
}
|
166
contrib/apps/LwipMibCompiler/MibViewer/FormMain.Designer.cs
generated
Normal file
166
contrib/apps/LwipMibCompiler/MibViewer/FormMain.Designer.cs
generated
Normal file
@ -0,0 +1,166 @@
|
||||
namespace LwipMibViewer
|
||||
{
|
||||
partial class FormMain
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Windows Form-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
|
||||
this.treeMib = new System.Windows.Forms.TreeView();
|
||||
this.imagelistTreeNodeImages = new System.Windows.Forms.ImageList(this.components);
|
||||
this.splitContainerMain = new System.Windows.Forms.SplitContainer();
|
||||
this.listviewNodeDetails = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.toolStripMain = new System.Windows.Forms.ToolStrip();
|
||||
this.toolbuttonOpenMib = new System.Windows.Forms.ToolStripButton();
|
||||
this.dialogOpenMib = new System.Windows.Forms.OpenFileDialog();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerMain)).BeginInit();
|
||||
this.splitContainerMain.Panel1.SuspendLayout();
|
||||
this.splitContainerMain.Panel2.SuspendLayout();
|
||||
this.splitContainerMain.SuspendLayout();
|
||||
this.toolStripMain.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// treeMib
|
||||
//
|
||||
this.treeMib.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.treeMib.ImageIndex = 0;
|
||||
this.treeMib.ImageList = this.imagelistTreeNodeImages;
|
||||
this.treeMib.Location = new System.Drawing.Point(0, 0);
|
||||
this.treeMib.Name = "treeMib";
|
||||
this.treeMib.SelectedImageIndex = 0;
|
||||
this.treeMib.Size = new System.Drawing.Size(1028, 418);
|
||||
this.treeMib.TabIndex = 0;
|
||||
this.treeMib.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeMib_AfterSelect);
|
||||
//
|
||||
// imagelistTreeNodeImages
|
||||
//
|
||||
this.imagelistTreeNodeImages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imagelistTreeNodeImages.ImageStream")));
|
||||
this.imagelistTreeNodeImages.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imagelistTreeNodeImages.Images.SetKeyName(0, "ntimgContainer");
|
||||
this.imagelistTreeNodeImages.Images.SetKeyName(1, "ntimgTable");
|
||||
this.imagelistTreeNodeImages.Images.SetKeyName(2, "ntimgRow");
|
||||
this.imagelistTreeNodeImages.Images.SetKeyName(3, "ntimgColumn");
|
||||
this.imagelistTreeNodeImages.Images.SetKeyName(4, "ntimgScalar");
|
||||
this.imagelistTreeNodeImages.Images.SetKeyName(5, "ntimgUnknown");
|
||||
//
|
||||
// splitContainerMain
|
||||
//
|
||||
this.splitContainerMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainerMain.Location = new System.Drawing.Point(0, 25);
|
||||
this.splitContainerMain.Name = "splitContainerMain";
|
||||
this.splitContainerMain.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainerMain.Panel1
|
||||
//
|
||||
this.splitContainerMain.Panel1.Controls.Add(this.treeMib);
|
||||
//
|
||||
// splitContainerMain.Panel2
|
||||
//
|
||||
this.splitContainerMain.Panel2.Controls.Add(this.listviewNodeDetails);
|
||||
this.splitContainerMain.Size = new System.Drawing.Size(1028, 625);
|
||||
this.splitContainerMain.SplitterDistance = 418;
|
||||
this.splitContainerMain.TabIndex = 1;
|
||||
//
|
||||
// listviewNodeDetails
|
||||
//
|
||||
this.listviewNodeDetails.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2});
|
||||
this.listviewNodeDetails.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.listviewNodeDetails.FullRowSelect = true;
|
||||
this.listviewNodeDetails.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
|
||||
this.listviewNodeDetails.Location = new System.Drawing.Point(0, 0);
|
||||
this.listviewNodeDetails.Name = "listviewNodeDetails";
|
||||
this.listviewNodeDetails.Size = new System.Drawing.Size(1028, 203);
|
||||
this.listviewNodeDetails.TabIndex = 0;
|
||||
this.listviewNodeDetails.UseCompatibleStateImageBehavior = false;
|
||||
this.listviewNodeDetails.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
this.columnHeader1.Text = "";
|
||||
this.columnHeader1.Width = 150;
|
||||
//
|
||||
// columnHeader2
|
||||
//
|
||||
this.columnHeader2.Text = "";
|
||||
this.columnHeader2.Width = 777;
|
||||
//
|
||||
// toolStripMain
|
||||
//
|
||||
this.toolStripMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolbuttonOpenMib});
|
||||
this.toolStripMain.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStripMain.Name = "toolStripMain";
|
||||
this.toolStripMain.Size = new System.Drawing.Size(1028, 25);
|
||||
this.toolStripMain.TabIndex = 2;
|
||||
//
|
||||
// toolbuttonOpenMib
|
||||
//
|
||||
this.toolbuttonOpenMib.Image = ((System.Drawing.Image)(resources.GetObject("toolbuttonOpenMib.Image")));
|
||||
this.toolbuttonOpenMib.Name = "toolbuttonOpenMib";
|
||||
this.toolbuttonOpenMib.Size = new System.Drawing.Size(65, 22);
|
||||
this.toolbuttonOpenMib.Text = "Open...";
|
||||
this.toolbuttonOpenMib.Click += new System.EventHandler(this.toolbuttonOpenMib_Click);
|
||||
//
|
||||
// FormMain
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1028, 650);
|
||||
this.Controls.Add(this.splitContainerMain);
|
||||
this.Controls.Add(this.toolStripMain);
|
||||
this.Name = "FormMain";
|
||||
this.Text = "MIB Viewer";
|
||||
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
|
||||
this.splitContainerMain.Panel1.ResumeLayout(false);
|
||||
this.splitContainerMain.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainerMain)).EndInit();
|
||||
this.splitContainerMain.ResumeLayout(false);
|
||||
this.toolStripMain.ResumeLayout(false);
|
||||
this.toolStripMain.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TreeView treeMib;
|
||||
private System.Windows.Forms.SplitContainer splitContainerMain;
|
||||
private System.Windows.Forms.ListView listviewNodeDetails;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ImageList imagelistTreeNodeImages;
|
||||
private System.Windows.Forms.ToolStrip toolStripMain;
|
||||
private System.Windows.Forms.ToolStripButton toolbuttonOpenMib;
|
||||
private System.Windows.Forms.OpenFileDialog dialogOpenMib;
|
||||
}
|
||||
}
|
||||
|
217
contrib/apps/LwipMibCompiler/MibViewer/FormMain.cs
Normal file
217
contrib/apps/LwipMibCompiler/MibViewer/FormMain.cs
Normal file
@ -0,0 +1,217 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System.Windows.Forms;
|
||||
using Lextm.SharpSnmpLib.Mib;
|
||||
using Lextm.SharpSnmpLib.Mib.Elements;
|
||||
using Lextm.SharpSnmpLib.Mib.Elements.Types;
|
||||
using Lextm.SharpSnmpLib.Mib.Elements.Entities;
|
||||
using System.IO;
|
||||
|
||||
namespace LwipMibViewer
|
||||
{
|
||||
public partial class FormMain : Form
|
||||
{
|
||||
readonly ListViewGroup listviewgroupAbstract;
|
||||
readonly ListViewGroup listviewgroupElement;
|
||||
readonly ListViewGroup listviewgroupBaseType;
|
||||
readonly ListViewGroup listviewgroupTypeChain;
|
||||
|
||||
public FormMain()
|
||||
{
|
||||
this.Font = SystemInformation.MenuFont;
|
||||
InitializeComponent();
|
||||
|
||||
this.listviewgroupAbstract = new ListViewGroup("Abstract", System.Windows.Forms.HorizontalAlignment.Left);
|
||||
this.listviewgroupElement = new ListViewGroup("Element Properties", System.Windows.Forms.HorizontalAlignment.Left);
|
||||
this.listviewgroupBaseType = new ListViewGroup("Element Base Type", System.Windows.Forms.HorizontalAlignment.Left);
|
||||
this.listviewgroupTypeChain = new ListViewGroup("Element Type Chain", System.Windows.Forms.HorizontalAlignment.Left);
|
||||
this.listviewNodeDetails.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] {
|
||||
listviewgroupAbstract,
|
||||
listviewgroupElement,
|
||||
listviewgroupBaseType,
|
||||
listviewgroupTypeChain});
|
||||
|
||||
try
|
||||
{
|
||||
DirectoryInfo dirInfo = new DirectoryInfo(Path.GetDirectoryName(Application.ExecutablePath));
|
||||
if (dirInfo != null)
|
||||
{
|
||||
dirInfo = dirInfo.Parent;
|
||||
if (dirInfo != null)
|
||||
{
|
||||
dirInfo = dirInfo.Parent;
|
||||
if (dirInfo != null)
|
||||
{
|
||||
dirInfo = new DirectoryInfo(Path.Combine(dirInfo.FullName, "Mibs"));
|
||||
if (dirInfo.Exists)
|
||||
{
|
||||
MibTypesResolver.RegisterResolver(new FileSystemMibResolver(dirInfo.FullName, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
|
||||
#region GUI Event Handler
|
||||
|
||||
private void toolbuttonOpenMib_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
if (this.dialogOpenMib.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
OpenMib(this.dialogOpenMib.FileName);
|
||||
}
|
||||
}
|
||||
|
||||
private void treeMib_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
listviewNodeDetails.Items.Clear();
|
||||
|
||||
if (e.Node != null)
|
||||
{
|
||||
MibTreeNode mtn = e.Node.Tag as MibTreeNode;
|
||||
if (mtn != null)
|
||||
{
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Abstract", mtn.NodeType.ToString() }, this.listviewgroupAbstract));
|
||||
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Module", (mtn.Entity.Module != null) ? mtn.Entity.Module.Name : "" }, this.listviewgroupElement));
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Type", mtn.Entity.GetType().Name }, this.listviewgroupElement));
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Name", mtn.Entity.Name }, this.listviewgroupElement));
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Description", mtn.Entity.Description }, this.listviewgroupElement));
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "OID", mtn.Entity.Value.ToString() }, this.listviewgroupElement));
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Full OID", MibTypesResolver.ResolveOid(mtn.Entity).GetOidString() }, this.listviewgroupElement));
|
||||
if (mtn.Entity is ObjectType)
|
||||
{
|
||||
listviewNodeDetails.Items.Add(new ListViewItem(new string[] { "Access", (mtn.Entity as ObjectType).Access.ToString() }, this.listviewgroupElement));
|
||||
}
|
||||
|
||||
ITypeReferrer tr = mtn.Entity as ITypeReferrer;
|
||||
if (tr != null)
|
||||
{
|
||||
ShowTypeDetails(listviewNodeDetails, this.listviewgroupBaseType, tr.BaseType);
|
||||
ShowTypeChain(listviewNodeDetails, tr.ReferredType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
private void OpenMib(string file)
|
||||
{
|
||||
try
|
||||
{
|
||||
MibDocument md = new MibDocument(file);
|
||||
MibTypesResolver.ResolveTypes(md.Modules[0]);
|
||||
|
||||
this.treeMib.Nodes.Clear();
|
||||
this.listviewNodeDetails.Items.Clear();
|
||||
|
||||
MibTree mt = new MibTree(md.Modules[0] as MibModule);
|
||||
foreach (MibTreeNode mibTreeNode in mt.Root)
|
||||
{
|
||||
AddNode(mibTreeNode, this.treeMib.Nodes);
|
||||
|
||||
foreach (TreeNode node in this.treeMib.Nodes)
|
||||
{
|
||||
node.Expand();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void AddNode(MibTreeNode mibNode, TreeNodeCollection parentNodes)
|
||||
{
|
||||
int imgIndex = 5; //unknown
|
||||
if ((mibNode.NodeType & MibTreeNodeType.Table) != 0)
|
||||
{
|
||||
imgIndex = 1;
|
||||
}
|
||||
else if ((mibNode.NodeType & MibTreeNodeType.TableRow) != 0)
|
||||
{
|
||||
imgIndex = 2;
|
||||
}
|
||||
else if ((mibNode.NodeType & MibTreeNodeType.TableCell) != 0)
|
||||
{
|
||||
imgIndex = 3;
|
||||
}
|
||||
else if ((mibNode.NodeType & MibTreeNodeType.Scalar) != 0)
|
||||
{
|
||||
imgIndex = 4;
|
||||
}
|
||||
else if ((mibNode.NodeType & MibTreeNodeType.Container) != 0)
|
||||
{
|
||||
imgIndex = 0;
|
||||
}
|
||||
|
||||
TreeNode newNode = new TreeNode(mibNode.Entity.Name, imgIndex, imgIndex);
|
||||
newNode.Tag = mibNode;
|
||||
|
||||
parentNodes.Add(newNode);
|
||||
|
||||
foreach (MibTreeNode child in mibNode.ChildNodes)
|
||||
{
|
||||
AddNode(child, newNode.Nodes);
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowTypeChain(ListView lv, ITypeAssignment type)
|
||||
{
|
||||
ShowTypeDetails(lv, this.listviewgroupTypeChain, type);
|
||||
|
||||
ITypeReferrer tr = type as ITypeReferrer;
|
||||
if ((tr != null) && (tr.ReferredType != null))
|
||||
{
|
||||
lv.Items.Add(new ListViewItem(new string[] { " >>>", "" }, this.listviewgroupTypeChain));
|
||||
ShowTypeChain(listviewNodeDetails, tr.ReferredType);
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowTypeDetails(ListView lv, ListViewGroup lvg, ITypeAssignment type)
|
||||
{
|
||||
lv.Items.Add(new ListViewItem(new string[] { "Module", (type.Module != null) ? type.Module.Name : "" }, lvg));
|
||||
lv.Items.Add(new ListViewItem(new string[] { "Type", type.GetType().Name }, lvg));
|
||||
lv.Items.Add(new ListViewItem(new string[] { "Name", type.Name }, lvg));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
298
contrib/apps/LwipMibCompiler/MibViewer/FormMain.resx
Normal file
298
contrib/apps/LwipMibCompiler/MibViewer/FormMain.resx
Normal file
@ -0,0 +1,298 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="imagelistTreeNodeImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imagelistTreeNodeImages.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo
|
||||
IQAAAk1TRnQBSQFMAgEBBgEAARABAAEQAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIBIAAwQBBQMWAR4DIgEyAzEBTwJGAUQBhwMvAUsDHgErAxsBJgMYASIDFQEd
|
||||
AxIBGAMNARIDCgENAwcBCQMEAQUDAQECAwQBBQMWAR4DIgEyAzEBTgJGAUQBhwMvAUsDHgErAxsBJgMb
|
||||
ASYDIQExAyEBMAMdASoDGwEmAxgBIQMLAQ8DAQECgAADAgEDAwwBEAMrAUMCRgFEAYIC/wHwAf8CRgFE
|
||||
AYIDKgFAAw8BFAMNAREDCwEPAwkBDAMHAQoDBQEHAwQBBQMCAQMDAAEBAwIBAwMLAQ8DKwFDAkYBRAGC
|
||||
Av8B8AH/AkYBRAGCAyoBQAMOARMDEgEZAT0COwFpAVwBRQFCAawBZwE+AToBxAFaAUUBQwGqATwBOwE6
|
||||
AWYDEAEWAwABAYQAAx4BKwJEAUIBewL/AfAB/wLpAdoD/wHxAf8CRAFCAXsDHgErJAADHgErAkQBQgF7
|
||||
Av8B8AH/AukB2gP/AfEB/wJEAUIBewMeASsBLgItAUcBdwFHATwByQG7AVQBPQHxA+4B/wG7AVMBPAHx
|
||||
AXcBRgE8AckBLgItAUeEAAMdASoCRAFCAXcC/wHwAf8B6wHdAbEB/wH3AcEBNwH/Ae0B3wGzA/8B8gH/
|
||||
AkQBQgF3Ax0BKhwAAx0BKgJEAUIBdwL/AfAB/wLpAdoB/wLqAdwB/wLrAd4D/wHyAf8CRAFCAXcBZAFJ
|
||||
AUIBrwG2AVkBQQHxAc0BVAEyAf8BvQF5AWIB/wHFAVABLgH/AbEBUQE1AfEBXAFIAUQBn4QAAkMBQQF2
|
||||
Av8B8AH/AukB2gH/AecBqwEhAf8B5wGrASEB/wHnAasBIQH/AeoB2wGwA/8B9AH/AkMBQQF2Ax0BKhgA
|
||||
AkMBQQF2Av8B8AH/AukB2gH/AuoB3AH/AusB3gH/AuwB3wH/Au0B4QP/AfQB/wGAAUQBMQHaAc4BcAFN
|
||||
AfwBugFMASoB/wPSAf8BvgGLAXgB/wG7AVIBMgH8AW8BSQE/AbqEAAMdASkCQwFBAXQC/wHxAf8B5wHX
|
||||
AasB/wHXAZYBDAH/AdcBlgEMAf8B1wGWAQwB/wHoAdgBrgP/AfUB/wJDAUEBdAMdASkUAAMdASkCQwFB
|
||||
AXQC/wHxAf8C6wHeAf8C7AHfAf8C7QHhAf8C7gHjAf8C7wHlAf8BzQF5AV4B/wHOAXcBWAH3AbwBVAEy
|
||||
Af8BtAFMASoB/wPmAf8BtwFlAUsB8AFdAUkBRAGdiAADHQEpAkIBQQFyAv8B8gH/AeUB1AGpAf8BzQGJ
|
||||
AQAB/wHNAYkBAAH/Ac0BiQEAAf8B6AHXAa8D/wH3Af8CQgFBAXIDHAEoFAADHQEpAkIBQQFyAv8B8gH/
|
||||
Au0B4QH/Au4B4wH/Au8B5QH/AvAB5wH/AeABuwGqAf8BzgFpAUgB/wHjAcsBwQH5BP8B3gHHAb0B9QF+
|
||||
AU8BQgHEAi0BLAFFjAADHAEoAkEBQAFxAv8B9AH/AecB1gGsAf8B0QGOAQQB/wHRAY4BBAH/AdEBjgEE
|
||||
Af8B7AHbAbMD/wH4Af8CQQFAAXEDHAEoFAADHAEoAkEBQAFxAv8B9AH/Au8B5QH/AvAB5wH/AvEB6QH/
|
||||
AvMB6gH/AeQBvgGsAf8B1AGBAWIB/wGGAUoBNAHXAWYBTQFEAaoCLQEsAUWUAAMcAScCQQFAAW8C/wH1
|
||||
Af8B7AHcAbMB/wHfAaEBFwH/Ad8BoQEXAf8B3wGhARcB/wHxAeIBuwP/AfoB/wJBAUABbwMcAScUAAMc
|
||||
AScCQQFAAW8C/wH1Af8C8QHpAf8C8wHqAf8C9AHsAf8C9QHuAf8C9gHwA/8B+gH/AkEBQAFvAxwBJ5gA
|
||||
AxwBJwJAAT8BbQL/AfcB/wHyAeMBuwH/AfABuAEuAf8B8AG4AS4B/wHwAbgBLgH/AvgB9AP/AfsB/wJA
|
||||
AT8BbQMcAScUAAMcAScCQAE/AW0C/wH3Af8C9AHsAf8C9QHuAf8C9gHwAf8C9wHyAf8C+AH0A/8B+wH/
|
||||
AkABPwFtAxwBJ5gAAxsBJgJAAT8BbAL/AfgB/wH3AeoBwwH/Af0ByQE/Af8B+QHsAccB/wL7AfcB/wL8
|
||||
AfkD/wH8Af8CQAE/AWwDGwEmFAADGwEmAkABPwFsAv8B+AH/AvYB8AH/AvcB8gH/AvgB9AH/AvsB9wH/
|
||||
AvwB+QP/AfwB/wJAAT8BbAMbASaYAAMbASYCPwE+AWsC/wH6Af8C+AH0Af8C+wH3Af8C3wHVAf8CyQG5
|
||||
Af8C4AHWA/8B/gH/Aj8BPgFrGAADGwEmAj8BPgFrAv8B+gH/AvgB9AH/AvsB9wH/At8B1QH/AskBuQH/
|
||||
AuAB1gP/Af4B/wI/AT4Ba5wAAxoBJQI/AT0BaQL/AfsB/wL8AfkB/wK8AawB/wQAArwBrAP/Af4B/wI/
|
||||
AT0BaRwAAxoBJQI/AT0BaQL/AfsB/wL8AfkB/wK8AawB/wQAArwBrAP/Af4B/wI/AT0BaaAAAxoBJQI+
|
||||
AT0BaAL/AfwB/wLLAcEB/wKgAZAB/wLLAcED/wH+Af8CPgE9AWggAAMaASUCPgE9AWgC/wH8Af8CywHB
|
||||
Af8CoAGQAf8CywHBA/8B/gH/Aj4BPQFopAADGgElAj4BPQFnAv8B/gP/Af4D/wH+Bf8CPgE9AWckAAMa
|
||||
ASUCPgE9AWcC/wH+A/8B/gP/Af4F/wI+AT0BZ6gAAxoBJAI+AT0BZgI+AT0BZgI+AT0BZgI+AT0BZgMx
|
||||
AU0oAAMaASQCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYDMQFNlAADIQEwAUABRgFIAXwBQwFOAVIBkgMF
|
||||
AQccAAMHAQkDEAEWAxMBGgMTARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDEwEa
|
||||
AxABFgMHAQkDBwEJAxABFgMTARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDEwEa
|
||||
AxMBGgMQARYDBwEJAwcBCQMQARYDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDEwEaAxMBGgMTARoDEwEa
|
||||
AxMBGgMTARoDEAEWAwcBCQwAAjIBMwFQAUMBUQFXAZkBRQFkAXQBwAFYAYsBogHgATwBWAFqAcEDEwEa
|
||||
AwUBBxgAAjwBOwFpAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGH
|
||||
AkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAjwBOwFpAjkBNAFpAkABNwGHAkABNwGH
|
||||
AkABNwGHAkABNwGHAkABNwGHAkABNwGHAkABNwGHAkABNwGHAkABNwGHAkABNwGHAkABNwGHAkABNwGH
|
||||
AkABNwGHAkABNwGHAjkBNAFpAjwBOwFpAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGH
|
||||
AkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAkYBRAGHAjwBOwFpAw0BEQMa
|
||||
ASQBRAFNAVEBmAE8AYkBrAHyAWcBrwHTAfoBggHLAewB/wGFAc4B7gH/ARUBWwGCAe8BOgFXAWYBxAE6
|
||||
AVcBZgHEAT4BWgFqAb4BPgFaAWoBvgE+AVoBagG+AUQBTQFRAZgDGgEkAw0BEQJGAUMBgQL5AekB/wLz
|
||||
AeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLz
|
||||
AeIB/wLzAeIB/wL5AekB/wJGAUMBgQJDAToBgQL5AekB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLz
|
||||
AeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wL5AekB/wJDAToBgQJG
|
||||
AUMBgQL5AekB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLzAeIB/wLz
|
||||
AeIB/wLzAeIB/wLzAeIB/wLzAeIB/wL5AekB/wJGAUMBgQMHAQkDDQESAUIBWwFmAbIBiAHQAe8B/wF9
|
||||
AcoB6QH/AX0BygHpAf8BhwHQAe8B/wEkAXsBqQH/AX0BvAHbAf8BfQG8AdsB/wGNAdEB8wH/AY0B0QHz
|
||||
Af8BkAHUAfUB/wFCAVsBZgGyATACMQFNAwcBCQJEAUMBegL0AeQC/wHMAUIB/wH+AcsBQQH/AewB0gGG
|
||||
Af8C2gHJAf8C2AHHAf8C1gHFAf8C1AHDAf8C0wHCAf8C0QHAAf8CzwG+Af8CzgG9Af8CzQG8Af8C9AHk
|
||||
Af8CRAFDAXoCRgE+AXoC9AHkAv8BzAFDAf8B/gHLAUIB/wHsAdIBhgH/AtoByQH/AtgBxwH/AtYBxQH/
|
||||
AtQBwwH/AtMBwgH/AtEBwAH/As8BvgH/As4BvQH/As0BvAH/AvQB5AH/AkYBPgF6AkQBQwF6AvQB5AL/
|
||||
AcwBQgH/Af4BywFBAf8B7AHSAYYB/wLaAckB/wLYAccB/wHnAWEBPwH/AecBYQE/Af8B5wFhAT8B/wHn
|
||||
AWEBPwH/As8BvgH/As4BvQH/As0BvAH/AvQB5AH/AkQBQwF6CAABQwFXAWABpAGKAdMB8AH/AYIBzQHr
|
||||
Af8BggHNAesB/wGKAdMB8AH/ASQBfAGrAf8BegG5AdgB/wF6AbkB2AH/AYoBzgHwAf8BigHOAfAB/wGP
|
||||
AdMB9AH/AfQBtgEsAf8BQwFXAWABpAQAAkQBQgF3AvUB5gL/AcwBQgL/Ae4BiAH/AewB0gGGAf8C9QHu
|
||||
Af8C9QHuAf8C1gHFAf8C9QHuAf8C9QHuAf8C0QHAAf8C9QHuAf8C9QHuAf8CzQG8Af8C9QHmAf8CRAFC
|
||||
AXcCRwE/AXcC9QHmAv8BzAFDAv8B7gGIAf8B7AHSAYYB/wL1Ae4B/wL1Ae4B/wLWAcUB/wL1Ae4B/wL1
|
||||
Ae4B/wLRAcAB/wL1Ae4B/wL1Ae4B/wLNAbwB/wL1AeYB/wJHAT8BdwJEAUIBdwL1AeYC/wHMAUIC/wHu
|
||||
AYgB/wHsAdIBhgH/AvUB7gH/AvUB7gH/AdkBWAE2Af8B8gHJAbgB/wHyAckBuAH/AdkBWAE2Af8C9QHu
|
||||
Af8C9QHuAf8CzQG8Af8C9QHmAf8CRAFCAXcIAAFDAVUBXgGeAY4B1gHyAf8BhwHQAe0B/wGHAdAB7QH/
|
||||
AY4B1gHyAf8BJgGCAa8B/wF7AboB2AH/AXsBugHYAf8BiwHPAfEB/wGLAc8B8QH/AZEB1QH1Af8B/gHJ
|
||||
AT8B/wFDAVUBXgGeBAACQwFBAXUC9gHpAv8BzAFCAf8B/gHLAUEB/wHsAdIBhgH/AtoByQH/AtgBxwH/
|
||||
AtwBzAH/AtQBwwH/AtMBwgH/AtgByAH/As8BvgH/As4BvQH/As0BvAH/AvYB6QH/AkMBQQF1AkcBPwF1
|
||||
AvYB6QL/AcwBQwH/Af4BywFCAf8B7AHSAYYB/wLaAckB/wLYAccB/wLcAcwB/wLUAcMB/wLTAcIB/wLY
|
||||
AcgB/wLPAb4B/wLOAb0B/wLNAbwB/wL2AekB/wJHAT8BdQJDAUEBdQL2AekC/wHMAUIB/wH+AcsBQQH/
|
||||
AewB0gGGAf8C2gHJAf8C2AHHAf8ByAFPAS0B/wHeAbYBngH/Ad4BtQGdAf8ByAFPAS0B/wLPAb4B/wLO
|
||||
Ab0B/wLNAbwB/wL2AekB/wJDAUEBdQgAAUQBVQFdAZsBkgHaAfQB/wGLAdQB8AH/AYsB1AHwAf8BkgHa
|
||||
AfQB/wEpAYUBswH/AX0BvAHaAf8BfQG8AdoB/wGNAdEB8wH/AY0B0QHzAf8BkwHXAfYB/wLrAd0B/wFE
|
||||
AVUBXQGbBAACQgFBAXMC9wHrAv8BzAFCAv8B7gGIAf8B7AHSAYYB/wL3AfEB/wL3AfEB/wLWAcUB/wL3
|
||||
AfEB/wL3AfEB/wLRAcAB/wL3AfEB/wL3AfEB/wLNAbwB/wL3AesB/wJCAUEBcwJHAT8BcwL3AesC/wHM
|
||||
AUMC/wHuAYgB/wHsAdIBhgH/AvcB8QH/AvcB8QH/AtYBxQH/AvcB8QH/AvcB8QH/AtEBwAH/AvcB8QH/
|
||||
AvcB8QH/As0BvAH/AvcB6wH/AkcBPwFzAkIBQQFzAvcB6wL/AcwBQgL/Ae4BiAH/AewB0gGGAf8C9wHx
|
||||
Af8C9wHxAf8BuAFHASUB/wHzAcsBuQH/AfMBywG5Af8BuAFHASUB/wL3AfEB/wL3AfEB/wLNAbwB/wL3
|
||||
AesB/wJCAUEBcwgAAUQBUwFbApcB3gH2Af8BkAHYAfIB/wGQAdgB8gH/AZcB3gH2Af8BKwGJAbcB/wGA
|
||||
Ab0B3AH/AYABvQHcAf8BjwHTAfUB/wGPAdMB9QH/AZUB2QH4Af8C9QHuAf8BRAFTAVsBlwQAAkIBQQFy
|
||||
AvgB7gL/AcwBQgH/Af4BywFBAf8B7AHSAYYB/wLaAckB/wLYAccB/wLdAc4B/wLUAcMB/wLTAcIB/wLZ
|
||||
AcoB/wLPAb4B/wLOAb0B/wLNAbwB/wL4Ae4B/wJCAUEBcgJIAUABcgL4Ae4B/wHsAYYBYwH/AeIBewFZ
|
||||
Af8B1AFuAUwB/wHEAWABPgH/AbYBUgEwAf8BrQFHASUB/wGrAUMBIQH/AbEBRAEiAf8BvQFKASgB/wHM
|
||||
AVIBMAH/AdsBWgE4Af8B6AFiAUAB/wL4Ae4B/wJIAUABcgJCAUEBcgL4Ae4C/wHMAUIB/wH+AcsBQQH/
|
||||
AewB0gGGAf8C2gHJAf8C2AHHAf8BrQFCASAB/wHeAbYBngH/Ad4BtQGdAf8BrQFCASAB/wLPAb4B/wLO
|
||||
Ab0B/wLNAbwB/wL4Ae4B/wJCAUEBcggAAUQBUwFaAZQBmwHhAfcB/wGUAdsB9AH/AZQB2wH0Af8BmwHh
|
||||
AfcB/wEuAY0BvAH/AYEBvgHdAf8BgQG+Ad0B/wGQAdQB9gH/AZAB1AH2Af8BlwHbAfkB/wL+Af0B/wFE
|
||||
AVMBWgGUBAACQQFAAXAC+QHxAv8BzAFCAv8B7gGIAf8B7AHSAYYB/wL5AfUB/wL5AfUB/wLWAcUB/wL5
|
||||
AfUB/wL5AfUB/wLRAcAB/wL5AfUB/wL5AfUB/wLNAbwB/wL5AfEB/wJBAUABcAJHAUABcAL5AfEB/wHs
|
||||
AYYBYwH/AfgBxQF5Af8B7QG1AXgB/wH1AcwBvAH/AfUBzAG8Af8B4AG3AZ8B/wH1AcwBvAH/AfUBzAG8
|
||||
Af8B3QG0AZwB/wH1AcwBvAH/AfUBzAG8Af8B6AFiAUAB/wL5AfEB/wJHAUABcAJBAUABcAL5AfEC/wHM
|
||||
AUIC/wHuAYgB/wHsAdIBhgH/AvkB9QH/AvkB9QH/AasBRAEiAf8B9QHMAbwB/wH1AcwBvAH/AasBRAEi
|
||||
Af8C+QH1Af8C+QH1Af8CzQG8Af8C+QHxAf8CQQFAAXAIAAFEAVEBVwGQAZ4B5QH5Af8BmAHfAfYB/wGY
|
||||
Ad8B9gH/AZ4B5QH5Af8BMAGQAcAB/wGDAcAB3wH/AYMBwAHfAf8BkgHWAfgB/wGSAdYB+AH/AZkB3QH6
|
||||
Af8BRAFRAVcBkAMjATMEAAJBAUABbgL7AfQC/wHMAUIB/wH+AcsBQQH/AewB0gGGAf8C2gHJAf8C2AHH
|
||||
Af8C3gHQAf8C1AHDAf8C0wHCAf8C2gHMAf8CzwG+Af8CzgG9Af8CzQG8Af8C+wH0Af8CQQFAAW4CRwFA
|
||||
AW4C+wH0Af8B7AGGAWMB/wHiAXsBWQH/AdQBbgFMAf8BxAFgAT4B/wG2AVIBMAH/Aa0BRwElAf8BqwFD
|
||||
ASEB/wGxAUQBIgH/Ab0BSgEoAf8BzAFSATAB/wHbAVoBOAH/AegBYgFAAf8C+wH0Af8CRwFAAW4CQQFA
|
||||
AW4C+wH0Av8BzAFCAf8B/gHLAUEB/wHsAdIBhgH/AtoByQH/AtgBxwH/AbIBTAEqAf8B3gG2AZ4B/wHe
|
||||
AbUBnQH/AbIBTAEqAf8CzwG+Af8CzgG9Af8CzQG8Af8C+wH0Af8CQQFAAW4IAAFDAU8BVQGNAaMB6AH7
|
||||
Af8BnQHjAfkB/wGdAeMB+QH/AaMB6AH7Af8BMwGUAcUB/wGFAcIB4QH/AYUBwgHhAf8BlAHYAfoB/wGU
|
||||
AdgB+gH/AZsB3wH8Af8BQwFPAVUBjQgAAkABPwFtAvwB9wL/AcwBQgL/Ae4BiAH/AewB0gGGAf8C/AH6
|
||||
Af8C/AH6Af8C1gHFAf8C/AH6Af8C/AH6Af8C0QHAAf8C/AH6Af8C/AH6Af8CzQG8Af8C/AH3Af8CQAE/
|
||||
AW0CRwFAAW0C/AH3Av8BzAFDAv8B7gGIAf8B7AHSAYYB/wL8AfoB/wL8AfoB/wLWAcUB/wL8AfoB/wL8
|
||||
AfoB/wLRAcAB/wL8AfoB/wL8AfoB/wLNAbwB/wL8AfcB/wJHAUABbQJAAT8BbQL8AfcC/wHMAUIC/wHu
|
||||
AYgB/wHsAdIBhgH/AvwB+gH/AvwB+gH/AcABWgE4Af8B9gHOAb8B/wH2Ac4BvwH/AcABWgE4Af8C/AH6
|
||||
Af8C/AH6Af8CzQG8Af8C/AH3Af8CQAE/AW0IAAFDAU8BVAGKAaYB6wH8Af8BoQHmAfsB/wGhAeYB+wH/
|
||||
AaYB6wH8Af8BOgGdAc8B/wGHAcQB4gH/AYcBxAHiAf8BlgHaAfwB/wGWAdoB/AH/AZ4B4gH9Af8BQwFP
|
||||
AVQBiggAAj8BPgFrAv0B+QL/AcwBQgH/Af4BywFBAf8B9QHOAWIB/wHrAdIBhQH/AekB0AGDAf8B5wHO
|
||||
AYEB/wHlAcwBgAH/AeQBywF8Af8B4gHJAXoB/wHgAccBeAH/Ad8BxgF3Af8B3gHFAXYB/wL9AfkB/wI/
|
||||
AT4BawJHAUABawL9AfkC/wHMAUMB/wH+AcsBQgH/AfUBzgFjAf8B6wHSAYUB/wHpAdABgwH/AecBzgGB
|
||||
Af8B5QHMAYAB/wHkAcsBfQH/AeIByQF7Af8B4AHHAXkB/wHfAcYBeAH/Ad4BxQF3Af8C/QH5Af8CRwFA
|
||||
AWsCPwE+AWsC/QH5Av8BzAFCAf8B/gHLAUEB/wH1Ac4BYgH/AesB0gGFAf8B6QHQAYMB/wHRAWoBSAH/
|
||||
AekBsQF0Af8B6AGwAXMB/wHRAWoBSAH/AeABxwF4Af8B3wHGAXcB/wHeAcUBdgH/Av0B+QH/Aj8BPgFr
|
||||
CAABQgFNAVIBhwGpAe4B/QH/AaQB6QH8Af8BpAHpAfwB/wGqAe8B/QH/AUABoQHRAf8BkAHRAfEB/wGW
|
||||
AdoB+wH/AZcB2wH9Af8BlwHbAf0B/wGfAeMB/gH/AUIBTQFSAYcIAAI/AT4BagL+AfwC/wHMAUIC/wHu
|
||||
AYgB/wH9AcoBQAH/AfwB6wGFAf8B+wHqAYQB/wH4AcUBOwH/AfYB5QF9Af8B9AHjAXsB/wHzAcABNgH/
|
||||
AfEB4AF4Af8B7wHeAXYB/wHvAbwBMgH/Av4B/AH/Aj8BPgFqAkcBQAFqAv4B/AL/AcwBQwL/Ae4BiAH/
|
||||
Af0BygFBAf8B/AHrAYUB/wH7AeoBhAH/AfgBxQE8Af8B9gHlAX4B/wH0AeMBfAH/AfMBwAE3Af8B8QHg
|
||||
AXkB/wHvAd4BdwH/Ae8BvAEzAf8C/gH8Af8CRwFAAWoCPwE+AWoC/gH8Av8BzAFCAv8B7gGIAf8B/QHK
|
||||
AUAB/wH8AesBhQH/AfsB6gGEAf8B4QF5AVcB/wHzAcABcwH/AfIBvwFyAf8B4QF5AVcB/wHxAeABeAH/
|
||||
Ae8B3gF2Af8B7wG8ATIB/wL+AfwB/wI/AT4BaggAAUMBTAFSAYUBrQHxAv8BqwHvAf4B/wGVAeIB+AH/
|
||||
AWwByQHtAf8BRgGpAdkB/wGYAdwB/gH/AZgB3AH+Af8BmAHcAf4B/wGYAdwB/gH/AaEB5QL/AUMBTAFS
|
||||
AYUIAAI+AT0BaAL/Af4C/wHMAUIB/wH+AcsBQQH/Af0BygFAAf8B/AHJAT8B/wH6AccBPQH/AfgBxQE7
|
||||
Af8B9gHDAToB/wH1AcIBOAH/AfMBwAE2Af8B8QG+ATQB/wHwAb0BMwH/Ae8BvAEyA/8B/gH/Aj4BPQFo
|
||||
AkcBQAFoAv8B/gL/AcwBQwH/Af4BywFCAf8B/QHKAUEB/wH8AckBQAH/AfoBxwE+Af8B+AHFATwB/wH2
|
||||
AcMBOwH/AfUBwgE5Af8B8wHAATcB/wHxAb4BNQH/AfABvQE0Af8B7wG8ATMD/wH+Af8CRwFAAWgCPgE9
|
||||
AWgC/wH+Av8BzAFCAf8B/gHLAUEB/wH9AcoBQAH/AfwByQE/Af8B+gHHAT0B/wHsAYYBYgH/AewBhgFi
|
||||
Af8B7AGGAWIB/wHsAYYBYgH/AfEBvgE0Af8B8AG9ATMB/wHvAbwBMgP/Af4B/wI+AT0BaAgAAUMBTAFQ
|
||||
AYMBiAHcAfQB/wFeAcAB6QH/AV0BvwHqAf8BgAHTAfQB/wGcAeMB/QH/AaIB5gL/AaIB5gL/AaIB5gL/
|
||||
AaIB5gL/AaYB6gL/AUMBTAFQAYMIAAI+AT0BZzj/Aj4BPQFnAkcBQAFnOP8CRwFAAWcCPgE9AWc4/wI+
|
||||
AT0BZwgAATkBOwE9AWEBQgFLAU8BgQFCAUsBTwGBAUIBSwFPAYEBQgFLAU8BgQFCAUsBTwGBAUIBSwFP
|
||||
AYEBQgFLAU8BgQFCAUsBTwGBAUIBSwFPAYEBQgFLAU8BgQE5ATsBPQFhCAADMQFNAj4BPQFmAj4BPQFm
|
||||
Aj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFmAj4BPQFm
|
||||
Aj4BPQFmAj4BPQFmAzEBTQI3ATQBTQJHAUABZgJHAUABZgJHAUABZgJHAUABZgJHAUABZgJHAUABZgJH
|
||||
AUABZgJHAUABZgJHAUABZgJHAUABZgJHAUABZgJHAUABZgJHAUABZgJHAUABZgI3ATQBTQMxAU0CPgE9
|
||||
AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9AWYCPgE9
|
||||
AWYCPgE9AWYCPgE9AWYCPgE9AWYDMQFNAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYA
|
||||
A/8RAAGAAf8BgAEBBQABfwEAAQEFAAE/AQABAQUAAR8BAAEBBAABgAEPAYABAQQAAcABBwHAAQMEAAHg
|
||||
AQMB4AEDBAAB8AEBAfABAQQAAfgBAAH4BQAB/AEAAfwFAAH+AQgB/gEIBAAB/wEAAf8FAAH/AYAB/wGA
|
||||
BAAB/wHAAf8BwAQAAfgBfwYAAeABPxYAAcABAQYAAcABAQYAAcABAQYAAcABAQYAAcABAQYAAcABAQYA
|
||||
AcABAwYAAcABAwYAAcABAwYAAcABAwYAAcABAwYAAcABAwYACw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolStripMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>211, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolbuttonOpenMib.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAK6SURBVDhPjZNbSNNRHMfPU9DtwR71oZf5IgkF0YMEEYb2
|
||||
EGgG5YNgGQmGSUoYimbel5KKmlM0u3jJSpv3ad7WnGkzb2yO4bByF3WuuTnnnLv47Zw/9YclQQc+/L//
|
||||
P+d8/r/f+Z8/Ib/HjJDcmhaS3P+Bzf2zjr8qiki+QyuE6dNNbIzFw6F8DJ++AVh97c9GK9jcA4LJAlKI
|
||||
rQ7sW9/DpauGZSoFg6JwfJSU+TE0XIXOgqCaAwJ5ASn2bb6F19TM4bO+w4z4HgwWC9YcDugpK3Y7umQy
|
||||
FOZEDMRkZQX7SWS5pMRrboVn9RUHy1/aEqDSajGn0WDZbIZ6bQ0t/f1gIzojI8lPMvaIPPWsN2FP/5yD
|
||||
ZdmLWLwUi/FhZASSqSlOUtXczBMcGZnFVzGUTSr2jI1wfq/lYHms4Tqkc3MYnZ2F0mDAqs3GV8LaiUhN
|
||||
TeYFA5mkenelHg5tNQfLw3UxaOrpQZdUiu7xca5/Mc0do6PQb28jPDk5hRf0PiQi5zcR7JoKDpYHaqIg
|
||||
VyohW1jg+lcZjVwlCzod1p1OXEhMvM8LOtNJvWOpEjZVKQfL/ZVX0NrXh165HP2Tk5hQqzGuUmFQocCm
|
||||
y4XzCQlpvKA9jTTa1WWwzBdzsNxdfhmfFxcxQRct0Q3UmEzY2t2FdWcHdrcb5+LiHvCC1hTSbFOWwDyT
|
||||
x8GyuDQCbRIJ3tBPp6CfU0pbcdA3M4mDCs7ExqYzwWHKibo7pNs6T4+yIofDSqtof3IJBtqzTq+Hx+uF
|
||||
y+OBky5kkh2aT0VFZTNBAEWQFEFqhyvO2pclSe6f03nYnC1EW9FFGOnGGSi+/X14KW6fD3tUtkdzYFiY
|
||||
0O801iWSaNFtUteWGST92nL1R/q1Q7ojAkHV0ZCQkuOhocV/c0wguHvgn2APyuPJ6dI4kpV/gzyjtycp
|
||||
gf8g4Begs1B6Kbj3cQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="dialogOpenMib.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>337, 17</value>
|
||||
</metadata>
|
||||
</root>
|
94
contrib/apps/LwipMibCompiler/MibViewer/MibViewer.csproj
Normal file
94
contrib/apps/LwipMibCompiler/MibViewer/MibViewer.csproj
Normal file
@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{86CC0B65-7985-4017-A252-0A7A18DCAEF3}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LwipMibViewer</RootNamespace>
|
||||
<AssemblyName>MibViewer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Optimize>false</Optimize>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="FormMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormMain.Designer.cs">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="FormMain.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SharpSnmpLib\SharpSnmpLib.Mib.csproj">
|
||||
<Project>{CBE20411-5DB7-487D-825D-7694267BB6F5}</Project>
|
||||
<Name>SharpSnmpLib.Mib</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
51
contrib/apps/LwipMibCompiler/MibViewer/Program.cs
Normal file
51
contrib/apps/LwipMibCompiler/MibViewer/Program.cs
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Martin Hentschel <info@cl-soft.de>
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LwipMibViewer
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// Der Haupteinstiegspunkt für die Anwendung.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new FormMain());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die mit einer Assembly verknüpft sind.
|
||||
[assembly: AssemblyTitle("LwipMibViewer")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("LwipMibViewer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
|
||||
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("7ffbd1c1-1c64-45bb-b243-2400446c649d")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
// übernehmen, indem Sie "*" eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
63
contrib/apps/LwipMibCompiler/MibViewer/Properties/Resources.Designer.cs
generated
Normal file
63
contrib/apps/LwipMibCompiler/MibViewer/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.225
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace LwipMibViewer.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||
/// </summary>
|
||||
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LwipMibViewer.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
117
contrib/apps/LwipMibCompiler/MibViewer/Properties/Resources.resx
Normal file
117
contrib/apps/LwipMibCompiler/MibViewer/Properties/Resources.resx
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
26
contrib/apps/LwipMibCompiler/MibViewer/Properties/Settings.Designer.cs
generated
Normal file
26
contrib/apps/LwipMibCompiler/MibViewer/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.225
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace LwipMibViewer.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
3
contrib/apps/LwipMibCompiler/MibViewer/app.config
Normal file
3
contrib/apps/LwipMibCompiler/MibViewer/app.config
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
@ -0,0 +1,131 @@
|
||||
|
||||
|
||||
IANA-ADDRESS-FAMILY-NUMBERS-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY,
|
||||
mib-2 FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
ianaAddressFamilyNumbers MODULE-IDENTITY
|
||||
LAST-UPDATED "200203140000Z" -- March 14, 2002
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO
|
||||
"Postal: Internet Assigned Numbers Authority
|
||||
Internet Corporation for Assigned Names
|
||||
and Numbers
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292-6601
|
||||
USA
|
||||
|
||||
Tel: +1 310-823-9358
|
||||
E-Mail: iana&iana.org"
|
||||
DESCRIPTION
|
||||
"The MIB module defines the AddressFamilyNumbers
|
||||
textual convention."
|
||||
|
||||
-- revision history
|
||||
|
||||
REVISION "200203140000Z" -- March 14, 2002
|
||||
DESCRIPTION "AddressFamilyNumbers assignment 22 to
|
||||
fibreChannelWWPN. AddressFamilyNumbers
|
||||
assignment 23 to fibreChannelWWNN.
|
||||
AddressFamilyNumers assignment 24 to gwid."
|
||||
|
||||
REVISION "200009080000Z" -- September 8, 2000
|
||||
DESCRIPTION "AddressFamilyNumbers assignment 19 to xtpOverIpv4.
|
||||
AddressFamilyNumbers assignment 20 to xtpOverIpv6.
|
||||
AddressFamilyNumbers assignment 21 to xtpNativeModeXTP."
|
||||
|
||||
REVISION "200003010000Z" -- March 1, 2000
|
||||
DESCRIPTION "AddressFamilyNumbers assignment 17 to distinguishedName.
|
||||
AddressFamilyNumbers assignment 18 to asNumber."
|
||||
|
||||
REVISION "200002040000Z" -- February 4, 2000
|
||||
DESCRIPTION "AddressFamilyNumbers assignment 16 to dns."
|
||||
|
||||
REVISION "9908260000Z" -- August 26, 1999
|
||||
DESCRIPTION "Initial version, published as RFC 2677."
|
||||
|
||||
::= { mib-2 72 }
|
||||
|
||||
|
||||
AddressFamilyNumbers ::= TEXTUAL-CONVENTION
|
||||
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The definition of this textual convention with the
|
||||
addition of newly assigned values is published
|
||||
periodically by the IANA, in either the Assigned
|
||||
Numbers RFC, or some derivative of it specific to
|
||||
Internet Network Management number assignments.
|
||||
(The latest arrangements can be obtained by
|
||||
contacting the IANA.)
|
||||
|
||||
The enumerations are described as:
|
||||
|
||||
other(0), -- none of the following
|
||||
ipV4(1), -- IP Version 4
|
||||
ipV6(2), -- IP Version 6
|
||||
nsap(3), -- NSAP
|
||||
hdlc(4), -- (8-bit multidrop)
|
||||
bbn1822(5),
|
||||
all802(6), -- (includes all 802 media
|
||||
-- plus Ethernet 'canonical format')
|
||||
e163(7),
|
||||
e164(8), -- (SMDS, Frame Relay, ATM)
|
||||
f69(9), -- (Telex)
|
||||
x121(10), -- (X.25, Frame Relay)
|
||||
ipx(11), -- IPX (Internet Protocol Exchange)
|
||||
appleTalk(12), -- Apple Talk
|
||||
decnetIV(13), -- DEC Net Phase IV
|
||||
banyanVines(14), -- Banyan Vines
|
||||
e164withNsap(15),
|
||||
-- (E.164 with NSAP format subaddress)
|
||||
dns(16), -- (Domain Name System)
|
||||
distinguishedName(17), -- (Distinguished Name, per X.500)
|
||||
asNumber(18), -- (16-bit quantity, per the AS number space)
|
||||
xtpOverIpv4(19), -- XTP over IP version 4
|
||||
xtpOverIpv6(20), -- XTP over IP version 6
|
||||
xtpNativeModeXTP(21), -- XTP native mode XTP
|
||||
fibreChannelWWPN(22), -- Fibre Channel World-Wide Port Name
|
||||
fibreChannelWWNN(23), -- Fibre Channel World-Wide Node Name
|
||||
gwid(24), -- Gateway Identifier
|
||||
afi(25), -- AFI for L2VPN information
|
||||
reserved(65535)
|
||||
|
||||
|
||||
|
||||
Requests for new values should be made to IANA via
|
||||
email (iana&iana.org)."
|
||||
|
||||
SYNTAX INTEGER {
|
||||
other(0),
|
||||
ipV4(1),
|
||||
ipV6(2),
|
||||
nsap(3),
|
||||
hdlc(4),
|
||||
bbn1822(5),
|
||||
all802(6),
|
||||
e163(7),
|
||||
e164(8),
|
||||
f69(9),
|
||||
x121(10),
|
||||
ipx(11),
|
||||
appleTalk(12),
|
||||
decnetIV(13),
|
||||
banyanVines(14),
|
||||
e164withNsap(15),
|
||||
dns(16),
|
||||
distinguishedName(17), -- (Distinguished Name, per X.500)
|
||||
asNumber(18), -- (16-bit quantity, per the AS number space)
|
||||
xtpOverIpv4(19),
|
||||
xtpOverIpv6(20),
|
||||
xtpNativeModeXTP(21),
|
||||
fibreChannelWWPN(22),
|
||||
fibreChannelWWNN(23),
|
||||
gwid(24),
|
||||
afi(25),
|
||||
reserved(65535)
|
||||
}
|
||||
END
|
345
contrib/apps/LwipMibCompiler/Mibs/IANA-CHARSET-MIB
Normal file
345
contrib/apps/LwipMibCompiler/Mibs/IANA-CHARSET-MIB
Normal file
@ -0,0 +1,345 @@
|
||||
IANA-CHARSET-MIB DEFINITIONS ::= BEGIN
|
||||
-- http://www.iana.org/assignments/ianacharset-mib
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY,
|
||||
mib-2
|
||||
FROM SNMPv2-SMI -- [RFC2578]
|
||||
TEXTUAL-CONVENTION
|
||||
FROM SNMPv2-TC; -- [RFC2579]
|
||||
|
||||
ianaCharsetMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200705140000Z"
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO " Internet Assigned Numbers Authority
|
||||
|
||||
Postal: ICANN
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292
|
||||
|
||||
Tel: +1 310 823 9358
|
||||
E-Mail: iana&iana.org"
|
||||
|
||||
DESCRIPTION "This MIB module defines the IANACharset
|
||||
TEXTUAL-CONVENTION. The IANACharset TC is used to
|
||||
specify the encoding of string objects defined in
|
||||
a MIB.
|
||||
|
||||
Each version of this MIB will be released based on
|
||||
the IANA Charset Registry file (see RFC 2978) at
|
||||
http://www.iana.org/assignments/character-sets.
|
||||
|
||||
Note: The IANACharset TC, originally defined in
|
||||
RFC 1759, was inaccurately named CodedCharSet.
|
||||
|
||||
Note: Best practice is to define new MIB string
|
||||
objects with invariant UTF-8 (RFC 3629) syntax
|
||||
using the SnmpAdminString TC (defined in RFC 3411)
|
||||
in accordance with IETF Policy on Character Sets and
|
||||
Languages (RFC 2277).
|
||||
|
||||
Copyright (C) The Internet Society (2004). The
|
||||
initial version of this MIB module was published
|
||||
in RFC 3808; for full legal notices see the RFC
|
||||
itself. Supplementary information may be
|
||||
available on
|
||||
http://www.ietf.org/copyrights/ianamib.html."
|
||||
|
||||
-- revision history
|
||||
|
||||
REVISION "200705140000Z"
|
||||
DESCRIPTION "Registration of new charset 2107."
|
||||
|
||||
REVISION "200612070000Z"
|
||||
DESCRIPTION "Registration of new charsets numbered 118, 119,
|
||||
and 2106."
|
||||
|
||||
REVISION "200406080000Z"
|
||||
DESCRIPTION "Original version transferred from Printer MIB,
|
||||
generated from the IANA maintained assignments
|
||||
http://www.iana.org/assignments/character-sets."
|
||||
|
||||
::= { mib-2 106 }
|
||||
|
||||
IANACharset ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Specifies an IANA registered 'charset' - coded character set
|
||||
(CCS) plus optional character encoding scheme (CES) - terms
|
||||
defined in 'IANA Charset Registration Procedures' (RFC 2978).
|
||||
|
||||
Objects of this syntax are used to specify the encoding for
|
||||
string objects defined in one or more MIBs. For example, the
|
||||
prtLocalizationCharacterSet, prtInterpreterDefaultCharSetIn, and
|
||||
prtInterpreterDefaultCharSetOut objects defined in Printer MIB.
|
||||
|
||||
The current list of 'charset' names and enumerated values
|
||||
is contained in the IANA Character Set Registry at:
|
||||
|
||||
http://www.iana.org/assignments/character-sets
|
||||
|
||||
Enum names are derived from the IANA Charset Registry 'Alias'
|
||||
fields that begin with 'cs' (for character set).
|
||||
Enum values are derived from the parallel 'MIBenum' fields."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- used if the designated
|
||||
-- character set is not currently
|
||||
-- registered by IANA
|
||||
unknown(2), -- used as a default value
|
||||
csASCII(3),
|
||||
csISOLatin1(4),
|
||||
csISOLatin2(5),
|
||||
csISOLatin3(6),
|
||||
csISOLatin4(7),
|
||||
csISOLatinCyrillic(8),
|
||||
csISOLatinArabic(9),
|
||||
csISOLatinGreek(10),
|
||||
csISOLatinHebrew(11),
|
||||
csISOLatin5(12),
|
||||
csISOLatin6(13),
|
||||
csISOTextComm(14),
|
||||
csHalfWidthKatakana(15),
|
||||
csJISEncoding(16),
|
||||
csShiftJIS(17),
|
||||
csEUCPkdFmtJapanese(18),
|
||||
csEUCFixWidJapanese(19),
|
||||
csISO4UnitedKingdom(20),
|
||||
csISO11SwedishForNames(21),
|
||||
csISO15Italian(22),
|
||||
csISO17Spanish(23),
|
||||
csISO21German(24),
|
||||
csISO60DanishNorwegian(25),
|
||||
csISO69French(26),
|
||||
csISO10646UTF1(27),
|
||||
csISO646basic1983(28),
|
||||
csINVARIANT(29),
|
||||
csISO2IntlRefVersion(30),
|
||||
csNATSSEFI(31),
|
||||
csNATSSEFIADD(32),
|
||||
csNATSDANO(33),
|
||||
csNATSDANOADD(34),
|
||||
csISO10Swedish(35),
|
||||
csKSC56011987(36),
|
||||
csISO2022KR(37),
|
||||
csEUCKR(38),
|
||||
csISO2022JP(39),
|
||||
csISO2022JP2(40),
|
||||
csISO13JISC6220jp(41),
|
||||
csISO14JISC6220ro(42),
|
||||
csISO16Portuguese(43),
|
||||
csISO18Greek7Old(44),
|
||||
csISO19LatinGreek(45),
|
||||
csISO25French(46),
|
||||
csISO27LatinGreek1(47),
|
||||
csISO5427Cyrillic(48),
|
||||
csISO42JISC62261978(49),
|
||||
csISO47BSViewdata(50),
|
||||
csISO49INIS(51),
|
||||
csISO50INIS8(52),
|
||||
csISO51INISCyrillic(53),
|
||||
csISO54271981(54),
|
||||
csISO5428Greek(55),
|
||||
csISO57GB1988(56),
|
||||
csISO58GB231280(57),
|
||||
csISO61Norwegian2(58),
|
||||
csISO70VideotexSupp1(59),
|
||||
csISO84Portuguese2(60),
|
||||
csISO85Spanish2(61),
|
||||
csISO86Hungarian(62),
|
||||
csISO87JISX0208(63),
|
||||
csISO88Greek7(64),
|
||||
csISO89ASMO449(65),
|
||||
csISO90(66),
|
||||
csISO91JISC62291984a(67),
|
||||
csISO92JISC62991984b(68),
|
||||
csISO93JIS62291984badd(69),
|
||||
csISO94JIS62291984hand(70),
|
||||
csISO95JIS62291984handadd(71),
|
||||
csISO96JISC62291984kana(72),
|
||||
csISO2033(73),
|
||||
csISO99NAPLPS(74),
|
||||
csISO102T617bit(75),
|
||||
csISO103T618bit(76),
|
||||
csISO111ECMACyrillic(77),
|
||||
csa71(78),
|
||||
csa72(79),
|
||||
csISO123CSAZ24341985gr(80),
|
||||
csISO88596E(81),
|
||||
csISO88596I(82),
|
||||
csISO128T101G2(83),
|
||||
csISO88598E(84),
|
||||
csISO88598I(85),
|
||||
csISO139CSN369103(86),
|
||||
csISO141JUSIB1002(87),
|
||||
csISO143IECP271(88),
|
||||
csISO146Serbian(89),
|
||||
csISO147Macedonian(90),
|
||||
csISO150(91),
|
||||
csISO151Cuba(92),
|
||||
csISO6937Add(93),
|
||||
csISO153GOST1976874(94),
|
||||
csISO8859Supp(95),
|
||||
csISO10367Box(96),
|
||||
csISO158Lap(97),
|
||||
csISO159JISX02121990(98),
|
||||
csISO646Danish(99),
|
||||
csUSDK(100),
|
||||
csDKUS(101),
|
||||
csKSC5636(102),
|
||||
csUnicode11UTF7(103),
|
||||
csISO2022CN(104),
|
||||
csISO2022CNEXT(105),
|
||||
csUTF8(106),
|
||||
csISO885913(109),
|
||||
csISO885914(110),
|
||||
csISO885915(111),
|
||||
csISO885916(112),
|
||||
csGBK(113),
|
||||
csGB18030(114),
|
||||
csOSDEBCDICDF0415(115),
|
||||
csOSDEBCDICDF03IRV(116),
|
||||
csOSDEBCDICDF041(117),
|
||||
csISO115481(118),
|
||||
csKZ1048(119),
|
||||
csUnicode(1000),
|
||||
csUCS4(1001),
|
||||
csUnicodeASCII(1002),
|
||||
csUnicodeLatin1(1003),
|
||||
csUnicodeIBM1261(1005),
|
||||
csUnicodeIBM1268(1006),
|
||||
csUnicodeIBM1276(1007),
|
||||
csUnicodeIBM1264(1008),
|
||||
csUnicodeIBM1265(1009),
|
||||
csUnicode11(1010),
|
||||
csSCSU(1011),
|
||||
csUTF7(1012),
|
||||
csUTF16BE(1013),
|
||||
csUTF16LE(1014),
|
||||
csUTF16(1015),
|
||||
csCESU8(1016),
|
||||
csUTF32(1017),
|
||||
csUTF32BE(1018),
|
||||
csUTF32LE(1019),
|
||||
csBOCU1(1020),
|
||||
csWindows30Latin1(2000),
|
||||
csWindows31Latin1(2001),
|
||||
csWindows31Latin2(2002),
|
||||
csWindows31Latin5(2003),
|
||||
csHPRoman8(2004),
|
||||
csAdobeStandardEncoding(2005),
|
||||
csVenturaUS(2006),
|
||||
csVenturaInternational(2007),
|
||||
csDECMCS(2008),
|
||||
csPC850Multilingual(2009),
|
||||
csPCp852(2010),
|
||||
csPC8CodePage437(2011),
|
||||
csPC8DanishNorwegian(2012),
|
||||
csPC862LatinHebrew(2013),
|
||||
csPC8Turkish(2014),
|
||||
csIBMSymbols(2015),
|
||||
csIBMThai(2016),
|
||||
csHPLegal(2017),
|
||||
csHPPiFont(2018),
|
||||
csHPMath8(2019),
|
||||
csHPPSMath(2020),
|
||||
csHPDesktop(2021),
|
||||
csVenturaMath(2022),
|
||||
csMicrosoftPublishing(2023),
|
||||
csWindows31J(2024),
|
||||
csGB2312(2025),
|
||||
csBig5(2026),
|
||||
csMacintosh(2027),
|
||||
csIBM037(2028),
|
||||
csIBM038(2029),
|
||||
csIBM273(2030),
|
||||
csIBM274(2031),
|
||||
csIBM275(2032),
|
||||
csIBM277(2033),
|
||||
csIBM278(2034),
|
||||
csIBM280(2035),
|
||||
csIBM281(2036),
|
||||
csIBM284(2037),
|
||||
csIBM285(2038),
|
||||
csIBM290(2039),
|
||||
csIBM297(2040),
|
||||
csIBM420(2041),
|
||||
csIBM423(2042),
|
||||
csIBM424(2043),
|
||||
csIBM500(2044),
|
||||
csIBM851(2045),
|
||||
csIBM855(2046),
|
||||
csIBM857(2047),
|
||||
csIBM860(2048),
|
||||
csIBM861(2049),
|
||||
csIBM863(2050),
|
||||
csIBM864(2051),
|
||||
csIBM865(2052),
|
||||
csIBM868(2053),
|
||||
csIBM869(2054),
|
||||
csIBM870(2055),
|
||||
csIBM871(2056),
|
||||
csIBM880(2057),
|
||||
csIBM891(2058),
|
||||
csIBM903(2059),
|
||||
csIBBM904(2060),
|
||||
csIBM905(2061),
|
||||
csIBM918(2062),
|
||||
csIBM1026(2063),
|
||||
csIBMEBCDICATDE(2064),
|
||||
csEBCDICATDEA(2065),
|
||||
csEBCDICCAFR(2066),
|
||||
csEBCDICDKNO(2067),
|
||||
csEBCDICDKNOA(2068),
|
||||
csEBCDICFISE(2069),
|
||||
csEBCDICFISEA(2070),
|
||||
csEBCDICFR(2071),
|
||||
csEBCDICIT(2072),
|
||||
csEBCDICPT(2073),
|
||||
csEBCDICES(2074),
|
||||
csEBCDICESA(2075),
|
||||
csEBCDICESS(2076),
|
||||
csEBCDICUK(2077),
|
||||
csEBCDICUS(2078),
|
||||
csUnknown8BiT(2079),
|
||||
csMnemonic(2080),
|
||||
csMnem(2081),
|
||||
csVISCII(2082),
|
||||
csVIQR(2083),
|
||||
csKOI8R(2084),
|
||||
csHZGB2312(2085),
|
||||
csIBM866(2086),
|
||||
csPC775Baltic(2087),
|
||||
csKOI8U(2088),
|
||||
csIBM00858(2089),
|
||||
csIBM00924(2090),
|
||||
csIBM01140(2091),
|
||||
csIBM01141(2092),
|
||||
csIBM01142(2093),
|
||||
csIBM01143(2094),
|
||||
csIBM01144(2095),
|
||||
csIBM01145(2096),
|
||||
csIBM01146(2097),
|
||||
csIBM01147(2098),
|
||||
csIBM01148(2099),
|
||||
csIBM01149(2100),
|
||||
csBig5HKSCS(2101),
|
||||
csIBM1047(2102),
|
||||
csPTCP154(2103),
|
||||
csAmiga1251(2104),
|
||||
csKOI7switched(2105),
|
||||
csBRF(2106),
|
||||
csTSCII(2107),
|
||||
cswindows1250(2250),
|
||||
cswindows1251(2251),
|
||||
cswindows1252(2252),
|
||||
cswindows1253(2253),
|
||||
cswindows1254(2254),
|
||||
cswindows1255(2255),
|
||||
cswindows1256(2256),
|
||||
cswindows1257(2257),
|
||||
cswindows1258(2258),
|
||||
csTIS620(2259),
|
||||
reserved(3000)
|
||||
}
|
||||
END
|
||||
|
333
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-ITU-ALARM-TC-MIB
Normal file
333
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-ITU-ALARM-TC-MIB
Normal file
@ -0,0 +1,333 @@
|
||||
IANA-ITU-ALARM-TC-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
ianaItuAlarmNumbers MODULE-IDENTITY
|
||||
LAST-UPDATED "200409090000Z" -- September 09, 2004
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO
|
||||
"Postal: Internet Assigned Numbers Authority
|
||||
Internet Corporation for Assigned Names
|
||||
and Numbers
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292-6601
|
||||
USA
|
||||
|
||||
Tel: +1 310-823-9358
|
||||
E-Mail: iana&iana.org"
|
||||
DESCRIPTION
|
||||
"The MIB module defines the ITU Alarm
|
||||
textual convention for objects expected to require
|
||||
regular extension.
|
||||
|
||||
Copyright (C) The Internet Society (2004). The
|
||||
initial version of this MIB module was published
|
||||
in RFC 3877. For full legal notices see the RFC
|
||||
itself. Supplementary information may be available on:
|
||||
http://www.ietf.org/copyrights/ianamib.html"
|
||||
REVISION "200409090000Z"
|
||||
DESCRIPTION
|
||||
"Initial version, published as RFC 3877."
|
||||
::= { mib-2 119 }
|
||||
|
||||
|
||||
IANAItuProbableCause ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"ITU-T probable cause values. Duplicate values defined in
|
||||
X.733 are appended with X733 to ensure syntactic uniqueness.
|
||||
Probable cause value 0 is reserved for special purposes.
|
||||
|
||||
The Internet Assigned Number Authority (IANA) is responsible
|
||||
for the assignment of the enumerations in this TC.
|
||||
IANAItuProbableCause value of 0 is reserved for special
|
||||
purposes and MUST NOT be assigned.
|
||||
|
||||
Values of IANAItuProbableCause in the range 1 to 1023 are
|
||||
reserved for causes that correspond to ITU-T probable cause.
|
||||
|
||||
All other requests for new causes will be handled on a
|
||||
first-come, first served basis and will be assigned
|
||||
enumeration values starting with 1025.
|
||||
|
||||
Request should come in the form of well-formed
|
||||
SMI [RFC2578] for enumeration names that are unique and
|
||||
sufficiently descriptive.
|
||||
|
||||
While some effort will be taken to ensure that new probable
|
||||
causes do not conceptually duplicate existing probable
|
||||
causes it is acknowledged that the existence of conceptual
|
||||
duplicates in the starting probable cause list is an known
|
||||
industry reality.
|
||||
|
||||
To aid IANA in the administration of probable cause names
|
||||
and values, the OPS Area Director will appoint one or more
|
||||
experts to help review requests.
|
||||
|
||||
See http://www.iana.org"
|
||||
REFERENCE
|
||||
"ITU Recommendation M.3100, 'Generic Network Information
|
||||
Model', 1995
|
||||
ITU Recommendation X.733, 'Information Technology - Open
|
||||
Systems Interconnection - System Management: Alarm
|
||||
Reporting Function', 1992
|
||||
ITU Recommendation X.736, 'Information Technology - Open
|
||||
Systems Interconnection - System Management: Security
|
||||
Alarm Reporting Function', 1992"
|
||||
|
||||
SYNTAX INTEGER
|
||||
{
|
||||
-- The following probable causes were defined in M.3100
|
||||
aIS (1),
|
||||
callSetUpFailure (2),
|
||||
degradedSignal (3),
|
||||
farEndReceiverFailure (4),
|
||||
framingError (5),
|
||||
lossOfFrame (6),
|
||||
lossOfPointer (7),
|
||||
lossOfSignal (8),
|
||||
payloadTypeMismatch (9),
|
||||
transmissionError (10),
|
||||
remoteAlarmInterface (11),
|
||||
excessiveBER (12),
|
||||
pathTraceMismatch (13),
|
||||
unavailable (14),
|
||||
signalLabelMismatch (15),
|
||||
lossOfMultiFrame (16),
|
||||
receiveFailure (17),
|
||||
transmitFailure (18),
|
||||
modulationFailure (19),
|
||||
demodulationFailure (20),
|
||||
broadcastChannelFailure (21),
|
||||
connectionEstablishmentError (22),
|
||||
invalidMessageReceived (23),
|
||||
localNodeTransmissionError (24),
|
||||
remoteNodeTransmissionError (25),
|
||||
routingFailure (26),
|
||||
--Values 27-50 are reserved for communications alarm related
|
||||
--probable causes
|
||||
-- The following are used with equipment alarm.
|
||||
backplaneFailure (51),
|
||||
dataSetProblem (52),
|
||||
equipmentIdentifierDuplication (53),
|
||||
externalIFDeviceProblem (54),
|
||||
lineCardProblem (55),
|
||||
multiplexerProblem (56),
|
||||
nEIdentifierDuplication (57),
|
||||
powerProblem (58),
|
||||
processorProblem (59),
|
||||
protectionPathFailure (60),
|
||||
receiverFailure (61),
|
||||
replaceableUnitMissing (62),
|
||||
replaceableUnitTypeMismatch (63),
|
||||
synchronizationSourceMismatch (64),
|
||||
terminalProblem (65),
|
||||
timingProblem (66),
|
||||
transmitterFailure (67),
|
||||
trunkCardProblem (68),
|
||||
replaceableUnitProblem (69),
|
||||
realTimeClockFailure (70),
|
||||
--An equipment alarm to be issued if the system detects that the
|
||||
--real time clock has failed
|
||||
antennaFailure (71),
|
||||
batteryChargingFailure (72),
|
||||
diskFailure (73),
|
||||
frequencyHoppingFailure (74),
|
||||
iODeviceError (75),
|
||||
lossOfSynchronisation (76),
|
||||
lossOfRedundancy (77),
|
||||
powerSupplyFailure (78),
|
||||
signalQualityEvaluationFailure (79),
|
||||
tranceiverFailure (80),
|
||||
protectionMechanismFailure (81),
|
||||
protectingResourceFailure (82),
|
||||
-- Values 83-100 are reserved for equipment alarm related probable
|
||||
-- causes
|
||||
-- The following are used with environmental alarm.
|
||||
airCompressorFailure (101),
|
||||
airConditioningFailure (102),
|
||||
airDryerFailure (103),
|
||||
batteryDischarging (104),
|
||||
batteryFailure (105),
|
||||
commercialPowerFailure (106),
|
||||
coolingFanFailure (107),
|
||||
engineFailure (108),
|
||||
fireDetectorFailure (109),
|
||||
fuseFailure (110),
|
||||
generatorFailure (111),
|
||||
lowBatteryThreshold (112),
|
||||
pumpFailure (113),
|
||||
rectifierFailure (114),
|
||||
rectifierHighVoltage (115),
|
||||
rectifierLowFVoltage (116),
|
||||
ventilationsSystemFailure (117),
|
||||
enclosureDoorOpen (118),
|
||||
explosiveGas (119),
|
||||
fire (120),
|
||||
flood (121),
|
||||
highHumidity (122),
|
||||
highTemperature (123),
|
||||
highWind (124),
|
||||
iceBuildUp (125),
|
||||
intrusionDetection (126),
|
||||
lowFuel (127),
|
||||
lowHumidity (128),
|
||||
lowCablePressure (129),
|
||||
lowTemperatue (130),
|
||||
lowWater (131),
|
||||
smoke (132),
|
||||
toxicGas (133),
|
||||
coolingSystemFailure (134),
|
||||
externalEquipmentFailure (135),
|
||||
externalPointFailure (136),
|
||||
-- Values 137-150 are reserved for environmental alarm related
|
||||
-- probable causes
|
||||
-- The following are used with Processing error alarm.
|
||||
storageCapacityProblem (151),
|
||||
memoryMismatch (152),
|
||||
corruptData (153),
|
||||
outOfCPUCycles (154),
|
||||
sfwrEnvironmentProblem (155),
|
||||
sfwrDownloadFailure (156),
|
||||
lossOfRealTimel (157),
|
||||
--A processing error alarm to be issued after the system has
|
||||
--reinitialised. This will indicate
|
||||
--to the management systems that the view they have of the managed
|
||||
--system may no longer
|
||||
--be valid. Usage example: The managed
|
||||
--system issues this alarm after a reinitialization with severity
|
||||
--warning to inform the
|
||||
--management system about the event. No clearing notification will
|
||||
--be sent.
|
||||
applicationSubsystemFailure (158),
|
||||
configurationOrCustomisationError (159),
|
||||
databaseInconsistency (160),
|
||||
fileError (161),
|
||||
outOfMemory (162),
|
||||
softwareError (163),
|
||||
timeoutExpired (164),
|
||||
underlayingResourceUnavailable (165),
|
||||
versionMismatch (166),
|
||||
--Values 168-200 are reserved for processing error alarm related
|
||||
-- probable causes.
|
||||
bandwidthReduced (201),
|
||||
congestion (202),
|
||||
excessiveErrorRate (203),
|
||||
excessiveResponseTime (204),
|
||||
excessiveRetransmissionRate (205),
|
||||
reducedLoggingCapability (206),
|
||||
systemResourcesOverload (207 ),
|
||||
-- The following were defined X.733
|
||||
adapterError (500),
|
||||
applicationSubsystemFailture (501),
|
||||
bandwidthReducedX733 (502),
|
||||
callEstablishmentError (503),
|
||||
communicationsProtocolError (504),
|
||||
communicationsSubsystemFailure (505),
|
||||
configurationOrCustomizationError (506),
|
||||
congestionX733 (507),
|
||||
coruptData (508),
|
||||
cpuCyclesLimitExceeded (509),
|
||||
dataSetOrModemError (510),
|
||||
degradedSignalX733 (511),
|
||||
dteDceInterfaceError (512),
|
||||
enclosureDoorOpenX733 (513),
|
||||
equipmentMalfunction (514),
|
||||
excessiveVibration (515),
|
||||
fileErrorX733 (516),
|
||||
fireDetected (517),
|
||||
framingErrorX733 (518),
|
||||
heatingVentCoolingSystemProblem (519),
|
||||
humidityUnacceptable (520),
|
||||
inputOutputDeviceError (521),
|
||||
inputDeviceError (522),
|
||||
lanError (523),
|
||||
leakDetected (524),
|
||||
localNodeTransmissionErrorX733 (525),
|
||||
lossOfFrameX733 (526),
|
||||
lossOfSignalX733 (527),
|
||||
materialSupplyExhausted (528),
|
||||
multiplexerProblemX733 (529),
|
||||
outOfMemoryX733 (530),
|
||||
ouputDeviceError (531),
|
||||
performanceDegraded (532),
|
||||
powerProblems (533),
|
||||
pressureUnacceptable (534),
|
||||
processorProblems (535),
|
||||
pumpFailureX733 (536),
|
||||
queueSizeExceeded (537),
|
||||
receiveFailureX733 (538),
|
||||
receiverFailureX733 (539),
|
||||
remoteNodeTransmissionErrorX733 (540),
|
||||
resourceAtOrNearingCapacity (541),
|
||||
responseTimeExecessive (542),
|
||||
retransmissionRateExcessive (543),
|
||||
softwareErrorX733 (544),
|
||||
softwareProgramAbnormallyTerminated (545),
|
||||
softwareProgramError (546),
|
||||
storageCapacityProblemX733 (547),
|
||||
temperatureUnacceptable (548),
|
||||
thresholdCrossed (549),
|
||||
timingProblemX733 (550),
|
||||
toxicLeakDetected (551),
|
||||
transmitFailureX733 (552),
|
||||
transmiterFailure (553),
|
||||
underlyingResourceUnavailable (554),
|
||||
versionMismatchX733 (555),
|
||||
-- The following are defined in X.736
|
||||
authenticationFailure (600),
|
||||
breachOfConfidentiality (601),
|
||||
cableTamper (602),
|
||||
delayedInformation (603),
|
||||
denialOfService (604),
|
||||
duplicateInformation (605),
|
||||
informationMissing (606),
|
||||
informationModificationDetected (607),
|
||||
informationOutOfSequence (608),
|
||||
keyExpired (609),
|
||||
nonRepudiationFailure (610),
|
||||
outOfHoursActivity (611),
|
||||
outOfService (612),
|
||||
proceduralError (613),
|
||||
unauthorizedAccessAttempt (614),
|
||||
unexpectedInformation (615),
|
||||
|
||||
other (1024)
|
||||
}
|
||||
|
||||
IANAItuEventType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The ITU event Type values.
|
||||
|
||||
The Internet Assigned Number Authority (IANA) is
|
||||
responsible for the assignment of the enumerations
|
||||
in this TC.
|
||||
|
||||
Request should come in the form of well-formed
|
||||
SMI [RFC2578] for enumeration names that are unique
|
||||
and sufficiently descriptive.
|
||||
|
||||
See http://www.iana.org "
|
||||
REFERENCE
|
||||
"ITU Recommendation X.736, 'Information Technology - Open
|
||||
Systems Interconnection - System Management: Security
|
||||
Alarm Reporting Function', 1992"
|
||||
SYNTAX INTEGER
|
||||
{
|
||||
other (1),
|
||||
communicationsAlarm (2),
|
||||
qualityOfServiceAlarm (3),
|
||||
processingErrorAlarm (4),
|
||||
equipmentAlarm (5),
|
||||
environmentalAlarm (6),
|
||||
integrityViolation (7),
|
||||
operationalViolation (8),
|
||||
physicalViolation (9),
|
||||
securityServiceOrMechanismViolation (10),
|
||||
timeDomainViolation (11)
|
||||
}
|
||||
|
||||
END
|
127
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-LANGUAGE-MIB
Normal file
127
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-LANGUAGE-MIB
Normal file
@ -0,0 +1,127 @@
|
||||
|
||||
IANA-LANGUAGE-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-IDENTITY, mib-2
|
||||
FROM SNMPv2-SMI;
|
||||
|
||||
ianaLanguages MODULE-IDENTITY
|
||||
LAST-UPDATED "200005100000Z" -- May 10, 2000
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO
|
||||
"Internet Assigned Numbers Authority (IANA)
|
||||
|
||||
Postal: ICANN
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292
|
||||
|
||||
Tel: +1 310 823 9358 x20
|
||||
E-Mail: iana&iana.org"
|
||||
DESCRIPTION
|
||||
"The MIB module registers object identifier values for
|
||||
well-known programming and scripting languages. Every
|
||||
language registration MUST describe the format used
|
||||
when transferring scripts written in this language.
|
||||
|
||||
Any additions or changes to the contents of this MIB
|
||||
module require Designated Expert Review as defined in
|
||||
the Guidelines for Writing IANA Considerations Section
|
||||
document. The Designated Expert will be selected by
|
||||
the IESG Area Director of the OPS Area.
|
||||
|
||||
Note, this module does not have to register all possible
|
||||
languages since languages are identified by object
|
||||
identifier values. It is therefore possible to registered
|
||||
languages in private OID trees. The references given below are not
|
||||
normative with regard to the language version. Other
|
||||
references might be better suited to describe some newer
|
||||
versions of this language. The references are only
|
||||
provided as `a pointer into the right direction'."
|
||||
|
||||
-- Revision log, in reverse chronological order
|
||||
|
||||
REVISION "200005100000Z" -- May 10, 2000
|
||||
DESCRIPTION "Import mib-2 instead of experimental, so that
|
||||
this module compiles"
|
||||
|
||||
REVISION "199909090900Z" -- September 9, 1999
|
||||
DESCRIPTION "Initial version as published at time of
|
||||
publication of RFC 2591."
|
||||
|
||||
::= { mib-2 73 }
|
||||
|
||||
|
||||
ianaLangJavaByteCode OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Java byte code to be processed by a Java virtual machine.
|
||||
A script written in Java byte code is transferred by using
|
||||
the Java archive file format (JAR)."
|
||||
REFERENCE
|
||||
"The Java Virtual Machine Specification.
|
||||
ISBN 0-201-63452-X"
|
||||
::= { ianaLanguages 1 }
|
||||
|
||||
ianaLangTcl OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The Tool Command Language (Tcl). A script written in the
|
||||
Tcl language is transferred in Tcl source code format."
|
||||
REFERENCE
|
||||
"Tcl and the Tk Toolkit.
|
||||
ISBN 0-201-63337-X"
|
||||
::= { ianaLanguages 2 }
|
||||
|
||||
ianaLangPerl OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The Perl language. A script written in the Perl language
|
||||
is transferred in Perl source code format."
|
||||
REFERENCE
|
||||
"Programming Perl.
|
||||
ISBN 1-56592-149-6"
|
||||
::= { ianaLanguages 3 }
|
||||
|
||||
ianaLangScheme OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The Scheme language. A script written in the Scheme
|
||||
language is transferred in Scheme source code format."
|
||||
REFERENCE
|
||||
"The Revised^4 Report on the Algorithmic Language Scheme.
|
||||
MIT Press"
|
||||
::= { ianaLanguages 4 }
|
||||
|
||||
ianaLangSRSL OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The SNMP Script Language defined by SNMP Research. A
|
||||
script written in the SNMP Script Language is transferred
|
||||
in the SNMP Script Language source code format."
|
||||
::= { ianaLanguages 5 }
|
||||
|
||||
ianaLangPSL OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The Patrol Script Language defined by BMC Software. A script
|
||||
written in the Patrol Script Language is transferred in the
|
||||
Patrol Script Language source code format."
|
||||
REFERENCE
|
||||
"PATROL Script Language Reference Manual, Version 3.0,
|
||||
November 30, 1995. BMC Software, Inc. 2101 City West Blvd.,
|
||||
Houston, Texas 77042."
|
||||
::= { ianaLanguages 6 }
|
||||
|
||||
ianaLangSMSL OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The Systems Management Scripting Language. A script written
|
||||
in the SMSL language is transferred in the SMSL source code
|
||||
format."
|
||||
REFERENCE
|
||||
"ISO/ITU Command Sequencer.
|
||||
ISO 10164-21 or ITU X.753"
|
||||
::= { ianaLanguages 7 }
|
||||
|
||||
END
|
||||
|
67
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-MALLOC-MIB
Normal file
67
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-MALLOC-MIB
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
IANA-MALLOC-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
ianaMallocMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200301271200Z" -- January 27, 2003
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO
|
||||
" Internet Assigned Numbers Authority
|
||||
Internet Corporation for Assigned Names and Numbers
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292-6601
|
||||
|
||||
Phone: +1 310 823 9358
|
||||
EMail: iana&iana.org"
|
||||
DESCRIPTION
|
||||
"This MIB module defines the IANAscopeSource and
|
||||
IANAmallocRangeSource textual conventions for use in MIBs
|
||||
which need to identify ways of learning multicast scope and
|
||||
range information.
|
||||
|
||||
Any additions or changes to the contents of this MIB module
|
||||
require either publication of an RFC, or Designated Expert
|
||||
Review as defined in the Guidelines for Writing IANA
|
||||
Considerations Section document. The Designated Expert will
|
||||
be selected by the IESG Area Director(s) of the Transport
|
||||
Area."
|
||||
|
||||
-- revision log
|
||||
|
||||
REVISION "200301271200Z" -- January 27, 2003
|
||||
DESCRIPTION
|
||||
"Initial version."
|
||||
::= { mib-2 102 }
|
||||
|
||||
IANAscopeSource ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The source of multicast scope information."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- none of the following
|
||||
manual(2), -- statically configured
|
||||
local(3), -- automatically added by the system,
|
||||
-- such as a Source-Specific Multicast
|
||||
-- scope
|
||||
mzap(4), -- MZAP
|
||||
madcap(5) -- MADCAP
|
||||
}
|
||||
|
||||
IANAmallocRangeSource ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The source of multicast address allocation range
|
||||
information."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- none of the following
|
||||
manual(2), -- statically configured
|
||||
local(3) -- automatically added by the system,
|
||||
-- such as a Source-Specific Multicast
|
||||
-- range
|
||||
}
|
||||
|
||||
END
|
||||
|
770
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-MAU-MIB
Normal file
770
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-MAU-MIB
Normal file
@ -0,0 +1,770 @@
|
||||
IANA-MAU-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-IDENTITY, mib-2
|
||||
FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION
|
||||
FROM SNMPv2-TC
|
||||
;
|
||||
|
||||
ianaMauMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200704210000Z" -- April 21, 2007
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO " Internet Assigned Numbers Authority
|
||||
|
||||
Postal: ICANN
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292
|
||||
|
||||
Tel: +1-310-823-9358
|
||||
EMail: iana&iana.org"
|
||||
|
||||
DESCRIPTION
|
||||
"This MIB module defines dot3MauType OBJECT-IDENTITIES and
|
||||
IANAifMauListBits, IANAifMauMediaAvailable,
|
||||
IANAifMauAutoNegCapBits, and IANAifJackType
|
||||
|
||||
TEXTUAL-CONVENTIONs, specifying enumerated values of the
|
||||
ifMauTypeListBits, ifMauMediaAvailable / rpMauMediaAvailable,
|
||||
ifMauAutoNegCapabilityBits / ifMauAutoNegCapAdvertisedBits /
|
||||
ifMauAutoNegCapReceivedBits and ifJackType / rpJackType objects
|
||||
respectively, defined in the MAU-MIB.
|
||||
|
||||
It is intended that each new MAU type, Media Availability
|
||||
state, Auto Negotiation capability and/or Jack type defined by
|
||||
the IEEE 802.3 working group and approved for publication in a
|
||||
revision of IEEE Std 802.3 will be added to this MIB module,
|
||||
provided that it is suitable for being managed by the base
|
||||
objects in the MAU-MIB. An Expert Review, as defined in
|
||||
RFC 2434 [RFC2434], is REQUIRED for such additions.
|
||||
|
||||
The following reference is used throughout this MIB module:
|
||||
|
||||
[IEEE802.3] refers to:
|
||||
IEEE Std 802.3, 2005 Edition: 'IEEE Standard for
|
||||
Information technology - Telecommunications and information
|
||||
exchange between systems - Local and metropolitan area
|
||||
networks - Specific requirements -
|
||||
Part 3: Carrier sense multiple access with collision
|
||||
detection (CSMA/CD) access method and physical layer
|
||||
specifications'.
|
||||
|
||||
This reference should be updated as appropriate when new
|
||||
MAU types, Media Availability states, Auto Negotiation
|
||||
capabilities, and/or Jack types are added to this MIB module.
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
The initial version of this MIB module was published in
|
||||
RFC 4836; for full legal notices see the RFC itself.
|
||||
Supplementary information may be available at:
|
||||
http://www.ietf.org/copyrights/ianamib.html"
|
||||
|
||||
REVISION "200704210000Z" -- April 21, 2007
|
||||
DESCRIPTION "Initial version of this MIB as published in
|
||||
RFC 4836."
|
||||
::= { mib-2 154 }
|
||||
|
||||
-- Textual Conventions
|
||||
|
||||
IANAifMauTypeListBits ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This data type is used as the syntax of the ifMauTypeListBits
|
||||
object in the (updated) definition of MAU-MIB's ifMauTable.
|
||||
|
||||
The most recent version of this textual convention is available
|
||||
in the online version of this MIB module on the IANA web site.
|
||||
|
||||
Requests for new values should be made to IANA via email
|
||||
(iana&iana.org).
|
||||
|
||||
Note that changes in this textual convention SHALL be
|
||||
synchronized with relevant changes in the dot3MauType
|
||||
OBJECT-IDENTITIES."
|
||||
REFERENCE
|
||||
"[IEEE802.3], Section 30.5.1.1.2"
|
||||
SYNTAX BITS {
|
||||
bOther(0), -- other or unknown
|
||||
bAUI(1), -- AUI
|
||||
b10base5(2), -- 10BASE-5
|
||||
bFoirl(3), -- FOIRL
|
||||
|
||||
b10base2(4), -- 10BASE-2
|
||||
b10baseT(5), -- 10BASE-T duplex mode unknown
|
||||
b10baseFP(6), -- 10BASE-FP
|
||||
b10baseFB(7), -- 10BASE-FB
|
||||
b10baseFL(8), -- 10BASE-FL duplex mode unknown
|
||||
b10broad36(9), -- 10BROAD36
|
||||
b10baseTHD(10), -- 10BASE-T half duplex mode
|
||||
b10baseTFD(11), -- 10BASE-T full duplex mode
|
||||
b10baseFLHD(12), -- 10BASE-FL half duplex mode
|
||||
b10baseFLFD(13), -- 10BASE-FL full duplex mode
|
||||
b100baseT4(14), -- 100BASE-T4
|
||||
b100baseTXHD(15), -- 100BASE-TX half duplex mode
|
||||
b100baseTXFD(16), -- 100BASE-TX full duplex mode
|
||||
b100baseFXHD(17), -- 100BASE-FX half duplex mode
|
||||
b100baseFXFD(18), -- 100BASE-FX full duplex mode
|
||||
b100baseT2HD(19), -- 100BASE-T2 half duplex mode
|
||||
b100baseT2FD(20), -- 100BASE-T2 full duplex mode
|
||||
|
||||
b1000baseXHD(21), -- 1000BASE-X half duplex mode
|
||||
b1000baseXFD(22), -- 1000BASE-X full duplex mode
|
||||
b1000baseLXHD(23), -- 1000BASE-LX half duplex mode
|
||||
b1000baseLXFD(24), -- 1000BASE-LX full duplex mode
|
||||
b1000baseSXHD(25), -- 1000BASE-SX half duplex mode
|
||||
b1000baseSXFD(26), -- 1000BASE-SX full duplex mode
|
||||
b1000baseCXHD(27), -- 1000BASE-CX half duplex mode
|
||||
b1000baseCXFD(28), -- 1000BASE-CX full duplex mode
|
||||
b1000baseTHD(29), -- 1000BASE-T half duplex mode
|
||||
b1000baseTFD(30), -- 1000BASE-T full duplex mode
|
||||
|
||||
b10GbaseX(31), -- 10GBASE-X
|
||||
b10GbaseLX4(32), -- 10GBASE-LX4
|
||||
|
||||
b10GbaseR(33), -- 10GBASE-R
|
||||
b10GbaseER(34), -- 10GBASE-ER
|
||||
b10GbaseLR(35), -- 10GBASE-LR
|
||||
b10GbaseSR(36), -- 10GBASE-SR
|
||||
b10GbaseW(37), -- 10GBASE-W
|
||||
b10GbaseEW(38), -- 10GBASE-EW
|
||||
b10GbaseLW(39), -- 10GBASE-LW
|
||||
b10GbaseSW(40), -- 10GBASE-SW
|
||||
-- new since RFC 3636
|
||||
b10GbaseCX4(41), -- 10GBASE-CX4
|
||||
b2BaseTL(42), -- 2BASE-TL
|
||||
b10PassTS(43), -- 10PASS-TS
|
||||
b100BaseBX10D(44), -- 100BASE-BX10D
|
||||
b100BaseBX10U(45), -- 100BASE-BX10U
|
||||
b100BaseLX10(46), -- 100BASE-LX10
|
||||
b1000BaseBX10D(47), -- 1000BASE-BX10D
|
||||
b1000BaseBX10U(48), -- 1000BASE-BX10U
|
||||
b1000BaseLX10(49), -- 1000BASE-LX10
|
||||
b1000BasePX10D(50), -- 1000BASE-PX10D
|
||||
b1000BasePX10U(51), -- 1000BASE-PX10U
|
||||
b1000BasePX20D(52), -- 1000BASE-PX20D
|
||||
b1000BasePX20U(53) -- 1000BASE-PX20U
|
||||
}
|
||||
|
||||
IANAifMauMediaAvailable ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This data type is used as the syntax of the
|
||||
ifMauMediaAvailable and rpMauMediaAvailable objects in the
|
||||
(updated) definition of MAU-MIB's ifMauTable and rpMauTable
|
||||
respectively.
|
||||
|
||||
Possible values are:
|
||||
other(1) - undefined (not listed below)
|
||||
unknown(2) - MAU's true state is unknown; e.g.,
|
||||
during initialization
|
||||
available(3) - link, light, or loopback is normal
|
||||
notAvailable(4) - link loss, low light, or no loopback
|
||||
remoteFault(5) - a fault has been detected at the
|
||||
remote end of the link. This value
|
||||
applies to 10BASE-FB, 100BASE-T4 Far
|
||||
End Fault Indication and non-specified
|
||||
remote faults from a system running
|
||||
auto-negotiation
|
||||
invalidSignal(6) - invalid signal has been received from
|
||||
the other end of the link, 10BASE-FB
|
||||
only
|
||||
remoteJabber(7) - remote fault, due to jabber
|
||||
|
||||
remoteLinkLoss(8) - remote fault, due to link loss
|
||||
remoteTest(9) - remote fault, due to test
|
||||
offline(10) - offline, Clause 37 Auto-Negotiation
|
||||
only
|
||||
autoNegError(11) - Auto-Negotiation Error, Clause 37
|
||||
Auto-Negotiation only
|
||||
pmdLinkFault(12) - PMA/PMD receive link fault. In case
|
||||
of PAF (2BASE-TL / 10PASS-TS PHYs),
|
||||
all PMEs in the aggregation group have
|
||||
detected a link fault
|
||||
wisFrameLoss(13) - WIS loss of frame, 10GBASE-W only
|
||||
wisSignalLoss(14) - WIS loss of signal, 10GBASE-W only
|
||||
pcsLinkFault(15) - PCS receive link fault
|
||||
excessiveBER(16) - PCS Bit Error Ratio monitor
|
||||
reporting excessive error ratio
|
||||
dxsLinkFault(17) - DTE XGXS receive link fault, XAUI only
|
||||
pxsLinkFault(18) - PHY XGXS receive link fault, XAUI only
|
||||
availableReduced(19) - link normal, reduced bandwidth,
|
||||
2BASE-TL / 10PASS-TS only
|
||||
ready(20) - at least one PME in the aggregation
|
||||
group is detecting handshake tones,
|
||||
2BASE-TL / 10PASS-TS only
|
||||
|
||||
If the MAU is a 10M b/s link or fiber type (FOIRL, 10BASE-T,
|
||||
10BASE-F), then this is equivalent to the link test fail
|
||||
state/low light function. For an AUI, 10BASE2, 10BASE5, or
|
||||
10BROAD36 MAU, this indicates whether loopback is detected on
|
||||
the DI circuit. The value of this attribute persists between
|
||||
packets for MAU types AUI, 10BASE5, 10BASE2, 10BROAD36, and
|
||||
10BASEFP.
|
||||
|
||||
At power-up or following a reset, the Media Available state
|
||||
will be unknown(2) for AUI, 10BASE5, 10BASE2, 10BROAD36, and
|
||||
10BASE-FP MAUs. For these MAUs loopback will be tested on each
|
||||
transmission during which no collision is detected.
|
||||
If DI is receiving input when DO returns to IDL after a
|
||||
transmission and there has been no collision during the
|
||||
transmission, then loopback will be detected. The Media
|
||||
Available state will only change during noncollided
|
||||
transmissions for AUI, 10BASE2, 10BASE5, 10BROAD36, and
|
||||
10BASE-FP MAUs.
|
||||
|
||||
For 100BASE-T2, 100BASE-T4, 100BASE-TX, 100BASE-FX,
|
||||
100BASE-LX10, and 100BASE-BX10 PHYs the enumerations match the
|
||||
states within the link integrity state diagram.
|
||||
Any MAU that implements management of [IEEE802.3] Clause
|
||||
28 Auto-Negotiation, will map remote fault indication to
|
||||
remoteFault(5).
|
||||
|
||||
Any MAU that implements management of Clause 37
|
||||
Auto-Negotiation, will map the received RF1 and RF2 bits as
|
||||
follows: Offline maps to offline(10), Link_Failure maps to
|
||||
remoteFault(5), and Auto-Negotiation Error maps to
|
||||
autoNegError(11).
|
||||
|
||||
The value remoteFault(5) applies to 10BASE-FB remote
|
||||
fault indication, the 100BASE-X far-end fault indication, and
|
||||
nonspecified remote faults from a system running Clause 28
|
||||
Auto-Negotiation.
|
||||
|
||||
The value remoteJabber(7), remoteLink loss(8), or remoteTest(9)
|
||||
SHOULD be used instead of remoteFault(5) where the reason for
|
||||
remote fault is identified in the remote signaling protocol.
|
||||
Where a Clause 22 MII or Clause 35 GMII is present, a logic
|
||||
one in the remote fault bit maps to the value remoteFault(5),
|
||||
a logic zero in the link status bit maps to the enumeration
|
||||
notAvailable(4). The value notAvailable(4) takes precedence
|
||||
over remoteFault(5).
|
||||
|
||||
For 2BASE-TL and 10PASS-TS PHYs, the value unknown(2) maps to
|
||||
the condition where the PHY (PCS with connected PMEs) is
|
||||
initializing, the value ready(20) maps to the condition where
|
||||
the interface is down and at least one PME in the aggregation
|
||||
group is ready for handshake, the value available(3) maps to
|
||||
the condition where all the PMEs in the aggregation group are
|
||||
up, the value notAvailable(4) maps to the condition where all
|
||||
the PMEs in the aggregation group are down and no handshake
|
||||
tones are detected, the value availableReduced(19) maps to the
|
||||
condition where the interface is up, a link fault is detected
|
||||
at the receive direction by one or more PMEs in the
|
||||
aggregation group, but at least one PME is up and the
|
||||
enumeration pmdLinkFault(12) maps to the condition where a link
|
||||
fault is detected at the receive direction by all of the PMEs
|
||||
in the aggregation group.
|
||||
|
||||
For 10 Gb/s the enumerations map to value of the link_fault
|
||||
variable within the Link Fault Signaling state diagram
|
||||
as follows: the value OK maps to the value available(3),
|
||||
the value Local Fault maps to the value notAvailable(4),
|
||||
and the value Remote Fault maps to the value remoteFault(5).
|
||||
The value pmdLinkFault(12), wisFrameLoss(13),
|
||||
wisSignalLoss(14), pcsLinkFault(15), excessiveBER(16), or
|
||||
dxsLinkFault(17) SHOULD be used instead of the value
|
||||
notAvailable(4), where the reason for the Local Fault state can
|
||||
be identified through the use of the Clause 45 MDIO Interface.
|
||||
Where multiple reasons for the Local Fault state can be
|
||||
identified, only the highest precedence error SHOULD be
|
||||
|
||||
reported. This precedence in descending order is as follows:
|
||||
|
||||
pxsLinkFault
|
||||
pmdLinkFault
|
||||
wisFrameLoss
|
||||
wisSignalLoss
|
||||
pcsLinkFault
|
||||
excessiveBER
|
||||
dxsLinkFault.
|
||||
|
||||
Where a Clause 45 MDIO interface is present a logic zero in
|
||||
the PMA/PMD Receive link status bit ([IEEE802.3]
|
||||
Section 45.2.1.2.2) maps to the value pmdLinkFault(12),
|
||||
logic one in the LOF status bit (Section 45.2.2.10.4) maps
|
||||
to the value wisFrameLoss(13), a logic one in the LOS
|
||||
status bit (Section 45.2.2.10.5) maps to the value
|
||||
wisSignalLoss, a logic zero in the PCS Receive
|
||||
link status bit (Section 45.2.3.2.2) maps to the value
|
||||
pcsLinkFault(15), a logic one in the 10GBASE-R PCS Latched
|
||||
high BER status bit (Section 45.2.3.12.2) maps to the value
|
||||
excessiveBER, a logic zero in the DTE XS receive link status
|
||||
bit (Section 45.2.5.2.2) maps to the value dxsLinkFault(17)
|
||||
and a logic zero in the PHY XS transmit link status bit
|
||||
(Section 45.2.4.2.2) maps to the value pxsLinkFault(18).
|
||||
|
||||
The most recent version of this textual convention is available
|
||||
in the online version of this MIB module on the IANA web site.
|
||||
|
||||
Requests for new values should be made to IANA via email
|
||||
(iana&iana.org)."
|
||||
REFERENCE
|
||||
"[IEEE802.3], Section 30.5.1.1.4"
|
||||
SYNTAX INTEGER {
|
||||
other(1),
|
||||
unknown(2),
|
||||
available(3),
|
||||
notAvailable(4),
|
||||
remoteFault(5),
|
||||
invalidSignal(6),
|
||||
remoteJabber(7),
|
||||
remoteLinkLoss(8),
|
||||
remoteTest(9),
|
||||
offline(10),
|
||||
autoNegError(11),
|
||||
pmdLinkFault(12),
|
||||
wisFrameLoss(13),
|
||||
wisSignalLoss(14),
|
||||
pcsLinkFault(15),
|
||||
|
||||
excessiveBER(16),
|
||||
dxsLinkFault(17),
|
||||
pxsLinkFault(18),
|
||||
availableReduced(19),
|
||||
ready(20)
|
||||
}
|
||||
|
||||
IANAifMauAutoNegCapBits ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This data type is used as the syntax of the
|
||||
ifMauAutoNegCapabilityBits, ifMauAutoNegCapAdvertisedBits, and
|
||||
ifMauAutoNegCapReceivedBits objects in the (updated) definition
|
||||
of MAU-MIB's ifMauAutoNegTable.
|
||||
|
||||
The most recent version of this textual convention is available
|
||||
in the online version of this MIB module on the IANA web site.
|
||||
|
||||
Requests for new values should be made to IANA via email
|
||||
(iana&iana.org)."
|
||||
REFERENCE
|
||||
"[IEEE802.3], Section 30.6.1.1.5"
|
||||
SYNTAX BITS {
|
||||
bOther(0), -- other or unknown
|
||||
b10baseT(1), -- 10BASE-T half duplex mode
|
||||
b10baseTFD(2), -- 10BASE-T full duplex mode
|
||||
b100baseT4(3), -- 100BASE-T4
|
||||
b100baseTX(4), -- 100BASE-TX half duplex mode
|
||||
b100baseTXFD(5), -- 100BASE-TX full duplex mode
|
||||
b100baseT2(6), -- 100BASE-T2 half duplex mode
|
||||
b100baseT2FD(7), -- 100BASE-T2 full duplex mode
|
||||
bFdxPause(8), -- PAUSE for full-duplex links
|
||||
bFdxAPause(9), -- Asymmetric PAUSE for full-duplex
|
||||
-- links
|
||||
bFdxSPause(10), -- Symmetric PAUSE for full-duplex
|
||||
-- links
|
||||
bFdxBPause(11), -- Asymmetric and Symmetric PAUSE for
|
||||
-- full-duplex links
|
||||
b1000baseX(12), -- 1000BASE-X, -LX, -SX, -CX half
|
||||
-- duplex mode
|
||||
b1000baseXFD(13), -- 1000BASE-X, -LX, -SX, -CX full
|
||||
-- duplex mode
|
||||
b1000baseT(14), -- 1000BASE-T half duplex mode
|
||||
b1000baseTFD(15) -- 1000BASE-T full duplex mode
|
||||
}
|
||||
|
||||
IANAifJackType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
|
||||
DESCRIPTION
|
||||
"Common enumeration values for repeater and interface MAU
|
||||
jack types. This data type is used as the syntax of the
|
||||
ifJackType and rpJackType objects in the (updated) definition
|
||||
of MAU-MIB's ifJackTable and rpJackTable respectively.
|
||||
|
||||
Possible values are:
|
||||
other(1) - undefined or unknown
|
||||
rj45(2) - RJ45
|
||||
rj45S(3) - RJ45 shielded
|
||||
db9(4) - DB9
|
||||
bnc(5) - BNC
|
||||
fAUI(6) - AUI female
|
||||
mAUI(7) - AUI male
|
||||
fiberSC(8) - SC fiber
|
||||
fiberMIC(9) - MIC fiber
|
||||
fiberST(10) - ST fiber
|
||||
telco(11) - Telco
|
||||
mtrj(12) - MT-RJ fiber
|
||||
hssdc(13) - fiber channel style-2
|
||||
fiberLC(14) - LC fiber
|
||||
cx4(15) - IB4X for 10GBASE-CX4
|
||||
|
||||
The most recent version of this textual convention is available
|
||||
in the online version of this MIB module on the IANA web site.
|
||||
|
||||
Requests for new values should be made to IANA via email
|
||||
(iana&iana.org)."
|
||||
SYNTAX INTEGER {
|
||||
other(1),
|
||||
rj45(2),
|
||||
rj45S(3),
|
||||
db9(4),
|
||||
bnc(5),
|
||||
fAUI(6),
|
||||
mAUI(7),
|
||||
fiberSC(8),
|
||||
fiberMIC(9),
|
||||
fiberST(10),
|
||||
telco(11),
|
||||
mtrj(12),
|
||||
hssdc(13),
|
||||
fiberLC(14),
|
||||
-- new since RFC 3636
|
||||
cx4(15)
|
||||
}
|
||||
|
||||
-- OBJECT IDENTITIES for MAU types
|
||||
|
||||
-- (see rpMauType and ifMauType of MAU-MIB for usage)
|
||||
-- The following definitions has been moved from RFC 3636 and
|
||||
-- no longer appear in its revision.
|
||||
|
||||
dot3MauType OBJECT IDENTIFIER ::= { mib-2 snmpDot3MauMgt(26) 4 }
|
||||
|
||||
dot3MauTypeAUI OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "no internal MAU, view from AUI"
|
||||
REFERENCE "[IEEE802.3], Section 7"
|
||||
::= { dot3MauType 1 }
|
||||
|
||||
dot3MauType10Base5 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "thick coax MAU"
|
||||
REFERENCE "[IEEE802.3], Section 7"
|
||||
::= { dot3MauType 2 }
|
||||
|
||||
dot3MauTypeFoirl OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "FOIRL MAU"
|
||||
REFERENCE "[IEEE802.3], Section 9.9"
|
||||
::= { dot3MauType 3 }
|
||||
|
||||
dot3MauType10Base2 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "thin coax MAU"
|
||||
REFERENCE "[IEEE802.3], Section 10"
|
||||
::= { dot3MauType 4 }
|
||||
|
||||
dot3MauType10BaseT OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "UTP MAU.
|
||||
Note that it is strongly recommended that
|
||||
agents return either dot3MauType10BaseTHD or
|
||||
dot3MauType10BaseTFD if the duplex mode is
|
||||
known. However, management applications should
|
||||
be prepared to receive this MAU type value from
|
||||
older agent implementations."
|
||||
REFERENCE "[IEEE802.3], Section 14"
|
||||
::= { dot3MauType 5 }
|
||||
|
||||
dot3MauType10BaseFP OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "passive fiber MAU"
|
||||
REFERENCE "[IEEE802.3], Section 16"
|
||||
::= { dot3MauType 6 }
|
||||
|
||||
dot3MauType10BaseFB OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "sync fiber MAU"
|
||||
REFERENCE "[IEEE802.3], Section 17"
|
||||
::= { dot3MauType 7 }
|
||||
|
||||
dot3MauType10BaseFL OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "async fiber MAU.
|
||||
Note that it is strongly recommended that
|
||||
agents return either dot3MauType10BaseFLHD or
|
||||
dot3MauType10BaseFLFD if the duplex mode is
|
||||
known. However, management applications should
|
||||
be prepared to receive this MAU type value from
|
||||
older agent implementations."
|
||||
REFERENCE "[IEEE802.3], Section 18"
|
||||
::= { dot3MauType 8 }
|
||||
|
||||
dot3MauType10Broad36 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "broadband DTE MAU.
|
||||
Note that 10BROAD36 MAUs can be attached to
|
||||
interfaces but not to repeaters."
|
||||
REFERENCE "[IEEE802.3], Section 11"
|
||||
::= { dot3MauType 9 }
|
||||
|
||||
------ new since RFC 1515:
|
||||
dot3MauType10BaseTHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "UTP MAU, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 14"
|
||||
::= { dot3MauType 10 }
|
||||
|
||||
dot3MauType10BaseTFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "UTP MAU, full duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 14"
|
||||
::= { dot3MauType 11 }
|
||||
|
||||
dot3MauType10BaseFLHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "async fiber MAU, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 18"
|
||||
::= { dot3MauType 12 }
|
||||
|
||||
dot3MauType10BaseFLFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "async fiber MAU, full duplex mode"
|
||||
|
||||
REFERENCE "[IEEE802.3], Section 18"
|
||||
::= { dot3MauType 13 }
|
||||
|
||||
dot3MauType100BaseT4 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "4 pair category 3 UTP"
|
||||
REFERENCE "[IEEE802.3], Section 23"
|
||||
::= { dot3MauType 14 }
|
||||
|
||||
dot3MauType100BaseTXHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "2 pair category 5 UTP, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 25"
|
||||
::= { dot3MauType 15 }
|
||||
|
||||
dot3MauType100BaseTXFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "2 pair category 5 UTP, full duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 25"
|
||||
::= { dot3MauType 16 }
|
||||
|
||||
dot3MauType100BaseFXHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "X fiber over PMT, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 26"
|
||||
::= { dot3MauType 17 }
|
||||
|
||||
dot3MauType100BaseFXFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "X fiber over PMT, full duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 26"
|
||||
::= { dot3MauType 18 }
|
||||
|
||||
dot3MauType100BaseT2HD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "2 pair category 3 UTP, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 32"
|
||||
::= { dot3MauType 19 }
|
||||
|
||||
dot3MauType100BaseT2FD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "2 pair category 3 UTP, full duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 32"
|
||||
::= { dot3MauType 20 }
|
||||
|
||||
------ new since RFC 2239:
|
||||
dot3MauType1000BaseXHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
|
||||
DESCRIPTION "PCS/PMA, unknown PMD, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 36"
|
||||
::= { dot3MauType 21 }
|
||||
|
||||
dot3MauType1000BaseXFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "PCS/PMA, unknown PMD, full duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 36"
|
||||
::= { dot3MauType 22 }
|
||||
|
||||
dot3MauType1000BaseLXHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Fiber over long-wavelength laser, half duplex
|
||||
mode"
|
||||
REFERENCE "[IEEE802.3], Section 38"
|
||||
::= { dot3MauType 23 }
|
||||
|
||||
dot3MauType1000BaseLXFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Fiber over long-wavelength laser, full duplex
|
||||
mode"
|
||||
REFERENCE "[IEEE802.3], Section 38"
|
||||
::= { dot3MauType 24 }
|
||||
|
||||
dot3MauType1000BaseSXHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Fiber over short-wavelength laser, half
|
||||
duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 38"
|
||||
::= { dot3MauType 25 }
|
||||
|
||||
dot3MauType1000BaseSXFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Fiber over short-wavelength laser, full
|
||||
duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 38"
|
||||
::= { dot3MauType 26 }
|
||||
|
||||
dot3MauType1000BaseCXHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Copper over 150-Ohm balanced cable, half
|
||||
duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 39"
|
||||
::= { dot3MauType 27 }
|
||||
|
||||
dot3MauType1000BaseCXFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Copper over 150-Ohm balanced cable, full
|
||||
|
||||
duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 39"
|
||||
::= { dot3MauType 28 }
|
||||
|
||||
dot3MauType1000BaseTHD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Four-pair Category 5 UTP, half duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 40"
|
||||
::= { dot3MauType 29 }
|
||||
|
||||
dot3MauType1000BaseTFD OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Four-pair Category 5 UTP, full duplex mode"
|
||||
REFERENCE "[IEEE802.3], Section 40"
|
||||
::= { dot3MauType 30 }
|
||||
|
||||
------ new since RFC 2668:
|
||||
dot3MauType10GigBaseX OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "X PCS/PMA, unknown PMD."
|
||||
REFERENCE "[IEEE802.3], Section 48"
|
||||
::= { dot3MauType 31 }
|
||||
|
||||
dot3MauType10GigBaseLX4 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "X fiber over WWDM optics"
|
||||
REFERENCE "[IEEE802.3], Section 53"
|
||||
::= { dot3MauType 32 }
|
||||
|
||||
dot3MauType10GigBaseR OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "R PCS/PMA, unknown PMD."
|
||||
REFERENCE "[IEEE802.3], Section 49"
|
||||
::= { dot3MauType 33 }
|
||||
|
||||
dot3MauType10GigBaseER OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "R fiber over 1550 nm optics"
|
||||
REFERENCE "[IEEE802.3], Section 52"
|
||||
::= { dot3MauType 34 }
|
||||
|
||||
dot3MauType10GigBaseLR OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "R fiber over 1310 nm optics"
|
||||
REFERENCE "[IEEE802.3], Section 52"
|
||||
::= { dot3MauType 35 }
|
||||
|
||||
dot3MauType10GigBaseSR OBJECT-IDENTITY
|
||||
|
||||
STATUS current
|
||||
DESCRIPTION "R fiber over 850 nm optics"
|
||||
REFERENCE "[IEEE802.3], Section 52"
|
||||
::= { dot3MauType 36 }
|
||||
|
||||
dot3MauType10GigBaseW OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "W PCS/PMA, unknown PMD."
|
||||
REFERENCE "[IEEE802.3], Section 49 and 50"
|
||||
::= { dot3MauType 37 }
|
||||
|
||||
dot3MauType10GigBaseEW OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "W fiber over 1550 nm optics"
|
||||
REFERENCE "[IEEE802.3], Section 52"
|
||||
::= { dot3MauType 38 }
|
||||
|
||||
dot3MauType10GigBaseLW OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "W fiber over 1310 nm optics"
|
||||
REFERENCE "[IEEE802.3], Section 52"
|
||||
::= { dot3MauType 39 }
|
||||
|
||||
dot3MauType10GigBaseSW OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "W fiber over 850 nm optics"
|
||||
REFERENCE "[IEEE802.3], Section 52"
|
||||
::= { dot3MauType 40 }
|
||||
|
||||
------ new since RFC 3636:
|
||||
dot3MauType10GigBaseCX4 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "X copper over 8 pair 100-Ohm balanced cable"
|
||||
REFERENCE "[IEEE802.3], Section 54"
|
||||
::= { dot3MauType 41 }
|
||||
|
||||
dot3MauType2BaseTL OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Voice grade UTP copper, up to 2700m, optional PAF"
|
||||
REFERENCE "[IEEE802.3], Sections 61 and 63"
|
||||
::= { dot3MauType 42 }
|
||||
|
||||
dot3MauType10PassTS OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Voice grade UTP copper, up to 750m, optional PAF"
|
||||
REFERENCE "[IEEE802.3], Sections 61 and 62"
|
||||
::= { dot3MauType 43 }
|
||||
|
||||
dot3MauType100BaseBX10D OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber OLT, long wavelength, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 58"
|
||||
::= { dot3MauType 44 }
|
||||
|
||||
dot3MauType100BaseBX10U OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber ONU, long wavelength, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 58"
|
||||
::= { dot3MauType 45 }
|
||||
|
||||
dot3MauType100BaseLX10 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Two single-mode fibers, long wavelength, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 58"
|
||||
::= { dot3MauType 46 }
|
||||
|
||||
dot3MauType1000BaseBX10D OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber OLT, long wavelength, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 59"
|
||||
::= { dot3MauType 47 }
|
||||
|
||||
dot3MauType1000BaseBX10U OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber ONU, long wavelength, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 59"
|
||||
::= { dot3MauType 48 }
|
||||
|
||||
dot3MauType1000BaseLX10 OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "Two sigle-mode fiber, long wavelength, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 59"
|
||||
::= { dot3MauType 49 }
|
||||
|
||||
dot3MauType1000BasePX10D OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber EPON OLT, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 60"
|
||||
::= { dot3MauType 50 }
|
||||
|
||||
dot3MauType1000BasePX10U OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber EPON ONU, 10km"
|
||||
REFERENCE "[IEEE802.3], Section 60"
|
||||
::= { dot3MauType 51 }
|
||||
|
||||
dot3MauType1000BasePX20D OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber EPON OLT, 20km"
|
||||
REFERENCE "[IEEE802.3], Section 60"
|
||||
::= { dot3MauType 52 }
|
||||
|
||||
dot3MauType1000BasePX20U OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION "One single-mode fiber EPON ONU, 20km"
|
||||
REFERENCE "[IEEE802.3], Section 60"
|
||||
::= { dot3MauType 53 }
|
||||
|
||||
END
|
1319
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-PRINTER-MIB
Normal file
1319
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-PRINTER-MIB
Normal file
File diff suppressed because it is too large
Load Diff
92
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-RTPROTO-MIB
Normal file
92
contrib/apps/LwipMibCompiler/Mibs/IANA/IANA-RTPROTO-MIB
Normal file
@ -0,0 +1,92 @@
|
||||
|
||||
IANA-RTPROTO-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
ianaRtProtoMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200009260000Z" -- September 26, 2000
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO
|
||||
" Internet Assigned Numbers Authority
|
||||
Internet Corporation for Assigned Names and Numbers
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292-6601
|
||||
|
||||
Phone: +1 310 823 9358
|
||||
EMail: iana&iana.org"
|
||||
DESCRIPTION
|
||||
"This MIB module defines the IANAipRouteProtocol and
|
||||
IANAipMRouteProtocol textual conventions for use in MIBs
|
||||
which need to identify unicast or multicast routing
|
||||
mechanisms.
|
||||
|
||||
Any additions or changes to the contents of this MIB module
|
||||
require either publication of an RFC, or Designated Expert
|
||||
Review as defined in RFC 2434, Guidelines for Writing an
|
||||
IANA Considerations Section in RFCs. The Designated Expert
|
||||
will be selected by the IESG Area Director(s) of the Routing
|
||||
Area."
|
||||
|
||||
REVISION "200009260000Z" -- September 26, 2000
|
||||
DESCRIPTION "Original version, published in coordination
|
||||
with RFC 2932."
|
||||
|
||||
::= { mib-2 84 }
|
||||
|
||||
IANAipRouteProtocol ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
|
||||
DESCRIPTION
|
||||
"A mechanism for learning routes. Inclusion of values for
|
||||
routing protocols is not intended to imply that those
|
||||
protocols need be supported."
|
||||
SYNTAX INTEGER {
|
||||
other (1), -- not specified
|
||||
local (2), -- local interface
|
||||
netmgmt (3), -- static route
|
||||
icmp (4), -- result of ICMP Redirect
|
||||
|
||||
-- the following are all dynamic
|
||||
-- routing protocols
|
||||
|
||||
egp (5), -- Exterior Gateway Protocol
|
||||
ggp (6), -- Gateway-Gateway Protocol
|
||||
hello (7), -- FuzzBall HelloSpeak
|
||||
rip (8), -- Berkeley RIP or RIP-II
|
||||
isIs (9), -- Dual IS-IS
|
||||
esIs (10), -- ISO 9542
|
||||
ciscoIgrp (11), -- Cisco IGRP
|
||||
bbnSpfIgp (12), -- BBN SPF IGP
|
||||
ospf (13), -- Open Shortest Path First
|
||||
bgp (14), -- Border Gateway Protocol
|
||||
idpr (15), -- InterDomain Policy Routing
|
||||
ciscoEigrp (16), -- Cisco EIGRP
|
||||
dvmrp (17) -- DVMRP
|
||||
}
|
||||
|
||||
IANAipMRouteProtocol ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The multicast routing protocol. Inclusion of values for
|
||||
multicast routing protocols is not intended to imply that
|
||||
those protocols need be supported."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- none of the following
|
||||
local(2), -- e.g., manually configured
|
||||
netmgmt(3), -- set via net.mgmt protocol
|
||||
dvmrp(4),
|
||||
mospf(5),
|
||||
pimSparseDense(6), -- PIMv1, both DM and SM
|
||||
cbt(7),
|
||||
pimSparseMode(8), -- PIM-SM
|
||||
pimDenseMode(9), -- PIM-DM
|
||||
igmpOnly(10),
|
||||
bgmp(11),
|
||||
msdp(12)
|
||||
}
|
||||
|
||||
END
|
||||
|
||||
|
306
contrib/apps/LwipMibCompiler/Mibs/IANA/IANATn3270eTC-MIB
Normal file
306
contrib/apps/LwipMibCompiler/Mibs/IANA/IANATn3270eTC-MIB
Normal file
@ -0,0 +1,306 @@
|
||||
|
||||
IANATn3270eTC-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, mib-2
|
||||
FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION
|
||||
FROM SNMPv2-TC;
|
||||
|
||||
ianaTn3270eTcMib MODULE-IDENTITY
|
||||
LAST-UPDATED "200005100000Z" -- May 10, 2000
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO
|
||||
"Internet Assigned Numbers Authority
|
||||
|
||||
Postal: ICANN
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292
|
||||
|
||||
Tel: +1 310 823 9358 x20
|
||||
E-Mail: iana&iana.org"
|
||||
DESCRIPTION
|
||||
"This module defines a set of textual conventions
|
||||
for use by the TN3270E-MIB and the TN3270E-RT-MIB.
|
||||
|
||||
Any additions or changes to the contents of this
|
||||
MIB module must first be discussed on the tn3270e
|
||||
working group list at: tn3270e&list.nih.gov
|
||||
and approved by one of the following TN3270E
|
||||
working group contacts:
|
||||
|
||||
Ed Bailey (co-chair) - elbailey&us.ibm.com
|
||||
Michael Boe (co-chair) - mboe&cisco.com
|
||||
Ken White - kennethw&vnet.ibm.com
|
||||
Robert Moore - remoore&us.ibm.com
|
||||
|
||||
The above list of contacts can be altered with
|
||||
the approval of the two co-chairs.
|
||||
|
||||
The Textual Conventions defined within this MIB have
|
||||
no security issues associated with them unless
|
||||
explicitly stated in their corresponding
|
||||
DESCRIPTION clause."
|
||||
|
||||
-- revision log, in reverse chronological order
|
||||
|
||||
REVISION "200005100000Z" -- May 10, 2000
|
||||
DESCRIPTION "Fix to import mib-2 instead of experimental."
|
||||
|
||||
REVISION "199909011000Z" -- September 1, 1999
|
||||
DESCRIPTION
|
||||
"Initial version transferred from the TN3270E
|
||||
working group to IANA."
|
||||
|
||||
::= { mib-2 61 }
|
||||
|
||||
|
||||
-- Textual Conventions
|
||||
|
||||
IANATn3270eAddrType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The textual convention for defining the type of a
|
||||
client address. The enumeration value unknown(0) is
|
||||
also used to indicate that no actual address is present."
|
||||
SYNTAX INTEGER {
|
||||
unknown(0),
|
||||
ipv4(1),
|
||||
ipv6(2)
|
||||
}
|
||||
|
||||
IANATn3270eAddress ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Denotes a client address. The type of client address is
|
||||
determined by use of the IANATn3270eAddrType textual
|
||||
convention.
|
||||
The length in octets of a IANATn3270eAddress object is:
|
||||
|
||||
IANATn3270eAddrType Address Length
|
||||
+++++++++++++++++++ ++++++++++++++
|
||||
unknown(0) not specified or unknown; the
|
||||
actual length of the
|
||||
IANATn3270eAddress octet string
|
||||
indicates if an address
|
||||
is present
|
||||
ipv4(1) 4 OCTETS
|
||||
ipv6(2) 16 OCTETS
|
||||
|
||||
This textual convention is similar to the TAddress
|
||||
TC defined by RFC1903 except that it allows a
|
||||
zero-length octet string and is not a full transport
|
||||
layer address."
|
||||
SYNTAX OCTET STRING (SIZE (0..255))
|
||||
|
||||
IANATn3270eClientType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The textual convention for defining the set of
|
||||
enumerations used by tn3270eTcpConnClientIdFormat
|
||||
in the TN3270E-MIB:
|
||||
|
||||
ENUMERATION OCTETs DESCRIPTION
|
||||
|
||||
none(1) 0 Not specified
|
||||
other(2) 1..512 Implementation specific
|
||||
ipv4(3) 6 4-octet IP Address plus
|
||||
2-octet TCP Port
|
||||
ipv6(4) 18 16-octet IPv6 Address
|
||||
plus 2-octet TCP Port
|
||||
domainName(5) 1..512 The DNS name of a
|
||||
client.
|
||||
truncDomainName(6) 1..512 The (truncated) DNS name
|
||||
of a client.
|
||||
string(7) 1..512 Unknown Utf8String
|
||||
certificate(8) 1..512 certificate
|
||||
userId(9) 1..8 Client's userid
|
||||
x509dn(10) 1..512 X.509 Distinguished Name
|
||||
|
||||
Representation of a certificate(8) may be lead to
|
||||
a security exposure and is NOT RECOMMENDED without
|
||||
adequate security."
|
||||
SYNTAX INTEGER {
|
||||
none(1),
|
||||
other(2),
|
||||
ipv4(3),
|
||||
ipv6(4),
|
||||
domainName(5),
|
||||
truncDomainName(6),
|
||||
string(7),
|
||||
certificate(8),
|
||||
userId(9),
|
||||
x509dn(10)
|
||||
}
|
||||
|
||||
IANATn3270Functions ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This textual convention reflects the current set of
|
||||
TN3270 and TN3270E functions that can be negotiated
|
||||
between a server and its client:
|
||||
|
||||
RFC856
|
||||
transmitBinary The sender of this command REQUESTS
|
||||
permission to begin transmitting, or
|
||||
confirms that it will now begin
|
||||
transmitting characters which are to
|
||||
be interpreted as 8 bits of binary
|
||||
data by the receiver of the data.
|
||||
RFC860
|
||||
timingMark The sender of this command REQUESTS
|
||||
that the receiver of this command
|
||||
return a WILL TIMING-MARK in the data
|
||||
stream at the 'appropriate place'.
|
||||
RFC885
|
||||
endOfRecord The sender of this command requests
|
||||
permission to begin transmission of
|
||||
the Telnet END-OF-RECORD (EOR) code
|
||||
when transmitting data characters, or
|
||||
the sender of this command confirms it
|
||||
will now begin transmission of EORs
|
||||
with transmitted data characters.
|
||||
RFC1091
|
||||
terminalType Sender is willing to send terminal
|
||||
type information in a subsequent
|
||||
sub-negotiation.
|
||||
|
||||
RFC1041
|
||||
tn3270Regime Sender is willing to send list of
|
||||
supported 3270 Regimes in a
|
||||
subsequent sub-negotiation.
|
||||
RFC2355
|
||||
scsCtlCodes (Printer sessions only). Allows the
|
||||
use of the SNA Character Stream (SCS)
|
||||
and SCS control codes on the session.
|
||||
SCS is used with LU type 1 SNA sessions.
|
||||
dataStreamCtl (Printer sessions only). Allows the use
|
||||
of the standard 3270 data stream. This
|
||||
corresponds to LU type 3 SNA sessions.
|
||||
responses Provides support for positive and
|
||||
negative response handling. Allows the
|
||||
server to reflect to the client any and
|
||||
all definite, exception, and no response
|
||||
requests sent by the host application.
|
||||
bindImage Allows the server to send the SNA Bind
|
||||
image and Unbind notification to the
|
||||
client.
|
||||
sysreq Allows the client and server to emulate
|
||||
some (or all, depending on the server) of
|
||||
the functions of the SYSREQ key in an SNA
|
||||
environment."
|
||||
SYNTAX BITS {
|
||||
transmitBinary(0),-- rfc856
|
||||
timemark(1), -- rfc860
|
||||
endOfRecord(2), -- rfc885
|
||||
terminalType(3), -- rfc1091
|
||||
tn3270Regime(4), -- rfc1041
|
||||
scsCtlCodes(5), -- rfc2355
|
||||
dataStreamCtl(6), -- rfc2355
|
||||
responses(7), -- rfc2355
|
||||
bindImage(8), -- rfc2355
|
||||
sysreq(9) -- rfc2355
|
||||
}
|
||||
|
||||
IANATn3270ResourceType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The type of resource defined by a resource pool. Refer
|
||||
to tn3270eResPoolTable."
|
||||
SYNTAX INTEGER {
|
||||
other(1),
|
||||
terminal(2),
|
||||
printer(3),
|
||||
terminalOrPrinter(4)
|
||||
}
|
||||
|
||||
IANATn3270DeviceType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This textual convention defines the list of device
|
||||
types that can be set, as defined by RFC 2355."
|
||||
SYNTAX INTEGER {
|
||||
-- terminals
|
||||
ibm3278d2(1), -- (24 row x 80 col display)
|
||||
ibm3278d2E(2), -- (24 row x 80 col display)
|
||||
ibm3278d3(3), -- (32 row x 80 col display)
|
||||
ibm3278d3E(4), -- (32 row x 80 col display)
|
||||
ibm3278d4(5), -- (43 row x 80 col display)
|
||||
ibm3278d4E(6), -- (43 row x 80 col display)
|
||||
ibm3278d5(7), -- (27 row x 132 col display)
|
||||
ibm3278d5E(8), -- (27 row x 132 col display)
|
||||
ibmDynamic(9), -- (no pre-defined display size)
|
||||
|
||||
-- printers
|
||||
ibm3287d1(10),
|
||||
|
||||
unknown(100)
|
||||
}
|
||||
|
||||
IANATn3270eLogData ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An octet string representing log data as pertaining to
|
||||
either a TN3270 or TN3270E Session as reported from a
|
||||
TN3270E Server. Log data is stored in an octet string
|
||||
in time order (from earliest to latest).
|
||||
|
||||
Each log element has the following form:
|
||||
|
||||
+------+----+---------+------------+
|
||||
!length!type!TimeStamp! data !
|
||||
+------+----+---------+------------+
|
||||
|
||||
where
|
||||
|
||||
length = one-octet length of the data portion of the
|
||||
trace element, not including the length,
|
||||
type, and TimeStamp fields
|
||||
type = one-octet code point characterizing the data.
|
||||
TimeStamp = A 4-octet field representing the number of
|
||||
TimeTicks since the TN3270E server was last
|
||||
activated. The server's last activation time
|
||||
is available in the tn3270eSrvrConfLastActTime
|
||||
object in the TN3270E MIB, which has the
|
||||
syntax DateAndTime.
|
||||
data = initial part of a PDU.
|
||||
|
||||
length type
|
||||
|
||||
0-255 x'00' - unknown
|
||||
0 x'01' - inactivity timer expired
|
||||
0 x'02' - dynamic timer expired
|
||||
0 x'03' - actlu req
|
||||
0 x'04' - bind req
|
||||
0 x'05' - clear req
|
||||
0 x'06' - dactlu req
|
||||
0 x'07' - warm actpu req
|
||||
0 x'08' - sdt req
|
||||
0 x'09' - unbind req
|
||||
0 x'0A' - notify resp
|
||||
0 x'0B' - reply PSID neg rsp
|
||||
0 x'0C' - reply PSID pos rsp
|
||||
0 x'0D' - unbind rsp
|
||||
0 x'0E' - hierarchical reset
|
||||
0 x'0F' - client connect req
|
||||
0 x'10' - client disconnect req
|
||||
0 x'11' - timingmark received
|
||||
0 x'12' - flowControl timer expired
|
||||
0 x'13' - neg rsp to host
|
||||
0 x'14' - neg rsp from host
|
||||
0 x'15' - data contention
|
||||
0 x'16' - no buffer to send SNA data
|
||||
0 x'17' - receive response while inbound
|
||||
0 x'18' - client protocol error
|
||||
0 x'19' - badClientSequenceReceived
|
||||
1-255 x'1A' - utf8String
|
||||
2 x'1B' - hexCode, implementation dependent
|
||||
|
||||
Log element entries have a minimum length of 6 octets.
|
||||
The zero-length string indicates that no log data is
|
||||
available."
|
||||
SYNTAX OCTET STRING (SIZE (0 | 6..2048))
|
||||
|
||||
END
|
||||
|
||||
|
572
contrib/apps/LwipMibCompiler/Mibs/IANA/IANAifType-MIB
Normal file
572
contrib/apps/LwipMibCompiler/Mibs/IANA/IANAifType-MIB
Normal file
@ -0,0 +1,572 @@
|
||||
IANAifType-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
ianaifType MODULE-IDENTITY
|
||||
LAST-UPDATED "200709130000Z" -- September 13, 2007
|
||||
ORGANIZATION "IANA"
|
||||
CONTACT-INFO " Internet Assigned Numbers Authority
|
||||
|
||||
Postal: ICANN
|
||||
4676 Admiralty Way, Suite 330
|
||||
Marina del Rey, CA 90292
|
||||
|
||||
Tel: +1 310 823 9358
|
||||
E-Mail: iana&iana.org"
|
||||
|
||||
DESCRIPTION "This MIB module defines the IANAifType Textual
|
||||
Convention, and thus the enumerated values of
|
||||
the ifType object defined in MIB-II's ifTable."
|
||||
|
||||
REVISION "200709130000Z" -- September 13, 2007
|
||||
DESCRIPTION "Registration of new IANAifTypes 243 and 244."
|
||||
|
||||
REVISION "200705290000Z" -- May 29, 2007
|
||||
DESCRIPTION "Changed the description for IANAifType 228."
|
||||
|
||||
REVISION "200703080000Z" -- March 08, 2007
|
||||
DESCRIPTION "Registration of new IANAifType 242."
|
||||
|
||||
REVISION "200701230000Z" -- January 23, 2007
|
||||
DESCRIPTION "Registration of new IANAifTypes 239, 240, and 241."
|
||||
|
||||
REVISION "200610170000Z" -- October 17, 2006
|
||||
DESCRIPTION "Deprecated/Obsoleted IANAifType 230. Registration of
|
||||
IANAifType 238."
|
||||
|
||||
REVISION "200609250000Z" -- September 25, 2006
|
||||
DESCRIPTION "Changed the description for IANA ifType
|
||||
184 and added new IANA ifType 237."
|
||||
|
||||
REVISION "200608170000Z" -- August 17, 2006
|
||||
DESCRIPTION "Changed the descriptions for IANAifTypes
|
||||
20 and 21."
|
||||
|
||||
REVISION "200608110000Z" -- August 11, 2006
|
||||
DESCRIPTION "Changed the descriptions for IANAifTypes
|
||||
7, 11, 62, 69, and 117."
|
||||
|
||||
REVISION "200607250000Z" -- July 25, 2006
|
||||
DESCRIPTION "Registration of new IANA ifType 236."
|
||||
|
||||
REVISION "200606140000Z" -- June 14, 2006
|
||||
DESCRIPTION "Registration of new IANA ifType 235."
|
||||
|
||||
REVISION "200603310000Z" -- March 31, 2006
|
||||
DESCRIPTION "Registration of new IANA ifType 234."
|
||||
|
||||
REVISION "200603300000Z" -- March 30, 2006
|
||||
DESCRIPTION "Registration of new IANA ifType 233."
|
||||
|
||||
REVISION "200512220000Z" -- December 22, 2005
|
||||
DESCRIPTION "Registration of new IANA ifTypes 231 and 232."
|
||||
|
||||
REVISION "200510100000Z" -- October 10, 2005
|
||||
DESCRIPTION "Registration of new IANA ifType 230."
|
||||
|
||||
REVISION "200509090000Z" -- September 09, 2005
|
||||
DESCRIPTION "Registration of new IANA ifType 229."
|
||||
|
||||
REVISION "200505270000Z" -- May 27, 2005
|
||||
DESCRIPTION "Registration of new IANA ifType 228."
|
||||
|
||||
REVISION "200503030000Z" -- March 3, 2005
|
||||
DESCRIPTION "Added the IANAtunnelType TC and deprecated
|
||||
IANAifType sixToFour (215) per RFC4087."
|
||||
|
||||
REVISION "200411220000Z" -- November 22, 2004
|
||||
DESCRIPTION "Registration of new IANA ifType 227 per RFC4631."
|
||||
|
||||
REVISION "200406170000Z" -- June 17, 2004
|
||||
DESCRIPTION "Registration of new IANA ifType 226."
|
||||
|
||||
REVISION "200405120000Z" -- May 12, 2004
|
||||
DESCRIPTION "Added description for IANAifType 6, and
|
||||
changed the descriptions for IANAifTypes
|
||||
180, 181, and 182."
|
||||
|
||||
REVISION "200405070000Z" -- May 7, 2004
|
||||
DESCRIPTION "Registration of new IANAifType 225."
|
||||
|
||||
REVISION "200308250000Z" -- Aug 25, 2003
|
||||
DESCRIPTION "Deprecated IANAifTypes 7 and 11. Obsoleted
|
||||
IANAifTypes 62, 69, and 117. ethernetCsmacd (6)
|
||||
should be used instead of these values"
|
||||
|
||||
REVISION "200308180000Z" -- Aug 18, 2003
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
224."
|
||||
|
||||
REVISION "200308070000Z" -- Aug 7, 2003
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
222 and 223."
|
||||
|
||||
REVISION "200303180000Z" -- Mar 18, 2003
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
221."
|
||||
|
||||
REVISION "200301130000Z" -- Jan 13, 2003
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
220."
|
||||
|
||||
REVISION "200210170000Z" -- Oct 17, 2002
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
219."
|
||||
|
||||
REVISION "200207160000Z" -- Jul 16, 2002
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
217 and 218."
|
||||
|
||||
REVISION "200207100000Z" -- Jul 10, 2002
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
215 and 216."
|
||||
|
||||
REVISION "200206190000Z" -- Jun 19, 2002
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
214."
|
||||
|
||||
REVISION "200201040000Z" -- Jan 4, 2002
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
211, 212 and 213."
|
||||
|
||||
REVISION "200112200000Z" -- Dec 20, 2001
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
209 and 210."
|
||||
|
||||
REVISION "200111150000Z" -- Nov 15, 2001
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
207 and 208."
|
||||
|
||||
|
||||
REVISION "200111060000Z" -- Nov 6, 2001
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
206."
|
||||
|
||||
|
||||
REVISION "200111020000Z" -- Nov 2, 2001
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
205."
|
||||
|
||||
|
||||
REVISION "200110160000Z" -- Oct 16, 2001
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
199, 200, 201, 202, 203, and 204."
|
||||
|
||||
|
||||
REVISION "200109190000Z" -- Sept 19, 2001
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
198."
|
||||
|
||||
REVISION "200105110000Z" -- May 11, 2001
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
197."
|
||||
|
||||
|
||||
REVISION "200101120000Z" -- Jan 12, 2001
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
195 and 196."
|
||||
|
||||
REVISION "200012190000Z" -- Dec 19, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
193 and 194."
|
||||
|
||||
REVISION "200012070000Z" -- Dec 07, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
191 and 192."
|
||||
|
||||
REVISION "200012040000Z" -- Dec 04, 2000
|
||||
DESCRIPTION "Registration of new IANAifType
|
||||
190."
|
||||
|
||||
REVISION "200010170000Z" -- Oct 17, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
188 and 189."
|
||||
|
||||
REVISION "200010020000Z" -- Oct 02, 2000
|
||||
DESCRIPTION "Registration of new IANAifType 187."
|
||||
|
||||
REVISION "200009010000Z" -- Sept 01, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
184, 185, and 186."
|
||||
|
||||
REVISION "200008240000Z" -- Aug 24, 2000
|
||||
DESCRIPTION "Registration of new IANAifType 183."
|
||||
|
||||
REVISION "200008230000Z" -- Aug 23, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes
|
||||
174-182."
|
||||
|
||||
REVISION "200008220000Z" -- Aug 22, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes 170,
|
||||
171, 172 and 173."
|
||||
|
||||
REVISION "200004250000Z" -- Apr 25, 2000
|
||||
DESCRIPTION "Registration of new IANAifTypes 168 and 169."
|
||||
|
||||
REVISION "200003060000Z" -- Mar 6, 2000
|
||||
DESCRIPTION "Fixed a missing semi-colon in the IMPORT.
|
||||
Also cleaned up the REVISION log a bit.
|
||||
It is not complete, but from now on it will
|
||||
be maintained and kept up to date with each
|
||||
change to this MIB module."
|
||||
|
||||
REVISION "199910081430Z" -- Oct 08, 1999
|
||||
DESCRIPTION "Include new name assignments up to cnr(85).
|
||||
This is the first version available via the WWW
|
||||
at: ftp://ftp.isi.edu/mib/ianaiftype.mib"
|
||||
|
||||
REVISION "199401310000Z" -- Jan 31, 1994
|
||||
DESCRIPTION "Initial version of this MIB as published in
|
||||
RFC 1573."
|
||||
|
||||
::= { mib-2 30 }
|
||||
|
||||
|
||||
IANAifType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This data type is used as the syntax of the ifType
|
||||
object in the (updated) definition of MIB-II's
|
||||
ifTable.
|
||||
|
||||
The definition of this textual convention with the
|
||||
addition of newly assigned values is published
|
||||
periodically by the IANA, in either the Assigned
|
||||
Numbers RFC, or some derivative of it specific to
|
||||
Internet Network Management number assignments. (The
|
||||
latest arrangements can be obtained by contacting the
|
||||
IANA.)
|
||||
|
||||
Requests for new values should be made to IANA via
|
||||
email (iana&iana.org).
|
||||
|
||||
The relationship between the assignment of ifType
|
||||
values and of OIDs to particular media-specific MIBs
|
||||
is solely the purview of IANA and is subject to change
|
||||
without notice. Quite often, a media-specific MIB's
|
||||
OID-subtree assignment within MIB-II's 'transmission'
|
||||
subtree will be the same as its ifType value.
|
||||
However, in some circumstances this will not be the
|
||||
case, and implementors must not pre-assume any
|
||||
specific relationship between ifType values and
|
||||
transmission subtree OIDs."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- none of the following
|
||||
regular1822(2),
|
||||
hdh1822(3),
|
||||
ddnX25(4),
|
||||
rfc877x25(5),
|
||||
ethernetCsmacd(6), -- for all ethernet-like interfaces,
|
||||
-- regardless of speed, as per RFC3635
|
||||
iso88023Csmacd(7), -- Deprecated via RFC3635
|
||||
-- ethernetCsmacd (6) should be used instead
|
||||
iso88024TokenBus(8),
|
||||
iso88025TokenRing(9),
|
||||
iso88026Man(10),
|
||||
starLan(11), -- Deprecated via RFC3635
|
||||
-- ethernetCsmacd (6) should be used instead
|
||||
proteon10Mbit(12),
|
||||
proteon80Mbit(13),
|
||||
hyperchannel(14),
|
||||
fddi(15),
|
||||
lapb(16),
|
||||
sdlc(17),
|
||||
ds1(18), -- DS1-MIB
|
||||
e1(19), -- Obsolete see DS1-MIB
|
||||
basicISDN(20), -- no longer used
|
||||
-- see also RFC2127
|
||||
primaryISDN(21), -- no longer used
|
||||
-- see also RFC2127
|
||||
propPointToPointSerial(22), -- proprietary serial
|
||||
ppp(23),
|
||||
softwareLoopback(24),
|
||||
eon(25), -- CLNP over IP
|
||||
ethernet3Mbit(26),
|
||||
nsip(27), -- XNS over IP
|
||||
slip(28), -- generic SLIP
|
||||
ultra(29), -- ULTRA technologies
|
||||
ds3(30), -- DS3-MIB
|
||||
sip(31), -- SMDS, coffee
|
||||
frameRelay(32), -- DTE only.
|
||||
rs232(33),
|
||||
para(34), -- parallel-port
|
||||
arcnet(35), -- arcnet
|
||||
arcnetPlus(36), -- arcnet plus
|
||||
atm(37), -- ATM cells
|
||||
miox25(38),
|
||||
sonet(39), -- SONET or SDH
|
||||
x25ple(40),
|
||||
iso88022llc(41),
|
||||
localTalk(42),
|
||||
smdsDxi(43),
|
||||
frameRelayService(44), -- FRNETSERV-MIB
|
||||
v35(45),
|
||||
hssi(46),
|
||||
hippi(47),
|
||||
modem(48), -- Generic modem
|
||||
aal5(49), -- AAL5 over ATM
|
||||
sonetPath(50),
|
||||
sonetVT(51),
|
||||
smdsIcip(52), -- SMDS InterCarrier Interface
|
||||
propVirtual(53), -- proprietary virtual/internal
|
||||
propMultiplexor(54),-- proprietary multiplexing
|
||||
ieee80212(55), -- 100BaseVG
|
||||
fibreChannel(56), -- Fibre Channel
|
||||
hippiInterface(57), -- HIPPI interfaces
|
||||
frameRelayInterconnect(58), -- Obsolete use either
|
||||
-- frameRelay(32) or
|
||||
-- frameRelayService(44).
|
||||
aflane8023(59), -- ATM Emulated LAN for 802.3
|
||||
aflane8025(60), -- ATM Emulated LAN for 802.5
|
||||
cctEmul(61), -- ATM Emulated circuit
|
||||
fastEther(62), -- Obsoleted via RFC3635
|
||||
-- ethernetCsmacd (6) should be used instead
|
||||
isdn(63), -- ISDN and X.25
|
||||
v11(64), -- CCITT V.11/X.21
|
||||
v36(65), -- CCITT V.36
|
||||
g703at64k(66), -- CCITT G703 at 64Kbps
|
||||
g703at2mb(67), -- Obsolete see DS1-MIB
|
||||
qllc(68), -- SNA QLLC
|
||||
fastEtherFX(69), -- Obsoleted via RFC3635
|
||||
-- ethernetCsmacd (6) should be used instead
|
||||
channel(70), -- channel
|
||||
ieee80211(71), -- radio spread spectrum
|
||||
ibm370parChan(72), -- IBM System 360/370 OEMI Channel
|
||||
escon(73), -- IBM Enterprise Systems Connection
|
||||
dlsw(74), -- Data Link Switching
|
||||
isdns(75), -- ISDN S/T interface
|
||||
isdnu(76), -- ISDN U interface
|
||||
lapd(77), -- Link Access Protocol D
|
||||
ipSwitch(78), -- IP Switching Objects
|
||||
rsrb(79), -- Remote Source Route Bridging
|
||||
atmLogical(80), -- ATM Logical Port
|
||||
ds0(81), -- Digital Signal Level 0
|
||||
ds0Bundle(82), -- group of ds0s on the same ds1
|
||||
bsc(83), -- Bisynchronous Protocol
|
||||
async(84), -- Asynchronous Protocol
|
||||
cnr(85), -- Combat Net Radio
|
||||
iso88025Dtr(86), -- ISO 802.5r DTR
|
||||
eplrs(87), -- Ext Pos Loc Report Sys
|
||||
arap(88), -- Appletalk Remote Access Protocol
|
||||
propCnls(89), -- Proprietary Connectionless Protocol
|
||||
hostPad(90), -- CCITT-ITU X.29 PAD Protocol
|
||||
termPad(91), -- CCITT-ITU X.3 PAD Facility
|
||||
frameRelayMPI(92), -- Multiproto Interconnect over FR
|
||||
x213(93), -- CCITT-ITU X213
|
||||
adsl(94), -- Asymmetric Digital Subscriber Loop
|
||||
radsl(95), -- Rate-Adapt. Digital Subscriber Loop
|
||||
sdsl(96), -- Symmetric Digital Subscriber Loop
|
||||
vdsl(97), -- Very H-Speed Digital Subscrib. Loop
|
||||
iso88025CRFPInt(98), -- ISO 802.5 CRFP
|
||||
myrinet(99), -- Myricom Myrinet
|
||||
voiceEM(100), -- voice recEive and transMit
|
||||
voiceFXO(101), -- voice Foreign Exchange Office
|
||||
voiceFXS(102), -- voice Foreign Exchange Station
|
||||
voiceEncap(103), -- voice encapsulation
|
||||
voiceOverIp(104), -- voice over IP encapsulation
|
||||
atmDxi(105), -- ATM DXI
|
||||
atmFuni(106), -- ATM FUNI
|
||||
atmIma (107), -- ATM IMA
|
||||
pppMultilinkBundle(108), -- PPP Multilink Bundle
|
||||
ipOverCdlc (109), -- IBM ipOverCdlc
|
||||
ipOverClaw (110), -- IBM Common Link Access to Workstn
|
||||
stackToStack (111), -- IBM stackToStack
|
||||
virtualIpAddress (112), -- IBM VIPA
|
||||
mpc (113), -- IBM multi-protocol channel support
|
||||
ipOverAtm (114), -- IBM ipOverAtm
|
||||
iso88025Fiber (115), -- ISO 802.5j Fiber Token Ring
|
||||
tdlc (116), -- IBM twinaxial data link control
|
||||
gigabitEthernet (117), -- Obsoleted via RFC3635
|
||||
-- ethernetCsmacd (6) should be used instead
|
||||
hdlc (118), -- HDLC
|
||||
lapf (119), -- LAP F
|
||||
v37 (120), -- V.37
|
||||
x25mlp (121), -- Multi-Link Protocol
|
||||
x25huntGroup (122), -- X25 Hunt Group
|
||||
trasnpHdlc (123), -- Transp HDLC
|
||||
interleave (124), -- Interleave channel
|
||||
fast (125), -- Fast channel
|
||||
ip (126), -- IP (for APPN HPR in IP networks)
|
||||
docsCableMaclayer (127), -- CATV Mac Layer
|
||||
docsCableDownstream (128), -- CATV Downstream interface
|
||||
docsCableUpstream (129), -- CATV Upstream interface
|
||||
a12MppSwitch (130), -- Avalon Parallel Processor
|
||||
tunnel (131), -- Encapsulation interface
|
||||
coffee (132), -- coffee pot
|
||||
ces (133), -- Circuit Emulation Service
|
||||
atmSubInterface (134), -- ATM Sub Interface
|
||||
l2vlan (135), -- Layer 2 Virtual LAN using 802.1Q
|
||||
l3ipvlan (136), -- Layer 3 Virtual LAN using IP
|
||||
l3ipxvlan (137), -- Layer 3 Virtual LAN using IPX
|
||||
digitalPowerline (138), -- IP over Power Lines
|
||||
mediaMailOverIp (139), -- Multimedia Mail over IP
|
||||
dtm (140), -- Dynamic syncronous Transfer Mode
|
||||
dcn (141), -- Data Communications Network
|
||||
ipForward (142), -- IP Forwarding Interface
|
||||
msdsl (143), -- Multi-rate Symmetric DSL
|
||||
ieee1394 (144), -- IEEE1394 High Performance Serial Bus
|
||||
if-gsn (145), -- HIPPI-6400
|
||||
dvbRccMacLayer (146), -- DVB-RCC MAC Layer
|
||||
dvbRccDownstream (147), -- DVB-RCC Downstream Channel
|
||||
dvbRccUpstream (148), -- DVB-RCC Upstream Channel
|
||||
atmVirtual (149), -- ATM Virtual Interface
|
||||
mplsTunnel (150), -- MPLS Tunnel Virtual Interface
|
||||
srp (151), -- Spatial Reuse Protocol
|
||||
voiceOverAtm (152), -- Voice Over ATM
|
||||
voiceOverFrameRelay (153), -- Voice Over Frame Relay
|
||||
idsl (154), -- Digital Subscriber Loop over ISDN
|
||||
compositeLink (155), -- Avici Composite Link Interface
|
||||
ss7SigLink (156), -- SS7 Signaling Link
|
||||
propWirelessP2P (157), -- Prop. P2P wireless interface
|
||||
frForward (158), -- Frame Forward Interface
|
||||
rfc1483 (159), -- Multiprotocol over ATM AAL5
|
||||
usb (160), -- USB Interface
|
||||
ieee8023adLag (161), -- IEEE 802.3ad Link Aggregate
|
||||
bgppolicyaccounting (162), -- BGP Policy Accounting
|
||||
frf16MfrBundle (163), -- FRF .16 Multilink Frame Relay
|
||||
h323Gatekeeper (164), -- H323 Gatekeeper
|
||||
h323Proxy (165), -- H323 Voice and Video Proxy
|
||||
mpls (166), -- MPLS
|
||||
mfSigLink (167), -- Multi-frequency signaling link
|
||||
hdsl2 (168), -- High Bit-Rate DSL - 2nd generation
|
||||
shdsl (169), -- Multirate HDSL2
|
||||
ds1FDL (170), -- Facility Data Link 4Kbps on a DS1
|
||||
pos (171), -- Packet over SONET/SDH Interface
|
||||
dvbAsiIn (172), -- DVB-ASI Input
|
||||
dvbAsiOut (173), -- DVB-ASI Output
|
||||
plc (174), -- Power Line Communtications
|
||||
nfas (175), -- Non Facility Associated Signaling
|
||||
tr008 (176), -- TR008
|
||||
gr303RDT (177), -- Remote Digital Terminal
|
||||
gr303IDT (178), -- Integrated Digital Terminal
|
||||
isup (179), -- ISUP
|
||||
propDocsWirelessMaclayer (180), -- Cisco proprietary Maclayer
|
||||
propDocsWirelessDownstream (181), -- Cisco proprietary Downstream
|
||||
propDocsWirelessUpstream (182), -- Cisco proprietary Upstream
|
||||
hiperlan2 (183), -- HIPERLAN Type 2 Radio Interface
|
||||
propBWAp2Mp (184), -- PropBroadbandWirelessAccesspt2multipt
|
||||
-- use of this iftype for IEEE 802.16 WMAN
|
||||
-- interfaces as per IEEE Std 802.16f is
|
||||
-- deprecated and ifType 237 should be used instead.
|
||||
sonetOverheadChannel (185), -- SONET Overhead Channel
|
||||
digitalWrapperOverheadChannel (186), -- Digital Wrapper
|
||||
aal2 (187), -- ATM adaptation layer 2
|
||||
radioMAC (188), -- MAC layer over radio links
|
||||
atmRadio (189), -- ATM over radio links
|
||||
imt (190), -- Inter Machine Trunks
|
||||
mvl (191), -- Multiple Virtual Lines DSL
|
||||
reachDSL (192), -- Long Reach DSL
|
||||
frDlciEndPt (193), -- Frame Relay DLCI End Point
|
||||
atmVciEndPt (194), -- ATM VCI End Point
|
||||
opticalChannel (195), -- Optical Channel
|
||||
opticalTransport (196), -- Optical Transport
|
||||
propAtm (197), -- Proprietary ATM
|
||||
voiceOverCable (198), -- Voice Over Cable Interface
|
||||
infiniband (199), -- Infiniband
|
||||
teLink (200), -- TE Link
|
||||
q2931 (201), -- Q.2931
|
||||
virtualTg (202), -- Virtual Trunk Group
|
||||
sipTg (203), -- SIP Trunk Group
|
||||
sipSig (204), -- SIP Signaling
|
||||
docsCableUpstreamChannel (205), -- CATV Upstream Channel
|
||||
econet (206), -- Acorn Econet
|
||||
pon155 (207), -- FSAN 155Mb Symetrical PON interface
|
||||
pon622 (208), -- FSAN622Mb Symetrical PON interface
|
||||
bridge (209), -- Transparent bridge interface
|
||||
linegroup (210), -- Interface common to multiple lines
|
||||
voiceEMFGD (211), -- voice E&M Feature Group D
|
||||
voiceFGDEANA (212), -- voice FGD Exchange Access North American
|
||||
voiceDID (213), -- voice Direct Inward Dialing
|
||||
mpegTransport (214), -- MPEG transport interface
|
||||
sixToFour (215), -- 6to4 interface (DEPRECATED)
|
||||
gtp (216), -- GTP (GPRS Tunneling Protocol)
|
||||
pdnEtherLoop1 (217), -- Paradyne EtherLoop 1
|
||||
pdnEtherLoop2 (218), -- Paradyne EtherLoop 2
|
||||
opticalChannelGroup (219), -- Optical Channel Group
|
||||
homepna (220), -- HomePNA ITU-T G.989
|
||||
gfp (221), -- Generic Framing Procedure (GFP)
|
||||
ciscoISLvlan (222), -- Layer 2 Virtual LAN using Cisco ISL
|
||||
actelisMetaLOOP (223), -- Acteleis proprietary MetaLOOP High Speed Link
|
||||
fcipLink (224), -- FCIP Link
|
||||
rpr (225), -- Resilient Packet Ring Interface Type
|
||||
qam (226), -- RF Qam Interface
|
||||
lmp (227), -- Link Management Protocol
|
||||
cblVectaStar (228), -- Cambridge Broadband Networks Limited VectaStar
|
||||
docsCableMCmtsDownstream (229), -- CATV Modular CMTS Downstream Interface
|
||||
adsl2 (230), -- Asymmetric Digital Subscriber Loop Version 2
|
||||
-- (DEPRECATED/OBSOLETED - please use adsl2plus 238 instead)
|
||||
macSecControlledIF (231), -- MACSecControlled
|
||||
macSecUncontrolledIF (232), -- MACSecUncontrolled
|
||||
aviciOpticalEther (233), -- Avici Optical Ethernet Aggregate
|
||||
atmbond (234), -- atmbond
|
||||
voiceFGDOS (235), -- voice FGD Operator Services
|
||||
mocaVersion1 (236), -- MultiMedia over Coax Alliance (MoCA) Interface
|
||||
-- as documented in information provided privately to IANA
|
||||
ieee80216WMAN (237), -- IEEE 802.16 WMAN interface
|
||||
adsl2plus (238), -- Asymmetric Digital Subscriber Loop Version 2,
|
||||
-- Version 2 Plus and all variants
|
||||
dvbRcsMacLayer (239), -- DVB-RCS MAC Layer
|
||||
dvbTdm (240), -- DVB Satellite TDM
|
||||
dvbRcsTdma (241), -- DVB-RCS TDMA
|
||||
x86Laps (242), -- LAPS based on ITU-T X.86/Y.1323
|
||||
wwanPP (243), -- 3GPP WWAN
|
||||
wwanPP2 (244) -- 3GPP2 WWAN
|
||||
}
|
||||
|
||||
IANAtunnelType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The encapsulation method used by a tunnel. The value
|
||||
direct indicates that a packet is encapsulated
|
||||
directly within a normal IP header, with no
|
||||
intermediate header, and unicast to the remote tunnel
|
||||
endpoint (e.g., an RFC 2003 IP-in-IP tunnel, or an RFC
|
||||
1933 IPv6-in-IPv4 tunnel). The value minimal indicates
|
||||
that a Minimal Forwarding Header (RFC 2004) is
|
||||
inserted between the outer header and the payload
|
||||
packet. The value UDP indicates that the payload
|
||||
packet is encapsulated within a normal UDP packet
|
||||
(e.g., RFC 1234).
|
||||
|
||||
The values sixToFour, sixOverFour, and isatap
|
||||
indicates that an IPv6 packet is encapsulated directly
|
||||
within an IPv4 header, with no intermediate header,
|
||||
and unicast to the destination determined by the 6to4,
|
||||
6over4, or ISATAP protocol.
|
||||
|
||||
The remaining protocol-specific values indicate that a
|
||||
header of the protocol of that name is inserted
|
||||
between the outer header and the payload header.
|
||||
|
||||
The assignment policy for IANAtunnelType values is
|
||||
identical to the policy for assigning IANAifType
|
||||
values."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- none of the following
|
||||
direct(2), -- no intermediate header
|
||||
gre(3), -- GRE encapsulation
|
||||
minimal(4), -- Minimal encapsulation
|
||||
l2tp(5), -- L2TP encapsulation
|
||||
pptp(6), -- PPTP encapsulation
|
||||
l2f(7), -- L2F encapsulation
|
||||
udp(8), -- UDP encapsulation
|
||||
atmp(9), -- ATMP encapsulation
|
||||
msdp(10), -- MSDP encapsulation
|
||||
sixToFour(11), -- 6to4 encapsulation
|
||||
sixOverFour(12), -- 6over4 encapsulation
|
||||
isatap(13), -- ISATAP encapsulation
|
||||
teredo(14) -- Teredo encapsulation
|
||||
}
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
1899
contrib/apps/LwipMibCompiler/Mibs/IF-MIB
Normal file
1899
contrib/apps/LwipMibCompiler/Mibs/IF-MIB
Normal file
File diff suppressed because it is too large
Load Diff
421
contrib/apps/LwipMibCompiler/Mibs/INET-ADDRESS-MIB
Normal file
421
contrib/apps/LwipMibCompiler/Mibs/INET-ADDRESS-MIB
Normal file
@ -0,0 +1,421 @@
|
||||
INET-ADDRESS-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, mib-2, Unsigned32 FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
inetAddressMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200502040000Z"
|
||||
ORGANIZATION
|
||||
"IETF Operations and Management Area"
|
||||
CONTACT-INFO
|
||||
"Juergen Schoenwaelder (Editor)
|
||||
International University Bremen
|
||||
P.O. Box 750 561
|
||||
28725 Bremen, Germany
|
||||
|
||||
Phone: +49 421 200-3587
|
||||
EMail: j.schoenwaelder@iu-bremen.de
|
||||
|
||||
Send comments to <ietfmibs@ops.ietf.org>."
|
||||
DESCRIPTION
|
||||
"This MIB module defines textual conventions for
|
||||
representing Internet addresses. An Internet
|
||||
address can be an IPv4 address, an IPv6 address,
|
||||
or a DNS domain name. This module also defines
|
||||
textual conventions for Internet port numbers,
|
||||
autonomous system numbers, and the length of an
|
||||
Internet address prefix.
|
||||
|
||||
Copyright (C) The Internet Society (2005). This version
|
||||
of this MIB module is part of RFC 4001, see the RFC
|
||||
itself for full legal notices."
|
||||
REVISION "200502040000Z"
|
||||
DESCRIPTION
|
||||
"Third version, published as RFC 4001. This revision
|
||||
introduces the InetZoneIndex, InetScopeType, and
|
||||
InetVersion textual conventions."
|
||||
REVISION "200205090000Z"
|
||||
DESCRIPTION
|
||||
"Second version, published as RFC 3291. This
|
||||
revision contains several clarifications and
|
||||
introduces several new textual conventions:
|
||||
InetAddressPrefixLength, InetPortNumber,
|
||||
InetAutonomousSystemNumber, InetAddressIPv4z,
|
||||
and InetAddressIPv6z."
|
||||
REVISION "200006080000Z"
|
||||
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
"Initial version, published as RFC 2851."
|
||||
::= { mib-2 76 }
|
||||
|
||||
InetAddressType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A value that represents a type of Internet address.
|
||||
|
||||
unknown(0) An unknown address type. This value MUST
|
||||
be used if the value of the corresponding
|
||||
InetAddress object is a zero-length string.
|
||||
It may also be used to indicate an IP address
|
||||
that is not in one of the formats defined
|
||||
below.
|
||||
|
||||
ipv4(1) An IPv4 address as defined by the
|
||||
InetAddressIPv4 textual convention.
|
||||
|
||||
ipv6(2) An IPv6 address as defined by the
|
||||
InetAddressIPv6 textual convention.
|
||||
|
||||
ipv4z(3) A non-global IPv4 address including a zone
|
||||
index as defined by the InetAddressIPv4z
|
||||
textual convention.
|
||||
|
||||
ipv6z(4) A non-global IPv6 address including a zone
|
||||
index as defined by the InetAddressIPv6z
|
||||
textual convention.
|
||||
|
||||
dns(16) A DNS domain name as defined by the
|
||||
InetAddressDNS textual convention.
|
||||
|
||||
Each definition of a concrete InetAddressType value must be
|
||||
accompanied by a definition of a textual convention for use
|
||||
with that InetAddressType.
|
||||
|
||||
To support future extensions, the InetAddressType textual
|
||||
convention SHOULD NOT be sub-typed in object type definitions.
|
||||
It MAY be sub-typed in compliance statements in order to
|
||||
require only a subset of these address types for a compliant
|
||||
implementation.
|
||||
|
||||
Implementations must ensure that InetAddressType objects
|
||||
and any dependent objects (e.g., InetAddress objects) are
|
||||
consistent. An inconsistentValue error must be generated
|
||||
if an attempt to change an InetAddressType object would,
|
||||
for example, lead to an undefined InetAddress value. In
|
||||
|
||||
|
||||
|
||||
particular, InetAddressType/InetAddress pairs must be
|
||||
changed together if the address type changes (e.g., from
|
||||
ipv6(2) to ipv4(1))."
|
||||
SYNTAX INTEGER {
|
||||
unknown(0),
|
||||
ipv4(1),
|
||||
ipv6(2),
|
||||
ipv4z(3),
|
||||
ipv6z(4),
|
||||
dns(16)
|
||||
}
|
||||
|
||||
InetAddress ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Denotes a generic Internet address.
|
||||
|
||||
An InetAddress value is always interpreted within the context
|
||||
of an InetAddressType value. Every usage of the InetAddress
|
||||
textual convention is required to specify the InetAddressType
|
||||
object that provides the context. It is suggested that the
|
||||
InetAddressType object be logically registered before the
|
||||
object(s) that use the InetAddress textual convention, if
|
||||
they appear in the same logical row.
|
||||
|
||||
The value of an InetAddress object must always be
|
||||
consistent with the value of the associated InetAddressType
|
||||
object. Attempts to set an InetAddress object to a value
|
||||
inconsistent with the associated InetAddressType
|
||||
must fail with an inconsistentValue error.
|
||||
|
||||
When this textual convention is used as the syntax of an
|
||||
index object, there may be issues with the limit of 128
|
||||
sub-identifiers specified in SMIv2, STD 58. In this case,
|
||||
the object definition MUST include a 'SIZE' clause to
|
||||
limit the number of potential instance sub-identifiers;
|
||||
otherwise the applicable constraints MUST be stated in
|
||||
the appropriate conceptual row DESCRIPTION clauses, or
|
||||
in the surrounding documentation if there is no single
|
||||
DESCRIPTION clause that is appropriate."
|
||||
SYNTAX OCTET STRING (SIZE (0..255))
|
||||
|
||||
InetAddressIPv4 ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "1d.1d.1d.1d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an IPv4 network address:
|
||||
|
||||
|
||||
|
||||
|
||||
Octets Contents Encoding
|
||||
1-4 IPv4 address network-byte order
|
||||
|
||||
The corresponding InetAddressType value is ipv4(1).
|
||||
|
||||
This textual convention SHOULD NOT be used directly in object
|
||||
definitions, as it restricts addresses to a specific format.
|
||||
However, if it is used, it MAY be used either on its own or in
|
||||
conjunction with InetAddressType, as a pair."
|
||||
SYNTAX OCTET STRING (SIZE (4))
|
||||
|
||||
InetAddressIPv6 ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an IPv6 network address:
|
||||
|
||||
Octets Contents Encoding
|
||||
1-16 IPv6 address network-byte order
|
||||
|
||||
The corresponding InetAddressType value is ipv6(2).
|
||||
|
||||
This textual convention SHOULD NOT be used directly in object
|
||||
definitions, as it restricts addresses to a specific format.
|
||||
However, if it is used, it MAY be used either on its own or in
|
||||
conjunction with InetAddressType, as a pair."
|
||||
SYNTAX OCTET STRING (SIZE (16))
|
||||
|
||||
InetAddressIPv4z ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "1d.1d.1d.1d%4d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a non-global IPv4 network address, together
|
||||
with its zone index:
|
||||
|
||||
Octets Contents Encoding
|
||||
1-4 IPv4 address network-byte order
|
||||
5-8 zone index network-byte order
|
||||
|
||||
The corresponding InetAddressType value is ipv4z(3).
|
||||
|
||||
The zone index (bytes 5-8) is used to disambiguate identical
|
||||
address values on nodes that have interfaces attached to
|
||||
different zones of the same scope. The zone index may contain
|
||||
the special value 0, which refers to the default zone for each
|
||||
scope.
|
||||
|
||||
This textual convention SHOULD NOT be used directly in object
|
||||
|
||||
|
||||
|
||||
definitions, as it restricts addresses to a specific format.
|
||||
However, if it is used, it MAY be used either on its own or in
|
||||
conjunction with InetAddressType, as a pair."
|
||||
SYNTAX OCTET STRING (SIZE (8))
|
||||
|
||||
InetAddressIPv6z ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x%4d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a non-global IPv6 network address, together
|
||||
with its zone index:
|
||||
|
||||
Octets Contents Encoding
|
||||
1-16 IPv6 address network-byte order
|
||||
17-20 zone index network-byte order
|
||||
|
||||
The corresponding InetAddressType value is ipv6z(4).
|
||||
|
||||
The zone index (bytes 17-20) is used to disambiguate
|
||||
identical address values on nodes that have interfaces
|
||||
attached to different zones of the same scope. The zone index
|
||||
may contain the special value 0, which refers to the default
|
||||
zone for each scope.
|
||||
|
||||
This textual convention SHOULD NOT be used directly in object
|
||||
definitions, as it restricts addresses to a specific format.
|
||||
However, if it is used, it MAY be used either on its own or in
|
||||
conjunction with InetAddressType, as a pair."
|
||||
SYNTAX OCTET STRING (SIZE (20))
|
||||
|
||||
InetAddressDNS ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "255a"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a DNS domain name. The name SHOULD be fully
|
||||
qualified whenever possible.
|
||||
|
||||
The corresponding InetAddressType is dns(16).
|
||||
|
||||
The DESCRIPTION clause of InetAddress objects that may have
|
||||
InetAddressDNS values MUST fully describe how (and when)
|
||||
these names are to be resolved to IP addresses.
|
||||
|
||||
The resolution of an InetAddressDNS value may require to
|
||||
query multiple DNS records (e.g., A for IPv4 and AAAA for
|
||||
IPv6). The order of the resolution process and which DNS
|
||||
record takes precedence depends on the configuration of the
|
||||
resolver.
|
||||
|
||||
|
||||
|
||||
This textual convention SHOULD NOT be used directly in object
|
||||
definitions, as it restricts addresses to a specific format.
|
||||
However, if it is used, it MAY be used either on its own or in
|
||||
conjunction with InetAddressType, as a pair."
|
||||
SYNTAX OCTET STRING (SIZE (1..255))
|
||||
|
||||
InetAddressPrefixLength ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Denotes the length of a generic Internet network address
|
||||
prefix. A value of n corresponds to an IP address mask
|
||||
that has n contiguous 1-bits from the most significant
|
||||
bit (MSB), with all other bits set to 0.
|
||||
|
||||
An InetAddressPrefixLength value is always interpreted within
|
||||
the context of an InetAddressType value. Every usage of the
|
||||
InetAddressPrefixLength textual convention is required to
|
||||
specify the InetAddressType object that provides the
|
||||
context. It is suggested that the InetAddressType object be
|
||||
logically registered before the object(s) that use the
|
||||
InetAddressPrefixLength textual convention, if they appear
|
||||
in the same logical row.
|
||||
|
||||
InetAddressPrefixLength values larger than
|
||||
the maximum length of an IP address for a specific
|
||||
InetAddressType are treated as the maximum significant
|
||||
value applicable for the InetAddressType. The maximum
|
||||
significant value is 32 for the InetAddressType
|
||||
'ipv4(1)' and 'ipv4z(3)' and 128 for the InetAddressType
|
||||
'ipv6(2)' and 'ipv6z(4)'. The maximum significant value
|
||||
for the InetAddressType 'dns(16)' is 0.
|
||||
|
||||
The value zero is object-specific and must be defined as
|
||||
part of the description of any object that uses this
|
||||
syntax. Examples of the usage of zero might include
|
||||
situations where the Internet network address prefix
|
||||
is unknown or does not apply.
|
||||
|
||||
The upper bound of the prefix length has been chosen to
|
||||
be consistent with the maximum size of an InetAddress."
|
||||
SYNTAX Unsigned32 (0..2040)
|
||||
|
||||
InetPortNumber ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a 16 bit port number of an Internet transport
|
||||
|
||||
|
||||
|
||||
layer protocol. Port numbers are assigned by IANA. A
|
||||
current list of all assignments is available from
|
||||
<http://www.iana.org/>.
|
||||
|
||||
The value zero is object-specific and must be defined as
|
||||
part of the description of any object that uses this
|
||||
syntax. Examples of the usage of zero might include
|
||||
situations where a port number is unknown, or when the
|
||||
value zero is used as a wildcard in a filter."
|
||||
REFERENCE "STD 6 (RFC 768), STD 7 (RFC 793) and RFC 2960"
|
||||
SYNTAX Unsigned32 (0..65535)
|
||||
|
||||
InetAutonomousSystemNumber ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an autonomous system number that identifies an
|
||||
Autonomous System (AS). An AS is a set of routers under a
|
||||
single technical administration, using an interior gateway
|
||||
protocol and common metrics to route packets within the AS,
|
||||
and using an exterior gateway protocol to route packets to
|
||||
other ASes'. IANA maintains the AS number space and has
|
||||
delegated large parts to the regional registries.
|
||||
|
||||
Autonomous system numbers are currently limited to 16 bits
|
||||
(0..65535). There is, however, work in progress to enlarge the
|
||||
autonomous system number space to 32 bits. Therefore, this
|
||||
textual convention uses an Unsigned32 value without a
|
||||
range restriction in order to support a larger autonomous
|
||||
system number space."
|
||||
REFERENCE "RFC 1771, RFC 1930"
|
||||
SYNTAX Unsigned32
|
||||
|
||||
InetScopeType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a scope type. This textual convention can be used
|
||||
in cases where a MIB has to represent different scope types
|
||||
and there is no context information, such as an InetAddress
|
||||
object, that implicitly defines the scope type.
|
||||
|
||||
Note that not all possible values have been assigned yet, but
|
||||
they may be assigned in future revisions of this specification.
|
||||
Applications should therefore be able to deal with values
|
||||
not yet assigned."
|
||||
REFERENCE "RFC 3513"
|
||||
SYNTAX INTEGER {
|
||||
-- reserved(0),
|
||||
|
||||
|
||||
|
||||
interfaceLocal(1),
|
||||
linkLocal(2),
|
||||
subnetLocal(3),
|
||||
adminLocal(4),
|
||||
siteLocal(5), -- site-local unicast addresses
|
||||
-- have been deprecated by RFC 3879
|
||||
-- unassigned(6),
|
||||
-- unassigned(7),
|
||||
organizationLocal(8),
|
||||
-- unassigned(9),
|
||||
-- unassigned(10),
|
||||
-- unassigned(11),
|
||||
-- unassigned(12),
|
||||
-- unassigned(13),
|
||||
global(14)
|
||||
-- reserved(15)
|
||||
}
|
||||
|
||||
InetZoneIndex ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A zone index identifies an instance of a zone of a
|
||||
specific scope.
|
||||
|
||||
The zone index MUST disambiguate identical address
|
||||
values. For link-local addresses, the zone index will
|
||||
typically be the interface index (ifIndex as defined in the
|
||||
IF-MIB) of the interface on which the address is configured.
|
||||
|
||||
The zone index may contain the special value 0, which refers
|
||||
to the default zone. The default zone may be used in cases
|
||||
where the valid zone index is not known (e.g., when a
|
||||
management application has to write a link-local IPv6
|
||||
address without knowing the interface index value). The
|
||||
default zone SHOULD NOT be used as an easy way out in
|
||||
cases where the zone index for a non-global IPv6 address
|
||||
is known."
|
||||
REFERENCE "RFC4007"
|
||||
SYNTAX Unsigned32
|
||||
|
||||
InetVersion ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A value representing a version of the IP protocol.
|
||||
|
||||
unknown(0) An unknown or unspecified version of the IP
|
||||
protocol.
|
||||
|
||||
|
||||
|
||||
ipv4(1) The IPv4 protocol as defined in RFC 791 (STD 5).
|
||||
|
||||
ipv6(2) The IPv6 protocol as defined in RFC 2460.
|
||||
|
||||
Note that this textual convention SHOULD NOT be used to
|
||||
distinguish different address types associated with IP
|
||||
protocols. The InetAddressType has been designed for this
|
||||
purpose."
|
||||
REFERENCE "RFC 791, RFC 2460"
|
||||
SYNTAX INTEGER {
|
||||
unknown(0),
|
||||
ipv4(1),
|
||||
ipv6(2)
|
||||
}
|
||||
END
|
5254
contrib/apps/LwipMibCompiler/Mibs/IP-MIB
Normal file
5254
contrib/apps/LwipMibCompiler/Mibs/IP-MIB
Normal file
File diff suppressed because it is too large
Load Diff
75
contrib/apps/LwipMibCompiler/Mibs/RFC-1212
Normal file
75
contrib/apps/LwipMibCompiler/Mibs/RFC-1212
Normal file
@ -0,0 +1,75 @@
|
||||
RFC-1212 DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
ObjectName
|
||||
FROM RFC1155-SMI;
|
||||
-- DisplayString
|
||||
-- FROM RFC1158-MIB;
|
||||
|
||||
OBJECT-TYPE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
-- must conform to
|
||||
-- RFC1155's ObjectSyntax
|
||||
"SYNTAX" type(ObjectSyntax)
|
||||
"ACCESS" Access
|
||||
"STATUS" Status
|
||||
DescrPart
|
||||
ReferPart
|
||||
IndexPart
|
||||
DefValPart
|
||||
VALUE NOTATION ::= value (VALUE ObjectName)
|
||||
|
||||
Access ::= "read-only"
|
||||
| "read-write"
|
||||
| "write-only"
|
||||
| "not-accessible"
|
||||
Status ::= "mandatory"
|
||||
| "optional"
|
||||
| "obsolete"
|
||||
| "deprecated"
|
||||
|
||||
DescrPart ::=
|
||||
"DESCRIPTION" value (description DisplayString)
|
||||
| empty
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" value (reference DisplayString)
|
||||
| empty
|
||||
|
||||
IndexPart ::=
|
||||
"INDEX" "{" IndexTypes "}"
|
||||
| empty
|
||||
IndexTypes ::=
|
||||
IndexType | IndexTypes "," IndexType
|
||||
IndexType ::=
|
||||
-- if indexobject, use the SYNTAX
|
||||
-- value of the correspondent
|
||||
-- OBJECT-TYPE invocation
|
||||
value (indexobject ObjectName)
|
||||
-- otherwise use named SMI type
|
||||
-- must conform to IndexSyntax below
|
||||
| type (indextype)
|
||||
|
||||
DefValPart ::=
|
||||
"DEFVAL" "{" value (defvalue ObjectSyntax) "}"
|
||||
| empty
|
||||
|
||||
END
|
||||
|
||||
IndexSyntax ::=
|
||||
CHOICE {
|
||||
number
|
||||
INTEGER (0..MAX),
|
||||
string
|
||||
OCTET STRING,
|
||||
object
|
||||
OBJECT IDENTIFIER,
|
||||
address
|
||||
NetworkAddress,
|
||||
ipAddress
|
||||
IpAddress
|
||||
}
|
||||
|
||||
END
|
||||
|
34
contrib/apps/LwipMibCompiler/Mibs/RFC-1215
Normal file
34
contrib/apps/LwipMibCompiler/Mibs/RFC-1215
Normal file
@ -0,0 +1,34 @@
|
||||
RFC-1215 DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
ObjectName
|
||||
FROM RFC1155-SMI;
|
||||
|
||||
TRAP-TYPE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::= "ENTERPRISE" value
|
||||
(enterprise OBJECT IDENTIFIER)
|
||||
VarPart
|
||||
DescrPart
|
||||
ReferPart
|
||||
VALUE NOTATION ::= value (VALUE INTEGER)
|
||||
|
||||
VarPart ::=
|
||||
"VARIABLES" "{" VarTypes "}"
|
||||
| empty
|
||||
VarTypes ::=
|
||||
VarType | VarTypes "," VarType
|
||||
VarType ::=
|
||||
value (vartype ObjectName)
|
||||
|
||||
DescrPart ::=
|
||||
"DESCRIPTION" value (description DisplayString)
|
||||
| empty
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" value (reference DisplayString)
|
||||
| empty
|
||||
|
||||
END
|
||||
|
||||
END
|
132
contrib/apps/LwipMibCompiler/Mibs/RFC1065-SMI
Normal file
132
contrib/apps/LwipMibCompiler/Mibs/RFC1065-SMI
Normal file
@ -0,0 +1,132 @@
|
||||
RFC1065-SMI DEFINITIONS ::= BEGIN
|
||||
|
||||
EXPORTS -- EVERYTHING
|
||||
internet, directory, mgmt,
|
||||
experimental, private, enterprises,
|
||||
OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax,
|
||||
ApplicationSyntax, NetworkAddress, IpAddress,
|
||||
Counter, Gauge, TimeTicks, Opaque;
|
||||
|
||||
-- the path to the root
|
||||
|
||||
internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
|
||||
|
||||
directory OBJECT IDENTIFIER ::= { internet 1 }
|
||||
|
||||
mgmt OBJECT IDENTIFIER ::= { internet 2 }
|
||||
|
||||
experimental OBJECT IDENTIFIER ::= { internet 3 }
|
||||
|
||||
private OBJECT IDENTIFIER ::= { internet 4 }
|
||||
enterprises OBJECT IDENTIFIER ::= { private 1 }
|
||||
|
||||
|
||||
-- definition of object types
|
||||
|
||||
OBJECT-TYPE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax)
|
||||
"ACCESS" Access
|
||||
"STATUS" Status
|
||||
VALUE NOTATION ::= value (VALUE ObjectName)
|
||||
|
||||
Access ::= "read-only"
|
||||
| "read-write"
|
||||
| "write-only"
|
||||
| "not-accessible"
|
||||
Status ::= "mandatory"
|
||||
| "optional"
|
||||
| "obsolete"
|
||||
END
|
||||
|
||||
-- names of objects in the MIB
|
||||
|
||||
ObjectName ::=
|
||||
OBJECT IDENTIFIER
|
||||
|
||||
|
||||
|
||||
-- syntax of objects in the MIB
|
||||
|
||||
ObjectSyntax ::=
|
||||
CHOICE {
|
||||
simple
|
||||
SimpleSyntax,
|
||||
|
||||
-- note that simple SEQUENCEs are not directly
|
||||
-- mentioned here to keep things simple (i.e.,
|
||||
-- prevent mis-use). However, application-wide
|
||||
-- types which are IMPLICITly encoded simple
|
||||
-- SEQUENCEs may appear in the following CHOICE
|
||||
|
||||
application-wide
|
||||
ApplicationSyntax
|
||||
}
|
||||
|
||||
SimpleSyntax ::=
|
||||
CHOICE {
|
||||
number
|
||||
INTEGER,
|
||||
|
||||
string
|
||||
OCTET STRING,
|
||||
|
||||
object
|
||||
OBJECT IDENTIFIER,
|
||||
|
||||
empty
|
||||
NULL
|
||||
}
|
||||
|
||||
ApplicationSyntax ::=
|
||||
CHOICE {
|
||||
address
|
||||
NetworkAddress,
|
||||
|
||||
counter
|
||||
Counter,
|
||||
|
||||
gauge
|
||||
Gauge,
|
||||
|
||||
ticks
|
||||
TimeTicks,
|
||||
|
||||
arbitrary
|
||||
Opaque
|
||||
|
||||
|
||||
-- other application-wide types, as they are
|
||||
-- defined, will be added here
|
||||
}
|
||||
|
||||
|
||||
-- application-wide types
|
||||
|
||||
NetworkAddress ::=
|
||||
CHOICE {
|
||||
internet
|
||||
IpAddress
|
||||
}
|
||||
|
||||
IpAddress ::=
|
||||
[APPLICATION 0] -- in network-byte order
|
||||
IMPLICIT OCTET STRING (SIZE (4))
|
||||
|
||||
Counter ::=
|
||||
[APPLICATION 1]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
Gauge ::=
|
||||
[APPLICATION 2]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
TimeTicks ::=
|
||||
[APPLICATION 3]
|
||||
IMPLICIT INTEGER
|
||||
|
||||
Opaque ::=
|
||||
[APPLICATION 4] -- arbitrary ASN.1 value,
|
||||
IMPLICIT OCTET STRING -- "double-wrapped"
|
||||
|
||||
END
|
129
contrib/apps/LwipMibCompiler/Mibs/RFC1155-SMI
Normal file
129
contrib/apps/LwipMibCompiler/Mibs/RFC1155-SMI
Normal file
@ -0,0 +1,129 @@
|
||||
RFC1155-SMI DEFINITIONS ::= BEGIN
|
||||
|
||||
EXPORTS -- EVERYTHING
|
||||
internet, directory, mgmt,
|
||||
experimental, private, enterprises,
|
||||
OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax,
|
||||
ApplicationSyntax, NetworkAddress, IpAddress,
|
||||
Counter, Gauge, TimeTicks, Opaque;
|
||||
|
||||
-- the path to the root
|
||||
|
||||
internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
|
||||
|
||||
directory OBJECT IDENTIFIER ::= { internet 1 }
|
||||
|
||||
mgmt OBJECT IDENTIFIER ::= { internet 2 }
|
||||
|
||||
experimental OBJECT IDENTIFIER ::= { internet 3 }
|
||||
|
||||
private OBJECT IDENTIFIER ::= { internet 4 }
|
||||
enterprises OBJECT IDENTIFIER ::= { private 1 }
|
||||
|
||||
|
||||
-- definition of object types
|
||||
|
||||
OBJECT-TYPE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax)
|
||||
"ACCESS" Access
|
||||
"STATUS" Status
|
||||
VALUE NOTATION ::= value (VALUE ObjectName)
|
||||
|
||||
Access ::= "read-only"
|
||||
| "read-write"
|
||||
| "write-only"
|
||||
| "not-accessible"
|
||||
Status ::= "mandatory"
|
||||
| "optional"
|
||||
| "obsolete"
|
||||
END
|
||||
|
||||
-- names of objects in the MIB
|
||||
|
||||
ObjectName ::=
|
||||
OBJECT IDENTIFIER
|
||||
|
||||
-- syntax of objects in the MIB
|
||||
|
||||
ObjectSyntax ::=
|
||||
CHOICE {
|
||||
simple
|
||||
SimpleSyntax,
|
||||
|
||||
-- note that simple SEQUENCEs are not directly
|
||||
-- mentioned here to keep things simple (i.e.,
|
||||
-- prevent mis-use). However, application-wide
|
||||
-- types which are IMPLICITly encoded simple
|
||||
-- SEQUENCEs may appear in the following CHOICE
|
||||
|
||||
application-wide
|
||||
ApplicationSyntax
|
||||
}
|
||||
|
||||
SimpleSyntax ::=
|
||||
CHOICE {
|
||||
number
|
||||
INTEGER,
|
||||
|
||||
string
|
||||
OCTET STRING,
|
||||
|
||||
object
|
||||
OBJECT IDENTIFIER,
|
||||
|
||||
empty
|
||||
NULL
|
||||
}
|
||||
|
||||
ApplicationSyntax ::=
|
||||
CHOICE {
|
||||
address
|
||||
NetworkAddress,
|
||||
|
||||
counter
|
||||
Counter,
|
||||
|
||||
gauge
|
||||
Gauge,
|
||||
|
||||
ticks
|
||||
TimeTicks,
|
||||
|
||||
arbitrary
|
||||
Opaque
|
||||
|
||||
-- other application-wide types, as they are
|
||||
-- defined, will be added here
|
||||
}
|
||||
|
||||
|
||||
-- application-wide types
|
||||
|
||||
NetworkAddress ::=
|
||||
CHOICE {
|
||||
internet
|
||||
IpAddress
|
||||
}
|
||||
|
||||
IpAddress ::=
|
||||
[APPLICATION 0] -- in network-byte order
|
||||
IMPLICIT OCTET STRING (SIZE (4))
|
||||
|
||||
Counter ::=
|
||||
[APPLICATION 1]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
Gauge ::=
|
||||
[APPLICATION 2]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
TimeTicks ::=
|
||||
[APPLICATION 3]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
Opaque ::=
|
||||
[APPLICATION 4] -- arbitrary ASN.1 value,
|
||||
IMPLICIT OCTET STRING -- "double-wrapped"
|
||||
|
||||
END
|
1493
contrib/apps/LwipMibCompiler/Mibs/RFC1158-MIB
Normal file
1493
contrib/apps/LwipMibCompiler/Mibs/RFC1158-MIB
Normal file
File diff suppressed because it is too large
Load Diff
2621
contrib/apps/LwipMibCompiler/Mibs/RFC1213-MIB
Normal file
2621
contrib/apps/LwipMibCompiler/Mibs/RFC1213-MIB
Normal file
File diff suppressed because it is too large
Load Diff
318
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-CONF
Normal file
318
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-CONF
Normal file
@ -0,0 +1,318 @@
|
||||
SNMPv2-CONF DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS ObjectName, NotificationName, ObjectSyntax
|
||||
FROM SNMPv2-SMI;
|
||||
|
||||
-- definitions for conformance groups
|
||||
|
||||
OBJECT-GROUP MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
ObjectsPart
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE OBJECT IDENTIFIER)
|
||||
|
||||
ObjectsPart ::=
|
||||
"OBJECTS" "{" Objects "}"
|
||||
Objects ::=
|
||||
Object
|
||||
| Objects "," Object
|
||||
Object ::=
|
||||
value(ObjectName)
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
-- a character string as defined in [2]
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
-- more definitions for conformance groups
|
||||
|
||||
NOTIFICATION-GROUP MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
NotificationsPart
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE OBJECT IDENTIFIER)
|
||||
|
||||
NotificationsPart ::=
|
||||
"NOTIFICATIONS" "{" Notifications "}"
|
||||
Notifications ::=
|
||||
Notification
|
||||
| Notifications "," Notification
|
||||
Notification ::=
|
||||
value(NotificationName)
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
-- a character string as defined in [2]
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
-- definitions for compliance statements
|
||||
|
||||
MODULE-COMPLIANCE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
ModulePart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE OBJECT IDENTIFIER)
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
ModulePart ::=
|
||||
Modules
|
||||
Modules ::=
|
||||
Module
|
||||
| Modules Module
|
||||
Module ::=
|
||||
-- name of module --
|
||||
"MODULE" ModuleName
|
||||
MandatoryPart
|
||||
CompliancePart
|
||||
|
||||
ModuleName ::=
|
||||
-- identifier must start with uppercase letter
|
||||
identifier ModuleIdentifier
|
||||
-- must not be empty unless contained
|
||||
-- in MIB Module
|
||||
| empty
|
||||
ModuleIdentifier ::=
|
||||
value(OBJECT IDENTIFIER)
|
||||
| empty
|
||||
|
||||
MandatoryPart ::=
|
||||
"MANDATORY-GROUPS" "{" Groups "}"
|
||||
| empty
|
||||
|
||||
Groups ::=
|
||||
Group
|
||||
| Groups "," Group
|
||||
Group ::=
|
||||
value(OBJECT IDENTIFIER)
|
||||
|
||||
CompliancePart ::=
|
||||
Compliances
|
||||
| empty
|
||||
|
||||
Compliances ::=
|
||||
Compliance
|
||||
| Compliances Compliance
|
||||
Compliance ::=
|
||||
ComplianceGroup
|
||||
| Object
|
||||
|
||||
ComplianceGroup ::=
|
||||
"GROUP" value(OBJECT IDENTIFIER)
|
||||
"DESCRIPTION" Text
|
||||
|
||||
Object ::=
|
||||
"OBJECT" value(ObjectName)
|
||||
SyntaxPart
|
||||
WriteSyntaxPart
|
||||
AccessPart
|
||||
"DESCRIPTION" Text
|
||||
|
||||
-- must be a refinement for object's SYNTAX clause
|
||||
SyntaxPart ::= "SYNTAX" Syntax
|
||||
| empty
|
||||
|
||||
-- must be a refinement for object's SYNTAX clause
|
||||
WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax
|
||||
| empty
|
||||
|
||||
Syntax ::= -- Must be one of the following:
|
||||
-- a base type (or its refinement),
|
||||
-- a textual convention (or its refinement), or
|
||||
-- a BITS pseudo-type
|
||||
type
|
||||
| "BITS" "{" NamedBits "}"
|
||||
|
||||
NamedBits ::= NamedBit
|
||||
| NamedBits "," NamedBit
|
||||
|
||||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
||||
|
||||
AccessPart ::=
|
||||
"MIN-ACCESS" Access
|
||||
| empty
|
||||
Access ::=
|
||||
"not-accessible"
|
||||
| "accessible-for-notify"
|
||||
| "read-only"
|
||||
| "read-write"
|
||||
| "read-create"
|
||||
|
||||
-- a character string as defined in [2]
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
-- definitions for capabilities statements
|
||||
|
||||
AGENT-CAPABILITIES MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
"PRODUCT-RELEASE" Text
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
ModulePart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE OBJECT IDENTIFIER)
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
ModulePart ::=
|
||||
Modules
|
||||
| empty
|
||||
Modules ::=
|
||||
Module
|
||||
| Modules Module
|
||||
Module ::=
|
||||
-- name of module --
|
||||
"SUPPORTS" ModuleName
|
||||
"INCLUDES" "{" Groups "}"
|
||||
VariationPart
|
||||
|
||||
ModuleName ::=
|
||||
-- identifier must start with uppercase letter
|
||||
identifier ModuleIdentifier
|
||||
ModuleIdentifier ::=
|
||||
value(OBJECT IDENTIFIER)
|
||||
| empty
|
||||
|
||||
Groups ::=
|
||||
Group
|
||||
| Groups "," Group
|
||||
Group ::=
|
||||
value(OBJECT IDENTIFIER)
|
||||
|
||||
VariationPart ::=
|
||||
Variations
|
||||
| empty
|
||||
Variations ::=
|
||||
Variation
|
||||
| Variations Variation
|
||||
|
||||
Variation ::=
|
||||
ObjectVariation
|
||||
| NotificationVariation
|
||||
|
||||
NotificationVariation ::=
|
||||
"VARIATION" value(NotificationName)
|
||||
AccessPart
|
||||
"DESCRIPTION" Text
|
||||
|
||||
ObjectVariation ::=
|
||||
"VARIATION" value(ObjectName)
|
||||
SyntaxPart
|
||||
WriteSyntaxPart
|
||||
AccessPart
|
||||
CreationPart
|
||||
DefValPart
|
||||
"DESCRIPTION" Text
|
||||
|
||||
-- must be a refinement for object's SYNTAX clause
|
||||
SyntaxPart ::= "SYNTAX" Syntax
|
||||
| empty
|
||||
|
||||
WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax
|
||||
| empty
|
||||
|
||||
Syntax ::= -- Must be one of the following:
|
||||
-- a base type (or its refinement),
|
||||
-- a textual convention (or its refinement), or
|
||||
-- a BITS pseudo-type
|
||||
type
|
||||
| "BITS" "{" NamedBits "}"
|
||||
|
||||
NamedBits ::= NamedBit
|
||||
| NamedBits "," NamedBit
|
||||
|
||||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
||||
|
||||
AccessPart ::=
|
||||
"ACCESS" Access
|
||||
| empty
|
||||
|
||||
Access ::=
|
||||
"not-implemented"
|
||||
-- only "not-implemented" for notifications
|
||||
| "accessible-for-notify"
|
||||
| "read-only"
|
||||
| "read-write"
|
||||
| "read-create"
|
||||
-- following is for backward-compatibility only
|
||||
| "write-only"
|
||||
|
||||
CreationPart ::=
|
||||
"CREATION-REQUIRES" "{" Cells "}"
|
||||
| empty
|
||||
Cells ::=
|
||||
Cell
|
||||
| Cells "," Cell
|
||||
Cell ::=
|
||||
value(ObjectName)
|
||||
|
||||
DefValPart ::= "DEFVAL" "{" Defvalue "}"
|
||||
| empty
|
||||
|
||||
Defvalue ::= -- must be valid for the object's syntax
|
||||
-- in this macro's SYNTAX clause, if present,
|
||||
-- or if not, in object's OBJECT-TYPE macro
|
||||
value(ObjectSyntax)
|
||||
| "{" BitsValue "}"
|
||||
|
||||
BitsValue ::= BitNames
|
||||
| empty
|
||||
|
||||
BitNames ::= BitName
|
||||
| BitNames "," BitName
|
||||
|
||||
BitName ::= identifier
|
||||
|
||||
-- a character string as defined in [2]
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
END
|
903
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-MIB
Normal file
903
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-MIB
Normal file
@ -0,0 +1,903 @@
|
||||
SNMPv2-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
|
||||
TimeTicks, Counter32, snmpModules, mib-2
|
||||
FROM SNMPv2-SMI
|
||||
DisplayString, TestAndIncr, TimeStamp
|
||||
|
||||
|
||||
|
||||
FROM SNMPv2-TC
|
||||
MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
|
||||
FROM SNMPv2-CONF;
|
||||
|
||||
snmpMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200210160000Z"
|
||||
ORGANIZATION "IETF SNMPv3 Working Group"
|
||||
CONTACT-INFO
|
||||
"WG-EMail: snmpv3@lists.tislabs.com
|
||||
Subscribe: snmpv3-request@lists.tislabs.com
|
||||
|
||||
Co-Chair: Russ Mundy
|
||||
Network Associates Laboratories
|
||||
postal: 15204 Omega Drive, Suite 300
|
||||
Rockville, MD 20850-4601
|
||||
USA
|
||||
EMail: mundy@tislabs.com
|
||||
phone: +1 301 947-7107
|
||||
|
||||
Co-Chair: David Harrington
|
||||
Enterasys Networks
|
||||
postal: 35 Industrial Way
|
||||
P. O. Box 5005
|
||||
Rochester, NH 03866-5005
|
||||
USA
|
||||
EMail: dbh@enterasys.com
|
||||
phone: +1 603 337-2614
|
||||
|
||||
Editor: Randy Presuhn
|
||||
BMC Software, Inc.
|
||||
postal: 2141 North First Street
|
||||
San Jose, CA 95131
|
||||
USA
|
||||
EMail: randy_presuhn@bmc.com
|
||||
phone: +1 408 546-1006"
|
||||
DESCRIPTION
|
||||
"The MIB module for SNMP entities.
|
||||
|
||||
Copyright (C) The Internet Society (2002). This
|
||||
version of this MIB module is part of RFC 3418;
|
||||
see the RFC itself for full legal notices.
|
||||
"
|
||||
REVISION "200210160000Z"
|
||||
DESCRIPTION
|
||||
"This revision of this MIB module was published as
|
||||
RFC 3418."
|
||||
REVISION "199511090000Z"
|
||||
DESCRIPTION
|
||||
|
||||
|
||||
|
||||
"This revision of this MIB module was published as
|
||||
RFC 1907."
|
||||
REVISION "199304010000Z"
|
||||
DESCRIPTION
|
||||
"The initial revision of this MIB module was published
|
||||
as RFC 1450."
|
||||
::= { snmpModules 1 }
|
||||
|
||||
snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 }
|
||||
|
||||
-- ::= { snmpMIBObjects 1 } this OID is obsolete
|
||||
-- ::= { snmpMIBObjects 2 } this OID is obsolete
|
||||
-- ::= { snmpMIBObjects 3 } this OID is obsolete
|
||||
|
||||
-- the System group
|
||||
--
|
||||
-- a collection of objects common to all managed systems.
|
||||
|
||||
system OBJECT IDENTIFIER ::= { mib-2 1 }
|
||||
|
||||
sysDescr OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A textual description of the entity. This value should
|
||||
include the full name and version identification of
|
||||
the system's hardware type, software operating-system,
|
||||
and networking software."
|
||||
::= { system 1 }
|
||||
|
||||
sysObjectID OBJECT-TYPE
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The vendor's authoritative identification of the
|
||||
network management subsystem contained in the entity.
|
||||
This value is allocated within the SMI enterprises
|
||||
subtree (1.3.6.1.4.1) and provides an easy and
|
||||
unambiguous means for determining `what kind of box' is
|
||||
being managed. For example, if vendor `Flintstones,
|
||||
Inc.' was assigned the subtree 1.3.6.1.4.1.424242,
|
||||
it could assign the identifier 1.3.6.1.4.1.424242.1.1
|
||||
to its `Fred Router'."
|
||||
::= { system 2 }
|
||||
|
||||
sysUpTime OBJECT-TYPE
|
||||
|
||||
|
||||
|
||||
SYNTAX TimeTicks
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The time (in hundredths of a second) since the
|
||||
network management portion of the system was last
|
||||
re-initialized."
|
||||
::= { system 3 }
|
||||
|
||||
sysContact OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-write
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The textual identification of the contact person for
|
||||
this managed node, together with information on how
|
||||
to contact this person. If no contact information is
|
||||
known, the value is the zero-length string."
|
||||
::= { system 4 }
|
||||
|
||||
sysName OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-write
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An administratively-assigned name for this managed
|
||||
node. By convention, this is the node's fully-qualified
|
||||
domain name. If the name is unknown, the value is
|
||||
the zero-length string."
|
||||
::= { system 5 }
|
||||
|
||||
sysLocation OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-write
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The physical location of this node (e.g., 'telephone
|
||||
closet, 3rd floor'). If the location is unknown, the
|
||||
value is the zero-length string."
|
||||
::= { system 6 }
|
||||
|
||||
sysServices OBJECT-TYPE
|
||||
SYNTAX INTEGER (0..127)
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A value which indicates the set of services that this
|
||||
entity may potentially offer. The value is a sum.
|
||||
|
||||
|
||||
|
||||
This sum initially takes the value zero. Then, for
|
||||
each layer, L, in the range 1 through 7, that this node
|
||||
performs transactions for, 2 raised to (L - 1) is added
|
||||
to the sum. For example, a node which performs only
|
||||
routing functions would have a value of 4 (2^(3-1)).
|
||||
In contrast, a node which is a host offering application
|
||||
services would have a value of 72 (2^(4-1) + 2^(7-1)).
|
||||
Note that in the context of the Internet suite of
|
||||
protocols, values should be calculated accordingly:
|
||||
|
||||
layer functionality
|
||||
1 physical (e.g., repeaters)
|
||||
2 datalink/subnetwork (e.g., bridges)
|
||||
3 internet (e.g., supports the IP)
|
||||
4 end-to-end (e.g., supports the TCP)
|
||||
7 applications (e.g., supports the SMTP)
|
||||
|
||||
For systems including OSI protocols, layers 5 and 6
|
||||
may also be counted."
|
||||
::= { system 7 }
|
||||
|
||||
-- object resource information
|
||||
--
|
||||
-- a collection of objects which describe the SNMP entity's
|
||||
-- (statically and dynamically configurable) support of
|
||||
-- various MIB modules.
|
||||
|
||||
sysORLastChange OBJECT-TYPE
|
||||
SYNTAX TimeStamp
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The value of sysUpTime at the time of the most recent
|
||||
change in state or value of any instance of sysORID."
|
||||
::= { system 8 }
|
||||
|
||||
sysORTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF SysOREntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The (conceptual) table listing the capabilities of
|
||||
the local SNMP application acting as a command
|
||||
responder with respect to various MIB modules.
|
||||
SNMP entities having dynamically-configurable support
|
||||
of MIB modules will have a dynamically-varying number
|
||||
of conceptual rows."
|
||||
::= { system 9 }
|
||||
|
||||
|
||||
|
||||
sysOREntry OBJECT-TYPE
|
||||
SYNTAX SysOREntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An entry (conceptual row) in the sysORTable."
|
||||
INDEX { sysORIndex }
|
||||
::= { sysORTable 1 }
|
||||
|
||||
SysOREntry ::= SEQUENCE {
|
||||
sysORIndex INTEGER,
|
||||
sysORID OBJECT IDENTIFIER,
|
||||
sysORDescr DisplayString,
|
||||
sysORUpTime TimeStamp
|
||||
}
|
||||
|
||||
sysORIndex OBJECT-TYPE
|
||||
SYNTAX INTEGER (1..2147483647)
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The auxiliary variable used for identifying instances
|
||||
of the columnar objects in the sysORTable."
|
||||
::= { sysOREntry 1 }
|
||||
|
||||
sysORID OBJECT-TYPE
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An authoritative identification of a capabilities
|
||||
statement with respect to various MIB modules supported
|
||||
by the local SNMP application acting as a command
|
||||
responder."
|
||||
::= { sysOREntry 2 }
|
||||
|
||||
sysORDescr OBJECT-TYPE
|
||||
SYNTAX DisplayString
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A textual description of the capabilities identified
|
||||
by the corresponding instance of sysORID."
|
||||
::= { sysOREntry 3 }
|
||||
|
||||
sysORUpTime OBJECT-TYPE
|
||||
SYNTAX TimeStamp
|
||||
MAX-ACCESS read-only
|
||||
|
||||
|
||||
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The value of sysUpTime at the time this conceptual
|
||||
row was last instantiated."
|
||||
::= { sysOREntry 4 }
|
||||
|
||||
|
||||
-- the SNMP group
|
||||
--
|
||||
-- a collection of objects providing basic instrumentation and
|
||||
-- control of an SNMP entity.
|
||||
|
||||
snmp OBJECT IDENTIFIER ::= { mib-2 11 }
|
||||
|
||||
snmpInPkts OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of messages delivered to the SNMP
|
||||
entity from the transport service."
|
||||
::= { snmp 1 }
|
||||
|
||||
snmpInBadVersions OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of SNMP messages which were delivered
|
||||
to the SNMP entity and were for an unsupported SNMP
|
||||
version."
|
||||
::= { snmp 3 }
|
||||
|
||||
snmpInBadCommunityNames OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of community-based SNMP messages (for
|
||||
example, SNMPv1) delivered to the SNMP entity which
|
||||
used an SNMP community name not known to said entity.
|
||||
Also, implementations which authenticate community-based
|
||||
SNMP messages using check(s) in addition to matching
|
||||
the community name (for example, by also checking
|
||||
whether the message originated from a transport address
|
||||
allowed to use a specified community name) MAY include
|
||||
in this value the number of messages which failed the
|
||||
additional check(s). It is strongly RECOMMENDED that
|
||||
|
||||
|
||||
|
||||
the documentation for any security model which is used
|
||||
to authenticate community-based SNMP messages specify
|
||||
the precise conditions that contribute to this value."
|
||||
::= { snmp 4 }
|
||||
|
||||
snmpInBadCommunityUses OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of community-based SNMP messages (for
|
||||
example, SNMPv1) delivered to the SNMP entity which
|
||||
represented an SNMP operation that was not allowed for
|
||||
the SNMP community named in the message. The precise
|
||||
conditions under which this counter is incremented
|
||||
(if at all) depend on how the SNMP entity implements
|
||||
its access control mechanism and how its applications
|
||||
interact with that access control mechanism. It is
|
||||
strongly RECOMMENDED that the documentation for any
|
||||
access control mechanism which is used to control access
|
||||
to and visibility of MIB instrumentation specify the
|
||||
precise conditions that contribute to this value."
|
||||
::= { snmp 5 }
|
||||
|
||||
snmpInASNParseErrs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of ASN.1 or BER errors encountered by
|
||||
the SNMP entity when decoding received SNMP messages."
|
||||
::= { snmp 6 }
|
||||
|
||||
snmpEnableAuthenTraps OBJECT-TYPE
|
||||
SYNTAX INTEGER { enabled(1), disabled(2) }
|
||||
MAX-ACCESS read-write
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Indicates whether the SNMP entity is permitted to
|
||||
generate authenticationFailure traps. The value of this
|
||||
object overrides any configuration information; as such,
|
||||
it provides a means whereby all authenticationFailure
|
||||
traps may be disabled.
|
||||
|
||||
Note that it is strongly recommended that this object
|
||||
be stored in non-volatile memory so that it remains
|
||||
constant across re-initializations of the network
|
||||
management system."
|
||||
|
||||
|
||||
|
||||
::= { snmp 30 }
|
||||
|
||||
snmpSilentDrops OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of Confirmed Class PDUs (such as
|
||||
GetRequest-PDUs, GetNextRequest-PDUs,
|
||||
GetBulkRequest-PDUs, SetRequest-PDUs, and
|
||||
InformRequest-PDUs) delivered to the SNMP entity which
|
||||
were silently dropped because the size of a reply
|
||||
containing an alternate Response Class PDU (such as a
|
||||
Response-PDU) with an empty variable-bindings field
|
||||
was greater than either a local constraint or the
|
||||
maximum message size associated with the originator of
|
||||
the request."
|
||||
::= { snmp 31 }
|
||||
|
||||
snmpProxyDrops OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of Confirmed Class PDUs
|
||||
(such as GetRequest-PDUs, GetNextRequest-PDUs,
|
||||
GetBulkRequest-PDUs, SetRequest-PDUs, and
|
||||
InformRequest-PDUs) delivered to the SNMP entity which
|
||||
were silently dropped because the transmission of
|
||||
the (possibly translated) message to a proxy target
|
||||
failed in a manner (other than a time-out) such that
|
||||
no Response Class PDU (such as a Response-PDU) could
|
||||
be returned."
|
||||
::= { snmp 32 }
|
||||
|
||||
-- information for notifications
|
||||
--
|
||||
-- a collection of objects which allow the SNMP entity, when
|
||||
-- supporting a notification originator application,
|
||||
-- to be configured to generate SNMPv2-Trap-PDUs.
|
||||
|
||||
snmpTrap OBJECT IDENTIFIER ::= { snmpMIBObjects 4 }
|
||||
|
||||
snmpTrapOID OBJECT-TYPE
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
MAX-ACCESS accessible-for-notify
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
|
||||
|
||||
|
||||
"The authoritative identification of the notification
|
||||
currently being sent. This variable occurs as
|
||||
the second varbind in every SNMPv2-Trap-PDU and
|
||||
InformRequest-PDU."
|
||||
::= { snmpTrap 1 }
|
||||
|
||||
-- ::= { snmpTrap 2 } this OID is obsolete
|
||||
|
||||
snmpTrapEnterprise OBJECT-TYPE
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
MAX-ACCESS accessible-for-notify
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The authoritative identification of the enterprise
|
||||
associated with the trap currently being sent. When an
|
||||
SNMP proxy agent is mapping an RFC1157 Trap-PDU
|
||||
into a SNMPv2-Trap-PDU, this variable occurs as the
|
||||
last varbind."
|
||||
::= { snmpTrap 3 }
|
||||
|
||||
-- ::= { snmpTrap 4 } this OID is obsolete
|
||||
|
||||
|
||||
-- well-known traps
|
||||
|
||||
snmpTraps OBJECT IDENTIFIER ::= { snmpMIBObjects 5 }
|
||||
|
||||
coldStart NOTIFICATION-TYPE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A coldStart trap signifies that the SNMP entity,
|
||||
supporting a notification originator application, is
|
||||
reinitializing itself and that its configuration may
|
||||
have been altered."
|
||||
::= { snmpTraps 1 }
|
||||
|
||||
warmStart NOTIFICATION-TYPE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A warmStart trap signifies that the SNMP entity,
|
||||
supporting a notification originator application,
|
||||
is reinitializing itself such that its configuration
|
||||
is unaltered."
|
||||
::= { snmpTraps 2 }
|
||||
|
||||
-- Note the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 }
|
||||
-- and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 }
|
||||
-- are defined in RFC 2863 [RFC2863]
|
||||
|
||||
|
||||
|
||||
authenticationFailure NOTIFICATION-TYPE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An authenticationFailure trap signifies that the SNMP
|
||||
entity has received a protocol message that is not
|
||||
properly authenticated. While all implementations
|
||||
of SNMP entities MAY be capable of generating this
|
||||
trap, the snmpEnableAuthenTraps object indicates
|
||||
whether this trap will be generated."
|
||||
::= { snmpTraps 5 }
|
||||
|
||||
-- Note the egpNeighborLoss notification is defined
|
||||
-- as { snmpTraps 6 } in RFC 1213
|
||||
|
||||
-- the set group
|
||||
--
|
||||
-- a collection of objects which allow several cooperating
|
||||
-- command generator applications to coordinate their use of the
|
||||
-- set operation.
|
||||
|
||||
snmpSet OBJECT IDENTIFIER ::= { snmpMIBObjects 6 }
|
||||
|
||||
snmpSetSerialNo OBJECT-TYPE
|
||||
SYNTAX TestAndIncr
|
||||
MAX-ACCESS read-write
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An advisory lock used to allow several cooperating
|
||||
command generator applications to coordinate their
|
||||
use of the SNMP set operation.
|
||||
|
||||
This object is used for coarse-grain coordination.
|
||||
To achieve fine-grain coordination, one or more similar
|
||||
objects might be defined within each MIB group, as
|
||||
appropriate."
|
||||
::= { snmpSet 1 }
|
||||
|
||||
-- conformance information
|
||||
|
||||
snmpMIBConformance
|
||||
OBJECT IDENTIFIER ::= { snmpMIB 2 }
|
||||
|
||||
snmpMIBCompliances
|
||||
OBJECT IDENTIFIER ::= { snmpMIBConformance 1 }
|
||||
snmpMIBGroups OBJECT IDENTIFIER ::= { snmpMIBConformance 2 }
|
||||
|
||||
-- compliance statements
|
||||
|
||||
|
||||
|
||||
|
||||
-- ::= { snmpMIBCompliances 1 } this OID is obsolete
|
||||
snmpBasicCompliance MODULE-COMPLIANCE
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The compliance statement for SNMPv2 entities which
|
||||
implement the SNMPv2 MIB.
|
||||
|
||||
This compliance statement is replaced by
|
||||
snmpBasicComplianceRev2."
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
|
||||
snmpBasicNotificationsGroup }
|
||||
|
||||
GROUP snmpCommunityGroup
|
||||
DESCRIPTION
|
||||
"This group is mandatory for SNMPv2 entities which
|
||||
support community-based authentication."
|
||||
|
||||
::= { snmpMIBCompliances 2 }
|
||||
|
||||
snmpBasicComplianceRev2 MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for SNMP entities which
|
||||
implement this MIB module."
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup,
|
||||
snmpBasicNotificationsGroup }
|
||||
|
||||
GROUP snmpCommunityGroup
|
||||
DESCRIPTION
|
||||
"This group is mandatory for SNMP entities which
|
||||
support community-based authentication."
|
||||
|
||||
GROUP snmpWarmStartNotificationGroup
|
||||
DESCRIPTION
|
||||
"This group is mandatory for an SNMP entity which
|
||||
supports command responder applications, and is
|
||||
able to reinitialize itself such that its
|
||||
configuration is unaltered."
|
||||
|
||||
::= { snmpMIBCompliances 3 }
|
||||
|
||||
-- units of conformance
|
||||
|
||||
-- ::= { snmpMIBGroups 1 } this OID is obsolete
|
||||
-- ::= { snmpMIBGroups 2 } this OID is obsolete
|
||||
-- ::= { snmpMIBGroups 3 } this OID is obsolete
|
||||
|
||||
|
||||
|
||||
-- ::= { snmpMIBGroups 4 } this OID is obsolete
|
||||
|
||||
snmpGroup OBJECT-GROUP
|
||||
OBJECTS { snmpInPkts,
|
||||
snmpInBadVersions,
|
||||
snmpInASNParseErrs,
|
||||
snmpSilentDrops,
|
||||
snmpProxyDrops,
|
||||
snmpEnableAuthenTraps }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A collection of objects providing basic instrumentation
|
||||
and control of an SNMP entity."
|
||||
::= { snmpMIBGroups 8 }
|
||||
|
||||
snmpCommunityGroup OBJECT-GROUP
|
||||
OBJECTS { snmpInBadCommunityNames,
|
||||
snmpInBadCommunityUses }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A collection of objects providing basic instrumentation
|
||||
of a SNMP entity which supports community-based
|
||||
authentication."
|
||||
::= { snmpMIBGroups 9 }
|
||||
|
||||
snmpSetGroup OBJECT-GROUP
|
||||
OBJECTS { snmpSetSerialNo }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A collection of objects which allow several cooperating
|
||||
command generator applications to coordinate their
|
||||
use of the set operation."
|
||||
::= { snmpMIBGroups 5 }
|
||||
|
||||
systemGroup OBJECT-GROUP
|
||||
OBJECTS { sysDescr, sysObjectID, sysUpTime,
|
||||
sysContact, sysName, sysLocation,
|
||||
sysServices,
|
||||
sysORLastChange, sysORID,
|
||||
sysORUpTime, sysORDescr }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The system group defines objects which are common to all
|
||||
managed systems."
|
||||
::= { snmpMIBGroups 6 }
|
||||
|
||||
snmpBasicNotificationsGroup NOTIFICATION-GROUP
|
||||
NOTIFICATIONS { coldStart, authenticationFailure }
|
||||
|
||||
|
||||
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The basic notifications implemented by an SNMP entity
|
||||
supporting command responder applications."
|
||||
::= { snmpMIBGroups 7 }
|
||||
|
||||
snmpWarmStartNotificationGroup NOTIFICATION-GROUP
|
||||
NOTIFICATIONS { warmStart }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An additional notification for an SNMP entity supporting
|
||||
command responder applications, if it is able to reinitialize
|
||||
itself such that its configuration is unaltered."
|
||||
::= { snmpMIBGroups 11 }
|
||||
|
||||
snmpNotificationGroup OBJECT-GROUP
|
||||
OBJECTS { snmpTrapOID, snmpTrapEnterprise }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"These objects are required for entities
|
||||
which support notification originator applications."
|
||||
::= { snmpMIBGroups 12 }
|
||||
|
||||
-- definitions in RFC 1213 made obsolete by the inclusion of a
|
||||
-- subset of the snmp group in this MIB
|
||||
|
||||
snmpOutPkts OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Messages which were
|
||||
passed from the SNMP protocol entity to the
|
||||
transport service."
|
||||
::= { snmp 2 }
|
||||
|
||||
-- { snmp 7 } is not used
|
||||
|
||||
snmpInTooBigs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were
|
||||
delivered to the SNMP protocol entity and for
|
||||
which the value of the error-status field was
|
||||
`tooBig'."
|
||||
::= { snmp 8 }
|
||||
|
||||
|
||||
|
||||
snmpInNoSuchNames OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were
|
||||
delivered to the SNMP protocol entity and for
|
||||
which the value of the error-status field was
|
||||
`noSuchName'."
|
||||
::= { snmp 9 }
|
||||
|
||||
snmpInBadValues OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were
|
||||
delivered to the SNMP protocol entity and for
|
||||
which the value of the error-status field was
|
||||
`badValue'."
|
||||
::= { snmp 10 }
|
||||
|
||||
snmpInReadOnlys OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number valid SNMP PDUs which were delivered
|
||||
to the SNMP protocol entity and for which the value
|
||||
of the error-status field was `readOnly'. It should
|
||||
be noted that it is a protocol error to generate an
|
||||
SNMP PDU which contains the value `readOnly' in the
|
||||
error-status field, as such this object is provided
|
||||
as a means of detecting incorrect implementations of
|
||||
the SNMP."
|
||||
::= { snmp 11 }
|
||||
|
||||
snmpInGenErrs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were delivered
|
||||
to the SNMP protocol entity and for which the value
|
||||
of the error-status field was `genErr'."
|
||||
::= { snmp 12 }
|
||||
|
||||
snmpInTotalReqVars OBJECT-TYPE
|
||||
|
||||
|
||||
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of MIB objects which have been
|
||||
retrieved successfully by the SNMP protocol entity
|
||||
as the result of receiving valid SNMP Get-Request
|
||||
and Get-Next PDUs."
|
||||
::= { snmp 13 }
|
||||
|
||||
snmpInTotalSetVars OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of MIB objects which have been
|
||||
altered successfully by the SNMP protocol entity as
|
||||
the result of receiving valid SNMP Set-Request PDUs."
|
||||
::= { snmp 14 }
|
||||
|
||||
snmpInGetRequests OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Get-Request PDUs which
|
||||
have been accepted and processed by the SNMP
|
||||
protocol entity."
|
||||
::= { snmp 15 }
|
||||
|
||||
snmpInGetNexts OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Get-Next PDUs which have been
|
||||
accepted and processed by the SNMP protocol entity."
|
||||
::= { snmp 16 }
|
||||
|
||||
snmpInSetRequests OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Set-Request PDUs which
|
||||
have been accepted and processed by the SNMP protocol
|
||||
entity."
|
||||
::= { snmp 17 }
|
||||
|
||||
|
||||
|
||||
snmpInGetResponses OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Get-Response PDUs which
|
||||
have been accepted and processed by the SNMP protocol
|
||||
entity."
|
||||
::= { snmp 18 }
|
||||
|
||||
snmpInTraps OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Trap PDUs which have been
|
||||
accepted and processed by the SNMP protocol entity."
|
||||
::= { snmp 19 }
|
||||
|
||||
snmpOutTooBigs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were generated
|
||||
by the SNMP protocol entity and for which the value
|
||||
of the error-status field was `tooBig.'"
|
||||
::= { snmp 20 }
|
||||
|
||||
snmpOutNoSuchNames OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were generated
|
||||
by the SNMP protocol entity and for which the value
|
||||
of the error-status was `noSuchName'."
|
||||
::= { snmp 21 }
|
||||
|
||||
snmpOutBadValues OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were generated
|
||||
by the SNMP protocol entity and for which the value
|
||||
of the error-status field was `badValue'."
|
||||
::= { snmp 22 }
|
||||
|
||||
|
||||
|
||||
-- { snmp 23 } is not used
|
||||
|
||||
snmpOutGenErrs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP PDUs which were generated
|
||||
by the SNMP protocol entity and for which the value
|
||||
of the error-status field was `genErr'."
|
||||
::= { snmp 24 }
|
||||
|
||||
snmpOutGetRequests OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Get-Request PDUs which
|
||||
have been generated by the SNMP protocol entity."
|
||||
::= { snmp 25 }
|
||||
|
||||
snmpOutGetNexts OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Get-Next PDUs which have
|
||||
been generated by the SNMP protocol entity."
|
||||
::= { snmp 26 }
|
||||
|
||||
snmpOutSetRequests OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Set-Request PDUs which
|
||||
have been generated by the SNMP protocol entity."
|
||||
::= { snmp 27 }
|
||||
|
||||
snmpOutGetResponses OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Get-Response PDUs which
|
||||
have been generated by the SNMP protocol entity."
|
||||
::= { snmp 28 }
|
||||
|
||||
|
||||
|
||||
|
||||
snmpOutTraps OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"The total number of SNMP Trap PDUs which have
|
||||
been generated by the SNMP protocol entity."
|
||||
::= { snmp 29 }
|
||||
|
||||
snmpObsoleteGroup OBJECT-GROUP
|
||||
OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames,
|
||||
snmpInBadValues, snmpInReadOnlys, snmpInGenErrs,
|
||||
snmpInTotalReqVars, snmpInTotalSetVars,
|
||||
snmpInGetRequests, snmpInGetNexts, snmpInSetRequests,
|
||||
snmpInGetResponses, snmpInTraps, snmpOutTooBigs,
|
||||
snmpOutNoSuchNames, snmpOutBadValues,
|
||||
snmpOutGenErrs, snmpOutGetRequests, snmpOutGetNexts,
|
||||
snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps
|
||||
}
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"A collection of objects from RFC 1213 made obsolete
|
||||
by this MIB module."
|
||||
::= { snmpMIBGroups 10 }
|
||||
|
||||
END
|
352
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-SMI
Normal file
352
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-SMI
Normal file
@ -0,0 +1,352 @@
|
||||
SNMPv2-SMI DEFINITIONS ::= BEGIN
|
||||
|
||||
|
||||
-- the path to the root
|
||||
|
||||
org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
|
||||
dod OBJECT IDENTIFIER ::= { org 6 }
|
||||
internet OBJECT IDENTIFIER ::= { dod 1 }
|
||||
|
||||
directory OBJECT IDENTIFIER ::= { internet 1 }
|
||||
|
||||
mgmt OBJECT IDENTIFIER ::= { internet 2 }
|
||||
mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
|
||||
transmission OBJECT IDENTIFIER ::= { mib-2 10 }
|
||||
|
||||
experimental OBJECT IDENTIFIER ::= { internet 3 }
|
||||
|
||||
private OBJECT IDENTIFIER ::= { internet 4 }
|
||||
enterprises OBJECT IDENTIFIER ::= { private 1 }
|
||||
|
||||
security OBJECT IDENTIFIER ::= { internet 5 }
|
||||
|
||||
snmpV2 OBJECT IDENTIFIER ::= { internet 6 }
|
||||
|
||||
-- transport domains
|
||||
snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 }
|
||||
|
||||
-- transport proxies
|
||||
snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 }
|
||||
|
||||
-- module identities
|
||||
snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 }
|
||||
|
||||
-- Extended UTCTime, to allow dates with four-digit years
|
||||
-- (Note that this definition of ExtUTCTime is not to be IMPORTed
|
||||
-- by MIB modules.)
|
||||
ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
|
||||
-- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
|
||||
-- where: YY - last two digits of year (only years
|
||||
-- between 1900-1999)
|
||||
-- YYYY - last four digits of the year (any year)
|
||||
-- MM - month (01 through 12)
|
||||
-- DD - day of month (01 through 31)
|
||||
-- HH - hours (00 through 23)
|
||||
-- MM - minutes (00 through 59)
|
||||
-- Z - denotes GMT (the ASCII character Z)
|
||||
--
|
||||
-- For example, "9502192015Z" and "199502192015Z" represent
|
||||
-- 8:15pm GMT on 19 February 1995. Years after 1999 must use
|
||||
-- the four digit year format. Years 1900-1999 may use the
|
||||
-- two or four digit format.
|
||||
|
||||
-- definitions for information modules
|
||||
|
||||
MODULE-IDENTITY MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
"LAST-UPDATED" value(Update ExtUTCTime)
|
||||
"ORGANIZATION" Text
|
||||
"CONTACT-INFO" Text
|
||||
"DESCRIPTION" Text
|
||||
RevisionPart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE OBJECT IDENTIFIER)
|
||||
|
||||
RevisionPart ::=
|
||||
Revisions
|
||||
| empty
|
||||
Revisions ::=
|
||||
Revision
|
||||
| Revisions Revision
|
||||
Revision ::=
|
||||
"REVISION" value(Update ExtUTCTime)
|
||||
"DESCRIPTION" Text
|
||||
|
||||
-- a character string as defined in section 3.1.1
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
|
||||
OBJECT-IDENTITY MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE OBJECT IDENTIFIER)
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
-- a character string as defined in section 3.1.1
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
|
||||
-- names of objects
|
||||
-- (Note that these definitions of ObjectName and NotificationName
|
||||
-- are not to be IMPORTed by MIB modules.)
|
||||
|
||||
ObjectName ::=
|
||||
OBJECT IDENTIFIER
|
||||
|
||||
NotificationName ::=
|
||||
OBJECT IDENTIFIER
|
||||
|
||||
-- syntax of objects
|
||||
|
||||
-- the "base types" defined here are:
|
||||
-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
|
||||
-- 8 application-defined types: Integer32, IpAddress, Counter32,
|
||||
-- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
|
||||
|
||||
ObjectSyntax ::=
|
||||
CHOICE {
|
||||
simple
|
||||
SimpleSyntax,
|
||||
|
||||
-- note that SEQUENCEs for conceptual tables and
|
||||
-- rows are not mentioned here...
|
||||
|
||||
application-wide
|
||||
ApplicationSyntax
|
||||
}
|
||||
|
||||
-- built-in ASN.1 types
|
||||
|
||||
SimpleSyntax ::=
|
||||
CHOICE {
|
||||
-- INTEGERs with a more restrictive range
|
||||
-- may also be used
|
||||
integer-value -- includes Integer32
|
||||
INTEGER (-2147483648..2147483647),
|
||||
|
||||
-- OCTET STRINGs with a more restrictive size
|
||||
-- may also be used
|
||||
string-value
|
||||
OCTET STRING (SIZE (0..65535)),
|
||||
|
||||
objectID-value
|
||||
OBJECT IDENTIFIER
|
||||
}
|
||||
|
||||
-- indistinguishable from INTEGER, but never needs more than
|
||||
-- 32-bits for a two's complement representation
|
||||
Integer32 ::=
|
||||
INTEGER (-2147483648..2147483647)
|
||||
|
||||
|
||||
-- application-wide types
|
||||
|
||||
ApplicationSyntax ::=
|
||||
CHOICE {
|
||||
ipAddress-value
|
||||
IpAddress,
|
||||
|
||||
counter-value
|
||||
Counter32,
|
||||
|
||||
timeticks-value
|
||||
TimeTicks,
|
||||
|
||||
arbitrary-value
|
||||
Opaque,
|
||||
|
||||
big-counter-value
|
||||
Counter64,
|
||||
|
||||
unsigned-integer-value -- includes Gauge32
|
||||
Unsigned32
|
||||
}
|
||||
|
||||
-- in network-byte order
|
||||
-- (this is a tagged type for historical reasons)
|
||||
IpAddress ::=
|
||||
[APPLICATION 0]
|
||||
IMPLICIT OCTET STRING (SIZE (4))
|
||||
|
||||
-- this wraps
|
||||
Counter32 ::=
|
||||
[APPLICATION 1]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
-- this doesn't wrap
|
||||
Gauge32 ::=
|
||||
[APPLICATION 2]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
-- an unsigned 32-bit quantity
|
||||
-- indistinguishable from Gauge32
|
||||
Unsigned32 ::=
|
||||
[APPLICATION 2]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
-- hundredths of seconds since an epoch
|
||||
TimeTicks ::=
|
||||
[APPLICATION 3]
|
||||
IMPLICIT INTEGER (0..4294967295)
|
||||
|
||||
-- for backward-compatibility only
|
||||
Opaque ::=
|
||||
[APPLICATION 4]
|
||||
IMPLICIT OCTET STRING
|
||||
|
||||
-- for counters that wrap in less than one hour with only 32 bits
|
||||
Counter64 ::=
|
||||
[APPLICATION 6]
|
||||
IMPLICIT INTEGER (0..18446744073709551615)
|
||||
|
||||
|
||||
-- definition for objects
|
||||
|
||||
OBJECT-TYPE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
"SYNTAX" Syntax
|
||||
UnitsPart
|
||||
"MAX-ACCESS" Access
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
IndexPart
|
||||
DefValPart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE ObjectName)
|
||||
|
||||
Syntax ::= -- Must be one of the following:
|
||||
-- a base type (or its refinement),
|
||||
-- a textual convention (or its refinement), or
|
||||
-- a BITS pseudo-type
|
||||
type
|
||||
| "BITS" "{" NamedBits "}"
|
||||
|
||||
NamedBits ::= NamedBit
|
||||
| NamedBits "," NamedBit
|
||||
|
||||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
||||
|
||||
UnitsPart ::=
|
||||
"UNITS" Text
|
||||
| empty
|
||||
|
||||
Access ::=
|
||||
"not-accessible"
|
||||
| "accessible-for-notify"
|
||||
| "read-only"
|
||||
| "read-write"
|
||||
| "read-create"
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
IndexPart ::=
|
||||
"INDEX" "{" IndexTypes "}"
|
||||
| "AUGMENTS" "{" Entry "}"
|
||||
| empty
|
||||
IndexTypes ::=
|
||||
IndexType
|
||||
| IndexTypes "," IndexType
|
||||
IndexType ::=
|
||||
"IMPLIED" Index
|
||||
| Index
|
||||
Index ::=
|
||||
-- use the SYNTAX value of the
|
||||
-- correspondent OBJECT-TYPE invocation
|
||||
value(ObjectName)
|
||||
Entry ::=
|
||||
-- use the INDEX value of the
|
||||
-- correspondent OBJECT-TYPE invocation
|
||||
value(ObjectName)
|
||||
|
||||
DefValPart ::= "DEFVAL" "{" Defvalue "}"
|
||||
| empty
|
||||
|
||||
Defvalue ::= -- must be valid for the type specified in
|
||||
-- SYNTAX clause of same OBJECT-TYPE macro
|
||||
value(ObjectSyntax)
|
||||
| "{" BitsValue "}"
|
||||
|
||||
BitsValue ::= BitNames
|
||||
| empty
|
||||
|
||||
BitNames ::= BitName
|
||||
| BitNames "," BitName
|
||||
|
||||
BitName ::= identifier
|
||||
|
||||
-- a character string as defined in section 3.1.1
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
|
||||
-- definitions for notifications
|
||||
|
||||
NOTIFICATION-TYPE MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
ObjectsPart
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE NotificationName)
|
||||
|
||||
ObjectsPart ::=
|
||||
"OBJECTS" "{" Objects "}"
|
||||
| empty
|
||||
Objects ::=
|
||||
Object
|
||||
| Objects "," Object
|
||||
Object ::=
|
||||
value(ObjectName)
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
-- a character string as defined in section 3.1.1
|
||||
Text ::= value(IA5String)
|
||||
END
|
||||
|
||||
-- definitions of administrative identifiers
|
||||
|
||||
zeroDotZero OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A value used for null identifiers."
|
||||
::= { 0 0 }
|
||||
|
||||
END
|
786
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-TC
Normal file
786
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-TC
Normal file
@ -0,0 +1,786 @@
|
||||
SNMPv2-TC DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
TimeTicks FROM SNMPv2-SMI;
|
||||
|
||||
|
||||
-- definition of textual conventions
|
||||
|
||||
TEXTUAL-CONVENTION MACRO ::=
|
||||
BEGIN
|
||||
TYPE NOTATION ::=
|
||||
DisplayPart
|
||||
"STATUS" Status
|
||||
"DESCRIPTION" Text
|
||||
ReferPart
|
||||
"SYNTAX" Syntax
|
||||
|
||||
VALUE NOTATION ::=
|
||||
value(VALUE Syntax) -- adapted ASN.1
|
||||
|
||||
DisplayPart ::=
|
||||
"DISPLAY-HINT" Text
|
||||
| empty
|
||||
|
||||
Status ::=
|
||||
"current"
|
||||
| "deprecated"
|
||||
| "obsolete"
|
||||
|
||||
ReferPart ::=
|
||||
"REFERENCE" Text
|
||||
| empty
|
||||
|
||||
-- a character string as defined in [2]
|
||||
Text ::= value(IA5String)
|
||||
|
||||
Syntax ::= -- Must be one of the following:
|
||||
-- a base type (or its refinement), or
|
||||
-- a BITS pseudo-type
|
||||
type
|
||||
| "BITS" "{" NamedBits "}"
|
||||
|
||||
NamedBits ::= NamedBit
|
||||
| NamedBits "," NamedBit
|
||||
|
||||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
DisplayString ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "255a"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents textual information taken from the NVT ASCII
|
||||
character set, as defined in pages 4, 10-11 of RFC 854.
|
||||
|
||||
To summarize RFC 854, the NVT ASCII repertoire specifies:
|
||||
|
||||
- the use of character codes 0-127 (decimal)
|
||||
|
||||
- the graphics characters (32-126) are interpreted as
|
||||
US ASCII
|
||||
|
||||
- NUL, LF, CR, BEL, BS, HT, VT and FF have the special
|
||||
meanings specified in RFC 854
|
||||
|
||||
- the other 25 codes have no standard interpretation
|
||||
|
||||
- the sequence 'CR LF' means newline
|
||||
|
||||
- the sequence 'CR NUL' means carriage-return
|
||||
|
||||
- an 'LF' not preceded by a 'CR' means moving to the
|
||||
same column on the next line.
|
||||
|
||||
- the sequence 'CR x' for any x other than LF or NUL is
|
||||
illegal. (Note that this also means that a string may
|
||||
end with either 'CR LF' or 'CR NUL', but not with CR.)
|
||||
|
||||
Any object defined using this syntax may not exceed 255
|
||||
characters in length."
|
||||
SYNTAX OCTET STRING (SIZE (0..255))
|
||||
|
||||
PhysAddress ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "1x:"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents media- or physical-level addresses."
|
||||
SYNTAX OCTET STRING
|
||||
|
||||
|
||||
MacAddress ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "1x:"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an 802 MAC address represented in the
|
||||
`canonical' order defined by IEEE 802.1a, i.e., as if it
|
||||
were transmitted least significant bit first, even though
|
||||
802.5 (in contrast to other 802.x protocols) requires MAC
|
||||
addresses to be transmitted most significant bit first."
|
||||
SYNTAX OCTET STRING (SIZE (6))
|
||||
|
||||
TruthValue ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a boolean value."
|
||||
SYNTAX INTEGER { true(1), false(2) }
|
||||
|
||||
TestAndIncr ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents integer-valued information used for atomic
|
||||
operations. When the management protocol is used to specify
|
||||
that an object instance having this syntax is to be
|
||||
modified, the new value supplied via the management protocol
|
||||
must precisely match the value presently held by the
|
||||
instance. If not, the management protocol set operation
|
||||
fails with an error of `inconsistentValue'. Otherwise, if
|
||||
the current value is the maximum value of 2^31-1 (2147483647
|
||||
decimal), then the value held by the instance is wrapped to
|
||||
zero; otherwise, the value held by the instance is
|
||||
incremented by one. (Note that regardless of whether the
|
||||
management protocol set operation succeeds, the variable-
|
||||
binding in the request and response PDUs are identical.)
|
||||
|
||||
The value of the ACCESS clause for objects having this
|
||||
syntax is either `read-write' or `read-create'. When an
|
||||
instance of a columnar object having this syntax is created,
|
||||
any value may be supplied via the management protocol.
|
||||
|
||||
When the network management portion of the system is re-
|
||||
initialized, the value of every object instance having this
|
||||
syntax must either be incremented from its value prior to
|
||||
the re-initialization, or (if the value prior to the re-
|
||||
initialization is unknown) be set to a pseudo-randomly
|
||||
generated value."
|
||||
SYNTAX INTEGER (0..2147483647)
|
||||
|
||||
AutonomousType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an independently extensible type identification
|
||||
value. It may, for example, indicate a particular sub-tree
|
||||
with further MIB definitions, or define a particular type of
|
||||
protocol or hardware."
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
|
||||
|
||||
InstancePointer ::= TEXTUAL-CONVENTION
|
||||
STATUS obsolete
|
||||
DESCRIPTION
|
||||
"A pointer to either a specific instance of a MIB object or
|
||||
a conceptual row of a MIB table in the managed device. In
|
||||
the latter case, by convention, it is the name of the
|
||||
particular instance of the first accessible columnar object
|
||||
in the conceptual row.
|
||||
|
||||
The two uses of this textual convention are replaced by
|
||||
VariablePointer and RowPointer, respectively."
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
|
||||
|
||||
VariablePointer ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A pointer to a specific object instance. For example,
|
||||
sysContact.0 or ifInOctets.3."
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
|
||||
|
||||
RowPointer ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a pointer to a conceptual row. The value is the
|
||||
name of the instance of the first accessible columnar object
|
||||
in the conceptual row.
|
||||
|
||||
For example, ifIndex.3 would point to the 3rd row in the
|
||||
ifTable (note that if ifIndex were not-accessible, then
|
||||
ifDescr.3 would be used instead)."
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
|
||||
RowStatus ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The RowStatus textual convention is used to manage the
|
||||
creation and deletion of conceptual rows, and is used as the
|
||||
value of the SYNTAX clause for the status column of a
|
||||
conceptual row (as described in Section 7.7.1 of [2].)
|
||||
The status column has six defined values:
|
||||
|
||||
- `active', which indicates that the conceptual row is
|
||||
available for use by the managed device;
|
||||
|
||||
- `notInService', which indicates that the conceptual
|
||||
row exists in the agent, but is unavailable for use by
|
||||
the managed device (see NOTE below); 'notInService' has
|
||||
no implication regarding the internal consistency of
|
||||
the row, availability of resources, or consistency with
|
||||
the current state of the managed device;
|
||||
|
||||
- `notReady', which indicates that the conceptual row
|
||||
exists in the agent, but is missing information
|
||||
necessary in order to be available for use by the
|
||||
managed device (i.e., one or more required columns in
|
||||
the conceptual row have not been instanciated);
|
||||
|
||||
- `createAndGo', which is supplied by a management
|
||||
station wishing to create a new instance of a
|
||||
conceptual row and to have its status automatically set
|
||||
to active, making it available for use by the managed
|
||||
device;
|
||||
|
||||
- `createAndWait', which is supplied by a management
|
||||
station wishing to create a new instance of a
|
||||
conceptual row (but not make it available for use by
|
||||
the managed device); and,
|
||||
|
||||
- `destroy', which is supplied by a management station
|
||||
wishing to delete all of the instances associated with
|
||||
an existing conceptual row.
|
||||
|
||||
Whereas five of the six values (all except `notReady') may
|
||||
be specified in a management protocol set operation, only
|
||||
three values will be returned in response to a management
|
||||
protocol retrieval operation: `notReady', `notInService' or
|
||||
`active'. That is, when queried, an existing conceptual row
|
||||
has only three states: it is either available for use by
|
||||
the managed device (the status column has value `active');
|
||||
it is not available for use by the managed device, though
|
||||
the agent has sufficient information to attempt to make it
|
||||
so (the status column has value `notInService'); or, it is
|
||||
not available for use by the managed device, and an attempt
|
||||
to make it so would fail because the agent has insufficient
|
||||
information (the state column has value `notReady').
|
||||
|
||||
NOTE WELL
|
||||
|
||||
This textual convention may be used for a MIB table,
|
||||
irrespective of whether the values of that table's
|
||||
conceptual rows are able to be modified while it is
|
||||
active, or whether its conceptual rows must be taken
|
||||
out of service in order to be modified. That is, it is
|
||||
the responsibility of the DESCRIPTION clause of the
|
||||
status column to specify whether the status column must
|
||||
not be `active' in order for the value of some other
|
||||
column of the same conceptual row to be modified. If
|
||||
such a specification is made, affected columns may be
|
||||
changed by an SNMP set PDU if the RowStatus would not
|
||||
be equal to `active' either immediately before or after
|
||||
processing the PDU. In other words, if the PDU also
|
||||
contained a varbind that would change the RowStatus
|
||||
value, the column in question may be changed if the
|
||||
RowStatus was not equal to `active' as the PDU was
|
||||
received, or if the varbind sets the status to a value
|
||||
other than 'active'.
|
||||
|
||||
|
||||
Also note that whenever any elements of a row exist, the
|
||||
RowStatus column must also exist.
|
||||
|
||||
To summarize the effect of having a conceptual row with a
|
||||
status column having a SYNTAX clause value of RowStatus,
|
||||
consider the following state diagram:
|
||||
|
||||
|
||||
STATE
|
||||
+--------------+-----------+-------------+-------------
|
||||
| A | B | C | D
|
||||
| |status col.|status column|
|
||||
|status column | is | is |status column
|
||||
ACTION |does not exist| notReady | notInService| is active
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
set status |noError ->D|inconsist- |inconsistent-|inconsistent-
|
||||
column to | or | entValue| Value| Value
|
||||
createAndGo |inconsistent- | | |
|
||||
| Value| | |
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
set status |noError see 1|inconsist- |inconsistent-|inconsistent-
|
||||
column to | or | entValue| Value| Value
|
||||
createAndWait |wrongValue | | |
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
set status |inconsistent- |inconsist- |noError |noError
|
||||
column to | Value| entValue| |
|
||||
active | | | |
|
||||
| | or | |
|
||||
| | | |
|
||||
| |see 2 ->D|see 8 ->D| ->D
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
set status |inconsistent- |inconsist- |noError |noError ->C
|
||||
column to | Value| entValue| |
|
||||
notInService | | | |
|
||||
| | or | | or
|
||||
| | | |
|
||||
| |see 3 ->C| ->C|see 6
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
set status |noError |noError |noError |noError ->A
|
||||
column to | | | | or
|
||||
destroy | ->A| ->A| ->A|see 7
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
set any other |see 4 |noError |noError |see 5
|
||||
column to some| | | |
|
||||
value | | see 1| ->C| ->D
|
||||
--------------+--------------+-----------+-------------+-------------
|
||||
|
||||
(1) goto B or C, depending on information available to the
|
||||
agent.
|
||||
|
||||
(2) if other variable bindings included in the same PDU,
|
||||
provide values for all columns which are missing but
|
||||
required, and all columns have acceptable values, then
|
||||
return noError and goto D.
|
||||
|
||||
(3) if other variable bindings included in the same PDU,
|
||||
provide legal values for all columns which are missing but
|
||||
required, then return noError and goto C.
|
||||
|
||||
(4) at the discretion of the agent, the return value may be
|
||||
either:
|
||||
|
||||
inconsistentName: because the agent does not choose to
|
||||
create such an instance when the corresponding
|
||||
RowStatus instance does not exist, or
|
||||
|
||||
inconsistentValue: if the supplied value is
|
||||
inconsistent with the state of some other MIB object's
|
||||
value, or
|
||||
|
||||
noError: because the agent chooses to create the
|
||||
instance.
|
||||
|
||||
If noError is returned, then the instance of the status
|
||||
column must also be created, and the new state is B or C,
|
||||
depending on the information available to the agent. If
|
||||
inconsistentName or inconsistentValue is returned, the row
|
||||
remains in state A.
|
||||
|
||||
(5) depending on the MIB definition for the column/table,
|
||||
either noError or inconsistentValue may be returned.
|
||||
|
||||
(6) the return value can indicate one of the following
|
||||
errors:
|
||||
|
||||
wrongValue: because the agent does not support
|
||||
notInService (e.g., an agent which does not support
|
||||
createAndWait), or
|
||||
|
||||
inconsistentValue: because the agent is unable to take
|
||||
the row out of service at this time, perhaps because it
|
||||
is in use and cannot be de-activated.
|
||||
|
||||
(7) the return value can indicate the following error:
|
||||
|
||||
inconsistentValue: because the agent is unable to
|
||||
remove the row at this time, perhaps because it is in
|
||||
use and cannot be de-activated.
|
||||
|
||||
(8) the transition to D can fail, e.g., if the values of the
|
||||
conceptual row are inconsistent, then the error code would
|
||||
be inconsistentValue.
|
||||
|
||||
NOTE: Other processing of (this and other varbinds of) the
|
||||
set request may result in a response other than noError
|
||||
being returned, e.g., wrongValue, noCreation, etc.
|
||||
|
||||
|
||||
Conceptual Row Creation
|
||||
|
||||
There are four potential interactions when creating a
|
||||
conceptual row: selecting an instance-identifier which is
|
||||
not in use; creating the conceptual row; initializing any
|
||||
objects for which the agent does not supply a default; and,
|
||||
making the conceptual row available for use by the managed
|
||||
device.
|
||||
|
||||
Interaction 1: Selecting an Instance-Identifier
|
||||
|
||||
The algorithm used to select an instance-identifier varies
|
||||
for each conceptual row. In some cases, the instance-
|
||||
identifier is semantically significant, e.g., the
|
||||
destination address of a route, and a management station
|
||||
selects the instance-identifier according to the semantics.
|
||||
|
||||
In other cases, the instance-identifier is used solely to
|
||||
distinguish conceptual rows, and a management station
|
||||
without specific knowledge of the conceptual row might
|
||||
examine the instances present in order to determine an
|
||||
unused instance-identifier. (This approach may be used, but
|
||||
it is often highly sub-optimal; however, it is also a
|
||||
questionable practice for a naive management station to
|
||||
attempt conceptual row creation.)
|
||||
|
||||
Alternately, the MIB module which defines the conceptual row
|
||||
might provide one or more objects which provide assistance
|
||||
in determining an unused instance-identifier. For example,
|
||||
if the conceptual row is indexed by an integer-value, then
|
||||
an object having an integer-valued SYNTAX clause might be
|
||||
defined for such a purpose, allowing a management station to
|
||||
issue a management protocol retrieval operation. In order
|
||||
to avoid unnecessary collisions between competing management
|
||||
stations, `adjacent' retrievals of this object should be
|
||||
different.
|
||||
|
||||
Finally, the management station could select a pseudo-random
|
||||
number to use as the index. In the event that this index
|
||||
was already in use and an inconsistentValue was returned in
|
||||
response to the management protocol set operation, the
|
||||
management station should simply select a new pseudo-random
|
||||
number and retry the operation.
|
||||
|
||||
A MIB designer should choose between the two latter
|
||||
algorithms based on the size of the table (and therefore the
|
||||
efficiency of each algorithm). For tables in which a large
|
||||
number of entries are expected, it is recommended that a MIB
|
||||
object be defined that returns an acceptable index for
|
||||
creation. For tables with small numbers of entries, it is
|
||||
recommended that the latter pseudo-random index mechanism be
|
||||
used.
|
||||
|
||||
Interaction 2: Creating the Conceptual Row
|
||||
|
||||
Once an unused instance-identifier has been selected, the
|
||||
management station determines if it wishes to create and
|
||||
activate the conceptual row in one transaction or in a
|
||||
negotiated set of interactions.
|
||||
|
||||
Interaction 2a: Creating and Activating the Conceptual Row
|
||||
|
||||
The management station must first determine the column
|
||||
requirements, i.e., it must determine those columns for
|
||||
which it must or must not provide values. Depending on the
|
||||
complexity of the table and the management station's
|
||||
knowledge of the agent's capabilities, this determination
|
||||
can be made locally by the management station. Alternately,
|
||||
the management station issues a management protocol get
|
||||
operation to examine all columns in the conceptual row that
|
||||
it wishes to create. In response, for each column, there
|
||||
are three possible outcomes:
|
||||
|
||||
- a value is returned, indicating that some other
|
||||
management station has already created this conceptual
|
||||
row. We return to interaction 1.
|
||||
|
||||
- the exception `noSuchInstance' is returned,
|
||||
indicating that the agent implements the object-type
|
||||
associated with this column, and that this column in at
|
||||
least one conceptual row would be accessible in the MIB
|
||||
view used by the retrieval were it to exist. For those
|
||||
columns to which the agent provides read-create access,
|
||||
the `noSuchInstance' exception tells the management
|
||||
station that it should supply a value for this column
|
||||
when the conceptual row is to be created.
|
||||
|
||||
- the exception `noSuchObject' is returned, indicating
|
||||
that the agent does not implement the object-type
|
||||
associated with this column or that there is no
|
||||
conceptual row for which this column would be
|
||||
accessible in the MIB view used by the retrieval. As
|
||||
such, the management station can not issue any
|
||||
management protocol set operations to create an
|
||||
instance of this column.
|
||||
|
||||
Once the column requirements have been determined, a
|
||||
management protocol set operation is accordingly issued.
|
||||
This operation also sets the new instance of the status
|
||||
column to `createAndGo'.
|
||||
|
||||
When the agent processes the set operation, it verifies that
|
||||
it has sufficient information to make the conceptual row
|
||||
available for use by the managed device. The information
|
||||
available to the agent is provided by two sources: the
|
||||
management protocol set operation which creates the
|
||||
conceptual row, and, implementation-specific defaults
|
||||
supplied by the agent (note that an agent must provide
|
||||
implementation-specific defaults for at least those objects
|
||||
which it implements as read-only). If there is sufficient
|
||||
information available, then the conceptual row is created, a
|
||||
`noError' response is returned, the status column is set to
|
||||
`active', and no further interactions are necessary (i.e.,
|
||||
interactions 3 and 4 are skipped). If there is insufficient
|
||||
information, then the conceptual row is not created, and the
|
||||
set operation fails with an error of `inconsistentValue'.
|
||||
On this error, the management station can issue a management
|
||||
protocol retrieval operation to determine if this was
|
||||
because it failed to specify a value for a required column,
|
||||
or, because the selected instance of the status column
|
||||
already existed. In the latter case, we return to
|
||||
interaction 1. In the former case, the management station
|
||||
can re-issue the set operation with the additional
|
||||
information, or begin interaction 2 again using
|
||||
`createAndWait' in order to negotiate creation of the
|
||||
conceptual row.
|
||||
|
||||
NOTE WELL
|
||||
|
||||
Regardless of the method used to determine the column
|
||||
requirements, it is possible that the management
|
||||
station might deem a column necessary when, in fact,
|
||||
the agent will not allow that particular columnar
|
||||
instance to be created or written. In this case, the
|
||||
management protocol set operation will fail with an
|
||||
error such as `noCreation' or `notWritable'. In this
|
||||
case, the management station decides whether it needs
|
||||
to be able to set a value for that particular columnar
|
||||
instance. If not, the management station re-issues the
|
||||
management protocol set operation, but without setting
|
||||
a value for that particular columnar instance;
|
||||
otherwise, the management station aborts the row
|
||||
creation algorithm.
|
||||
|
||||
Interaction 2b: Negotiating the Creation of the Conceptual
|
||||
Row
|
||||
|
||||
The management station issues a management protocol set
|
||||
operation which sets the desired instance of the status
|
||||
column to `createAndWait'. If the agent is unwilling to
|
||||
process a request of this sort, the set operation fails with
|
||||
an error of `wrongValue'. (As a consequence, such an agent
|
||||
must be prepared to accept a single management protocol set
|
||||
operation, i.e., interaction 2a above, containing all of the
|
||||
columns indicated by its column requirements.) Otherwise,
|
||||
the conceptual row is created, a `noError' response is
|
||||
returned, and the status column is immediately set to either
|
||||
`notInService' or `notReady', depending on whether it has
|
||||
sufficient information to (attempt to) make the conceptual
|
||||
row available for use by the managed device. If there is
|
||||
sufficient information available, then the status column is
|
||||
set to `notInService'; otherwise, if there is insufficient
|
||||
information, then the status column is set to `notReady'.
|
||||
Regardless, we proceed to interaction 3.
|
||||
|
||||
Interaction 3: Initializing non-defaulted Objects
|
||||
|
||||
The management station must now determine the column
|
||||
requirements. It issues a management protocol get operation
|
||||
to examine all columns in the created conceptual row. In
|
||||
the response, for each column, there are three possible
|
||||
outcomes:
|
||||
|
||||
- a value is returned, indicating that the agent
|
||||
implements the object-type associated with this column
|
||||
and had sufficient information to provide a value. For
|
||||
those columns to which the agent provides read-create
|
||||
access (and for which the agent allows their values to
|
||||
be changed after their creation), a value return tells
|
||||
the management station that it may issue additional
|
||||
management protocol set operations, if it desires, in
|
||||
order to change the value associated with this column.
|
||||
|
||||
- the exception `noSuchInstance' is returned,
|
||||
indicating that the agent implements the object-type
|
||||
associated with this column, and that this column in at
|
||||
least one conceptual row would be accessible in the MIB
|
||||
view used by the retrieval were it to exist. However,
|
||||
the agent does not have sufficient information to
|
||||
provide a value, and until a value is provided, the
|
||||
conceptual row may not be made available for use by the
|
||||
managed device. For those columns to which the agent
|
||||
provides read-create access, the `noSuchInstance'
|
||||
exception tells the management station that it must
|
||||
issue additional management protocol set operations, in
|
||||
order to provide a value associated with this column.
|
||||
|
||||
- the exception `noSuchObject' is returned, indicating
|
||||
that the agent does not implement the object-type
|
||||
associated with this column or that there is no
|
||||
conceptual row for which this column would be
|
||||
accessible in the MIB view used by the retrieval. As
|
||||
such, the management station can not issue any
|
||||
management protocol set operations to create an
|
||||
instance of this column.
|
||||
|
||||
If the value associated with the status column is
|
||||
`notReady', then the management station must first deal with
|
||||
all `noSuchInstance' columns, if any. Having done so, the
|
||||
value of the status column becomes `notInService', and we
|
||||
proceed to interaction 4.
|
||||
|
||||
Interaction 4: Making the Conceptual Row Available
|
||||
|
||||
Once the management station is satisfied with the values
|
||||
associated with the columns of the conceptual row, it issues
|
||||
a management protocol set operation to set the status column
|
||||
to `active'. If the agent has sufficient information to
|
||||
make the conceptual row available for use by the managed
|
||||
device, the management protocol set operation succeeds (a
|
||||
`noError' response is returned). Otherwise, the management
|
||||
protocol set operation fails with an error of
|
||||
`inconsistentValue'.
|
||||
|
||||
NOTE WELL
|
||||
|
||||
A conceptual row having a status column with value
|
||||
`notInService' or `notReady' is unavailable to the
|
||||
managed device. As such, it is possible for the
|
||||
managed device to create its own instances during the
|
||||
time between the management protocol set operation
|
||||
which sets the status column to `createAndWait' and the
|
||||
management protocol set operation which sets the status
|
||||
column to `active'. In this case, when the management
|
||||
protocol set operation is issued to set the status
|
||||
column to `active', the values held in the agent
|
||||
supersede those used by the managed device.
|
||||
|
||||
If the management station is prevented from setting the
|
||||
status column to `active' (e.g., due to management station
|
||||
or network failure) the conceptual row will be left in the
|
||||
`notInService' or `notReady' state, consuming resources
|
||||
indefinitely. The agent must detect conceptual rows that
|
||||
have been in either state for an abnormally long period of
|
||||
time and remove them. It is the responsibility of the
|
||||
DESCRIPTION clause of the status column to indicate what an
|
||||
abnormally long period of time would be. This period of
|
||||
time should be long enough to allow for human response time
|
||||
(including `think time') between the creation of the
|
||||
conceptual row and the setting of the status to `active'.
|
||||
In the absence of such information in the DESCRIPTION
|
||||
clause, it is suggested that this period be approximately 5
|
||||
minutes in length. This removal action applies not only to
|
||||
newly-created rows, but also to previously active rows which
|
||||
are set to, and left in, the notInService state for a
|
||||
prolonged period exceeding that which is considered normal
|
||||
for such a conceptual row.
|
||||
|
||||
Conceptual Row Suspension
|
||||
|
||||
When a conceptual row is `active', the management station
|
||||
may issue a management protocol set operation which sets the
|
||||
instance of the status column to `notInService'. If the
|
||||
agent is unwilling to do so, the set operation fails with an
|
||||
error of `wrongValue' or `inconsistentValue'. Otherwise,
|
||||
the conceptual row is taken out of service, and a `noError'
|
||||
response is returned. It is the responsibility of the
|
||||
DESCRIPTION clause of the status column to indicate under
|
||||
what circumstances the status column should be taken out of
|
||||
service (e.g., in order for the value of some other column
|
||||
of the same conceptual row to be modified).
|
||||
|
||||
|
||||
Conceptual Row Deletion
|
||||
|
||||
For deletion of conceptual rows, a management protocol set
|
||||
operation is issued which sets the instance of the status
|
||||
column to `destroy'. This request may be made regardless of
|
||||
the current value of the status column (e.g., it is possible
|
||||
to delete conceptual rows which are either `notReady',
|
||||
`notInService' or `active'.) If the operation succeeds,
|
||||
then all instances associated with the conceptual row are
|
||||
immediately removed."
|
||||
SYNTAX INTEGER {
|
||||
-- the following two values are states:
|
||||
-- these values may be read or written
|
||||
active(1),
|
||||
notInService(2),
|
||||
|
||||
-- the following value is a state:
|
||||
-- this value may be read, but not written
|
||||
notReady(3),
|
||||
|
||||
-- the following three values are
|
||||
-- actions: these values may be written,
|
||||
-- but are never read
|
||||
createAndGo(4),
|
||||
createAndWait(5),
|
||||
destroy(6)
|
||||
}
|
||||
|
||||
TimeStamp ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The value of the sysUpTime object at which a specific
|
||||
occurrence happened. The specific occurrence must be
|
||||
defined in the description of any object defined using this
|
||||
type.
|
||||
|
||||
If sysUpTime is reset to zero as a result of a re-
|
||||
initialization of the network management (sub)system, then
|
||||
the values of all TimeStamp objects are also reset.
|
||||
However, after approximately 497 days without a re-
|
||||
initialization, the sysUpTime object will reach 2^^32-1 and
|
||||
then increment around to zero; in this case, existing values
|
||||
of TimeStamp objects do not change. This can lead to
|
||||
ambiguities in the value of TimeStamp objects."
|
||||
SYNTAX TimeTicks
|
||||
|
||||
|
||||
TimeInterval ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A period of time, measured in units of 0.01 seconds."
|
||||
SYNTAX INTEGER (0..2147483647)
|
||||
|
||||
DateAndTime ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A date-time specification.
|
||||
|
||||
field octets contents range
|
||||
----- ------ -------- -----
|
||||
1 1-2 year* 0..65536
|
||||
2 3 month 1..12
|
||||
3 4 day 1..31
|
||||
4 5 hour 0..23
|
||||
5 6 minutes 0..59
|
||||
6 7 seconds 0..60
|
||||
(use 60 for leap-second)
|
||||
7 8 deci-seconds 0..9
|
||||
8 9 direction from UTC '+' / '-'
|
||||
9 10 hours from UTC* 0..13
|
||||
10 11 minutes from UTC 0..59
|
||||
|
||||
* Notes:
|
||||
- the value of year is in network-byte order
|
||||
- daylight saving time in New Zealand is +13
|
||||
|
||||
For example, Tuesday May 26, 1992 at 1:30:15 PM EDT would be
|
||||
displayed as:
|
||||
|
||||
1992-5-26,13:30:15.0,-4:0
|
||||
|
||||
Note that if only local time is known, then timezone
|
||||
information (fields 8-10) is not present."
|
||||
SYNTAX OCTET STRING (SIZE (8 | 11))
|
||||
|
||||
|
||||
StorageType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Describes the memory realization of a conceptual row. A
|
||||
row which is volatile(2) is lost upon reboot. A row which
|
||||
is either nonVolatile(3), permanent(4) or readOnly(5), is
|
||||
backed up by stable storage. A row which is permanent(4)
|
||||
can be changed but not deleted. A row which is readOnly(5)
|
||||
cannot be changed nor deleted.
|
||||
|
||||
If the value of an object with this syntax is either
|
||||
permanent(4) or readOnly(5), it cannot be written.
|
||||
Conversely, if the value is either other(1), volatile(2) or
|
||||
nonVolatile(3), it cannot be modified to be permanent(4) or
|
||||
readOnly(5). (All illegal modifications result in a
|
||||
'wrongValue' error.)
|
||||
|
||||
Every usage of this textual convention is required to
|
||||
specify the columnar objects which a permanent(4) row must
|
||||
at a minimum allow to be writable."
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- eh?
|
||||
volatile(2), -- e.g., in RAM
|
||||
nonVolatile(3), -- e.g., in NVRAM
|
||||
permanent(4), -- e.g., partially in ROM
|
||||
readOnly(5) -- e.g., completely in ROM
|
||||
}
|
||||
|
||||
TDomain ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Denotes a kind of transport service.
|
||||
|
||||
Some possible values, such as snmpUDPDomain, are defined in
|
||||
the SNMPv2-TM MIB module. Other possible values are defined
|
||||
in other MIB modules."
|
||||
REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
|
||||
SYNTAX OBJECT IDENTIFIER
|
||||
|
||||
|
||||
TAddress ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Denotes a transport service address.
|
||||
|
||||
A TAddress value is always interpreted within the context of a
|
||||
TDomain value. Thus, each definition of a TDomain value must
|
||||
be accompanied by a definition of a textual convention for use
|
||||
with that TDomain. Some possible textual conventions, such as
|
||||
SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM
|
||||
MIB module. Other possible textual conventions are defined in
|
||||
other MIB modules."
|
||||
REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
|
||||
SYNTAX OCTET STRING (SIZE (1..255))
|
||||
|
||||
|
||||
END
|
194
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-TM
Normal file
194
contrib/apps/LwipMibCompiler/Mibs/SNMPv2-TM
Normal file
@ -0,0 +1,194 @@
|
||||
SNMPv2-TM DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-IDENTITY,
|
||||
snmpModules, snmpDomains, snmpProxys
|
||||
FROM SNMPv2-SMI
|
||||
TEXTUAL-CONVENTION
|
||||
FROM SNMPv2-TC;
|
||||
|
||||
snmpv2tm MODULE-IDENTITY
|
||||
LAST-UPDATED "200210160000Z"
|
||||
ORGANIZATION "IETF SNMPv3 Working Group"
|
||||
CONTACT-INFO
|
||||
"WG-EMail: snmpv3@lists.tislabs.com
|
||||
Subscribe: snmpv3-request@lists.tislabs.com
|
||||
|
||||
Co-Chair: Russ Mundy
|
||||
Network Associates Laboratories
|
||||
postal: 15204 Omega Drive, Suite 300
|
||||
Rockville, MD 20850-4601
|
||||
USA
|
||||
EMail: mundy@tislabs.com
|
||||
phone: +1 301 947-7107
|
||||
|
||||
|
||||
|
||||
Co-Chair: David Harrington
|
||||
Enterasys Networks
|
||||
postal: 35 Industrial Way
|
||||
P. O. Box 5005
|
||||
Rochester, NH 03866-5005
|
||||
USA
|
||||
EMail: dbh@enterasys.com
|
||||
phone: +1 603 337-2614
|
||||
|
||||
Editor: Randy Presuhn
|
||||
BMC Software, Inc.
|
||||
postal: 2141 North First Street
|
||||
San Jose, CA 95131
|
||||
USA
|
||||
EMail: randy_presuhn@bmc.com
|
||||
phone: +1 408 546-1006"
|
||||
DESCRIPTION
|
||||
"The MIB module for SNMP transport mappings.
|
||||
|
||||
Copyright (C) The Internet Society (2002). This
|
||||
version of this MIB module is part of RFC 3417;
|
||||
see the RFC itself for full legal notices.
|
||||
"
|
||||
REVISION "200210160000Z"
|
||||
DESCRIPTION
|
||||
"Clarifications, published as RFC 3417."
|
||||
REVISION "199601010000Z"
|
||||
DESCRIPTION
|
||||
"Clarifications, published as RFC 1906."
|
||||
REVISION "199304010000Z"
|
||||
DESCRIPTION
|
||||
"The initial version, published as RFC 1449."
|
||||
::= { snmpModules 19 }
|
||||
|
||||
-- SNMP over UDP over IPv4
|
||||
|
||||
snmpUDPDomain OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The SNMP over UDP over IPv4 transport domain.
|
||||
The corresponding transport address is of type
|
||||
SnmpUDPAddress."
|
||||
::= { snmpDomains 1 }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SnmpUDPAddress ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "1d.1d.1d.1d/2d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents a UDP over IPv4 address:
|
||||
|
||||
octets contents encoding
|
||||
1-4 IP-address network-byte order
|
||||
5-6 UDP-port network-byte order
|
||||
"
|
||||
SYNTAX OCTET STRING (SIZE (6))
|
||||
|
||||
-- SNMP over OSI
|
||||
|
||||
snmpCLNSDomain OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The SNMP over CLNS transport domain.
|
||||
The corresponding transport address is of type
|
||||
SnmpOSIAddress."
|
||||
::= { snmpDomains 2 }
|
||||
|
||||
snmpCONSDomain OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The SNMP over CONS transport domain.
|
||||
The corresponding transport address is of type
|
||||
SnmpOSIAddress."
|
||||
::= { snmpDomains 3 }
|
||||
|
||||
SnmpOSIAddress ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "*1x:/1x:"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an OSI transport-address:
|
||||
|
||||
octets contents encoding
|
||||
1 length of NSAP 'n' as an unsigned-integer
|
||||
(either 0 or from 3 to 20)
|
||||
2..(n+1) NSAP concrete binary representation
|
||||
(n+2)..m TSEL string of (up to 64) octets
|
||||
"
|
||||
SYNTAX OCTET STRING (SIZE (1 | 4..85))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- SNMP over DDP
|
||||
|
||||
snmpDDPDomain OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The SNMP over DDP transport domain. The corresponding
|
||||
transport address is of type SnmpNBPAddress."
|
||||
::= { snmpDomains 4 }
|
||||
|
||||
SnmpNBPAddress ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an NBP name:
|
||||
|
||||
octets contents encoding
|
||||
1 length of object 'n' as an unsigned integer
|
||||
2..(n+1) object string of (up to 32) octets
|
||||
n+2 length of type 'p' as an unsigned integer
|
||||
(n+3)..(n+2+p) type string of (up to 32) octets
|
||||
n+3+p length of zone 'q' as an unsigned integer
|
||||
(n+4+p)..(n+3+p+q) zone string of (up to 32) octets
|
||||
|
||||
For comparison purposes, strings are
|
||||
case-insensitive. All strings may contain any octet
|
||||
other than 255 (hex ff)."
|
||||
SYNTAX OCTET STRING (SIZE (3..99))
|
||||
|
||||
-- SNMP over IPX
|
||||
|
||||
snmpIPXDomain OBJECT-IDENTITY
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The SNMP over IPX transport domain. The corresponding
|
||||
transport address is of type SnmpIPXAddress."
|
||||
::= { snmpDomains 5 }
|
||||
|
||||
SnmpIPXAddress ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Represents an IPX address:
|
||||
|
||||
octets contents encoding
|
||||
1-4 network-number network-byte order
|
||||
5-10 physical-address network-byte order
|
||||
11-12 socket-number network-byte order
|
||||
"
|
||||
SYNTAX OCTET STRING (SIZE (12))
|
||||
|
||||
|
||||
|
||||
-- for proxy to SNMPv1 (RFC 1157)
|
||||
|
||||
rfc1157Proxy OBJECT IDENTIFIER ::= { snmpProxys 1 }
|
||||
|
||||
rfc1157Domain OBJECT-IDENTITY
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The transport domain for SNMPv1 over UDP over IPv4.
|
||||
The corresponding transport address is of type
|
||||
SnmpUDPAddress."
|
||||
::= { rfc1157Proxy 1 }
|
||||
|
||||
-- ::= { rfc1157Proxy 2 } this OID is obsolete
|
||||
|
||||
END
|
829
contrib/apps/LwipMibCompiler/Mibs/TCP-MIB
Normal file
829
contrib/apps/LwipMibCompiler/Mibs/TCP-MIB
Normal file
@ -0,0 +1,829 @@
|
||||
TCP-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32,
|
||||
Gauge32, Counter32, Counter64, IpAddress, mib-2
|
||||
FROM SNMPv2-SMI
|
||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
||||
InetAddress, InetAddressType,
|
||||
InetPortNumber FROM INET-ADDRESS-MIB;
|
||||
|
||||
tcpMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200502180000Z" -- 18 February 2005
|
||||
ORGANIZATION
|
||||
"IETF IPv6 MIB Revision Team
|
||||
http://www.ietf.org/html.charters/ipv6-charter.html"
|
||||
CONTACT-INFO
|
||||
"Rajiv Raghunarayan (editor)
|
||||
|
||||
Cisco Systems Inc.
|
||||
170 West Tasman Drive
|
||||
San Jose, CA 95134
|
||||
|
||||
Phone: +1 408 853 9612
|
||||
Email: <raraghun@cisco.com>
|
||||
|
||||
Send comments to <ipv6@ietf.org>"
|
||||
DESCRIPTION
|
||||
"The MIB module for managing TCP implementations.
|
||||
|
||||
Copyright (C) The Internet Society (2005). This version
|
||||
of this MIB module is a part of RFC 4022; see the RFC
|
||||
itself for full legal notices."
|
||||
REVISION "200502180000Z" -- 18 February 2005
|
||||
DESCRIPTION
|
||||
"IP version neutral revision, published as RFC 4022."
|
||||
REVISION "9411010000Z"
|
||||
DESCRIPTION
|
||||
"Initial SMIv2 version, published as RFC 2012."
|
||||
REVISION "9103310000Z"
|
||||
DESCRIPTION
|
||||
"The initial revision of this MIB module was part of
|
||||
MIB-II."
|
||||
::= { mib-2 49 }
|
||||
|
||||
-- the TCP base variables group
|
||||
|
||||
|
||||
|
||||
|
||||
tcp OBJECT IDENTIFIER ::= { mib-2 6 }
|
||||
|
||||
-- Scalars
|
||||
|
||||
tcpRtoAlgorithm OBJECT-TYPE
|
||||
SYNTAX INTEGER {
|
||||
other(1), -- none of the following
|
||||
constant(2), -- a constant rto
|
||||
rsre(3), -- MIL-STD-1778, Appendix B
|
||||
vanj(4), -- Van Jacobson's algorithm
|
||||
rfc2988(5) -- RFC 2988
|
||||
}
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The algorithm used to determine the timeout value used for
|
||||
retransmitting unacknowledged octets."
|
||||
::= { tcp 1 }
|
||||
|
||||
tcpRtoMin OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..2147483647)
|
||||
UNITS "milliseconds"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The minimum value permitted by a TCP implementation for
|
||||
the retransmission timeout, measured in milliseconds.
|
||||
More refined semantics for objects of this type depend
|
||||
on the algorithm used to determine the retransmission
|
||||
timeout; in particular, the IETF standard algorithm
|
||||
rfc2988(5) provides a minimum value."
|
||||
::= { tcp 2 }
|
||||
|
||||
tcpRtoMax OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..2147483647)
|
||||
UNITS "milliseconds"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum value permitted by a TCP implementation for
|
||||
the retransmission timeout, measured in milliseconds.
|
||||
More refined semantics for objects of this type depend
|
||||
on the algorithm used to determine the retransmission
|
||||
timeout; in particular, the IETF standard algorithm
|
||||
rfc2988(5) provides an upper bound (as part of an
|
||||
adaptive backoff algorithm)."
|
||||
::= { tcp 3 }
|
||||
|
||||
|
||||
|
||||
|
||||
tcpMaxConn OBJECT-TYPE
|
||||
SYNTAX Integer32 (-1 | 0..2147483647)
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The limit on the total number of TCP connections the entity
|
||||
can support. In entities where the maximum number of
|
||||
connections is dynamic, this object should contain the
|
||||
value -1."
|
||||
::= { tcp 4 }
|
||||
|
||||
tcpActiveOpens OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of times that TCP connections have made a direct
|
||||
transition to the SYN-SENT state from the CLOSED state.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 5 }
|
||||
|
||||
tcpPassiveOpens OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of times TCP connections have made a direct
|
||||
transition to the SYN-RCVD state from the LISTEN state.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 6 }
|
||||
|
||||
tcpAttemptFails OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of times that TCP connections have made a direct
|
||||
transition to the CLOSED state from either the SYN-SENT
|
||||
state or the SYN-RCVD state, plus the number of times that
|
||||
TCP connections have made a direct transition to the
|
||||
LISTEN state from the SYN-RCVD state.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
|
||||
|
||||
|
||||
::= { tcp 7 }
|
||||
|
||||
tcpEstabResets OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of times that TCP connections have made a direct
|
||||
transition to the CLOSED state from either the ESTABLISHED
|
||||
state or the CLOSE-WAIT state.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 8 }
|
||||
|
||||
tcpCurrEstab OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of TCP connections for which the current state
|
||||
is either ESTABLISHED or CLOSE-WAIT."
|
||||
::= { tcp 9 }
|
||||
|
||||
tcpInSegs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of segments received, including those
|
||||
received in error. This count includes segments received
|
||||
on currently established connections.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 10 }
|
||||
|
||||
tcpOutSegs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of segments sent, including those on
|
||||
current connections but excluding those containing only
|
||||
retransmitted octets.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
|
||||
|
||||
|
||||
::= { tcp 11 }
|
||||
|
||||
tcpRetransSegs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of segments retransmitted; that is, the
|
||||
number of TCP segments transmitted containing one or more
|
||||
previously transmitted octets.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 12 }
|
||||
|
||||
tcpInErrs OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of segments received in error (e.g., bad
|
||||
TCP checksums).
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 14 }
|
||||
|
||||
tcpOutRsts OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of TCP segments sent containing the RST flag.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 15 }
|
||||
|
||||
-- { tcp 16 } was used to represent the ipv6TcpConnTable in RFC 2452,
|
||||
-- which has since been obsoleted. It MUST not be used.
|
||||
|
||||
tcpHCInSegs OBJECT-TYPE
|
||||
SYNTAX Counter64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of segments received, including those
|
||||
received in error. This count includes segments received
|
||||
|
||||
|
||||
|
||||
on currently established connections. This object is
|
||||
the 64-bit equivalent of tcpInSegs.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 17 }
|
||||
|
||||
tcpHCOutSegs OBJECT-TYPE
|
||||
SYNTAX Counter64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of segments sent, including those on
|
||||
current connections but excluding those containing only
|
||||
retransmitted octets. This object is the 64-bit
|
||||
equivalent of tcpOutSegs.
|
||||
|
||||
Discontinuities in the value of this counter are
|
||||
indicated via discontinuities in the value of sysUpTime."
|
||||
::= { tcp 18 }
|
||||
|
||||
|
||||
-- The TCP Connection table
|
||||
|
||||
tcpConnectionTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF TcpConnectionEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A table containing information about existing TCP
|
||||
connections. Note that unlike earlier TCP MIBs, there
|
||||
is a separate table for connections in the LISTEN state."
|
||||
::= { tcp 19 }
|
||||
|
||||
tcpConnectionEntry OBJECT-TYPE
|
||||
SYNTAX TcpConnectionEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A conceptual row of the tcpConnectionTable containing
|
||||
information about a particular current TCP connection.
|
||||
Each row of this table is transient in that it ceases to
|
||||
exist when (or soon after) the connection makes the
|
||||
transition to the CLOSED state."
|
||||
INDEX { tcpConnectionLocalAddressType,
|
||||
tcpConnectionLocalAddress,
|
||||
tcpConnectionLocalPort,
|
||||
tcpConnectionRemAddressType,
|
||||
|
||||
|
||||
|
||||
tcpConnectionRemAddress,
|
||||
tcpConnectionRemPort }
|
||||
::= { tcpConnectionTable 1 }
|
||||
|
||||
TcpConnectionEntry ::= SEQUENCE {
|
||||
tcpConnectionLocalAddressType InetAddressType,
|
||||
tcpConnectionLocalAddress InetAddress,
|
||||
tcpConnectionLocalPort InetPortNumber,
|
||||
tcpConnectionRemAddressType InetAddressType,
|
||||
tcpConnectionRemAddress InetAddress,
|
||||
tcpConnectionRemPort InetPortNumber,
|
||||
tcpConnectionState INTEGER,
|
||||
tcpConnectionProcess Unsigned32
|
||||
}
|
||||
|
||||
tcpConnectionLocalAddressType OBJECT-TYPE
|
||||
SYNTAX InetAddressType
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The address type of tcpConnectionLocalAddress."
|
||||
::= { tcpConnectionEntry 1 }
|
||||
|
||||
tcpConnectionLocalAddress OBJECT-TYPE
|
||||
SYNTAX InetAddress
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The local IP address for this TCP connection. The type
|
||||
of this address is determined by the value of
|
||||
tcpConnectionLocalAddressType.
|
||||
|
||||
As this object is used in the index for the
|
||||
tcpConnectionTable, implementors should be
|
||||
careful not to create entries that would result in OIDs
|
||||
with more than 128 subidentifiers; otherwise the information
|
||||
cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3."
|
||||
::= { tcpConnectionEntry 2 }
|
||||
|
||||
tcpConnectionLocalPort OBJECT-TYPE
|
||||
SYNTAX InetPortNumber
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The local port number for this TCP connection."
|
||||
::= { tcpConnectionEntry 3 }
|
||||
|
||||
tcpConnectionRemAddressType OBJECT-TYPE
|
||||
|
||||
|
||||
|
||||
SYNTAX InetAddressType
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The address type of tcpConnectionRemAddress."
|
||||
::= { tcpConnectionEntry 4 }
|
||||
|
||||
tcpConnectionRemAddress OBJECT-TYPE
|
||||
SYNTAX InetAddress
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The remote IP address for this TCP connection. The type
|
||||
of this address is determined by the value of
|
||||
tcpConnectionRemAddressType.
|
||||
|
||||
As this object is used in the index for the
|
||||
tcpConnectionTable, implementors should be
|
||||
careful not to create entries that would result in OIDs
|
||||
with more than 128 subidentifiers; otherwise the information
|
||||
cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3."
|
||||
::= { tcpConnectionEntry 5 }
|
||||
|
||||
tcpConnectionRemPort OBJECT-TYPE
|
||||
SYNTAX InetPortNumber
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The remote port number for this TCP connection."
|
||||
::= { tcpConnectionEntry 6 }
|
||||
|
||||
tcpConnectionState OBJECT-TYPE
|
||||
SYNTAX INTEGER {
|
||||
closed(1),
|
||||
listen(2),
|
||||
synSent(3),
|
||||
synReceived(4),
|
||||
established(5),
|
||||
finWait1(6),
|
||||
finWait2(7),
|
||||
closeWait(8),
|
||||
lastAck(9),
|
||||
closing(10),
|
||||
timeWait(11),
|
||||
deleteTCB(12)
|
||||
}
|
||||
MAX-ACCESS read-write
|
||||
STATUS current
|
||||
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
"The state of this TCP connection.
|
||||
|
||||
The value listen(2) is included only for parallelism to the
|
||||
old tcpConnTable and should not be used. A connection in
|
||||
LISTEN state should be present in the tcpListenerTable.
|
||||
|
||||
The only value that may be set by a management station is
|
||||
deleteTCB(12). Accordingly, it is appropriate for an agent
|
||||
to return a `badValue' response if a management station
|
||||
attempts to set this object to any other value.
|
||||
|
||||
If a management station sets this object to the value
|
||||
deleteTCB(12), then the TCB (as defined in [RFC793]) of
|
||||
the corresponding connection on the managed node is
|
||||
deleted, resulting in immediate termination of the
|
||||
connection.
|
||||
|
||||
As an implementation-specific option, a RST segment may be
|
||||
sent from the managed node to the other TCP endpoint (note,
|
||||
however, that RST segments are not sent reliably)."
|
||||
::= { tcpConnectionEntry 7 }
|
||||
|
||||
tcpConnectionProcess OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The system's process ID for the process associated with
|
||||
this connection, or zero if there is no such process. This
|
||||
value is expected to be the same as HOST-RESOURCES-MIB::
|
||||
hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some
|
||||
row in the appropriate tables."
|
||||
::= { tcpConnectionEntry 8 }
|
||||
|
||||
-- The TCP Listener table
|
||||
|
||||
tcpListenerTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF TcpListenerEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A table containing information about TCP listeners. A
|
||||
listening application can be represented in three
|
||||
possible ways:
|
||||
|
||||
1. An application that is willing to accept both IPv4 and
|
||||
IPv6 datagrams is represented by
|
||||
|
||||
|
||||
|
||||
a tcpListenerLocalAddressType of unknown (0) and
|
||||
a tcpListenerLocalAddress of ''h (a zero-length
|
||||
octet-string).
|
||||
|
||||
2. An application that is willing to accept only IPv4 or
|
||||
IPv6 datagrams is represented by a
|
||||
tcpListenerLocalAddressType of the appropriate address
|
||||
type and a tcpListenerLocalAddress of '0.0.0.0' or '::'
|
||||
respectively.
|
||||
|
||||
3. An application that is listening for data destined
|
||||
only to a specific IP address, but from any remote
|
||||
system, is represented by a tcpListenerLocalAddressType
|
||||
of an appropriate address type, with
|
||||
tcpListenerLocalAddress as the specific local address.
|
||||
|
||||
NOTE: The address type in this table represents the
|
||||
address type used for the communication, irrespective
|
||||
of the higher-layer abstraction. For example, an
|
||||
application using IPv6 'sockets' to communicate via
|
||||
IPv4 between ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would
|
||||
use InetAddressType ipv4(1))."
|
||||
::= { tcp 20 }
|
||||
|
||||
tcpListenerEntry OBJECT-TYPE
|
||||
SYNTAX TcpListenerEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A conceptual row of the tcpListenerTable containing
|
||||
information about a particular TCP listener."
|
||||
INDEX { tcpListenerLocalAddressType,
|
||||
tcpListenerLocalAddress,
|
||||
tcpListenerLocalPort }
|
||||
::= { tcpListenerTable 1 }
|
||||
|
||||
TcpListenerEntry ::= SEQUENCE {
|
||||
tcpListenerLocalAddressType InetAddressType,
|
||||
tcpListenerLocalAddress InetAddress,
|
||||
tcpListenerLocalPort InetPortNumber,
|
||||
tcpListenerProcess Unsigned32
|
||||
}
|
||||
|
||||
tcpListenerLocalAddressType OBJECT-TYPE
|
||||
SYNTAX InetAddressType
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
|
||||
|
||||
|
||||
"The address type of tcpListenerLocalAddress. The value
|
||||
should be unknown (0) if connection initiations to all
|
||||
local IP addresses are accepted."
|
||||
::= { tcpListenerEntry 1 }
|
||||
|
||||
tcpListenerLocalAddress OBJECT-TYPE
|
||||
SYNTAX InetAddress
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The local IP address for this TCP connection.
|
||||
|
||||
The value of this object can be represented in three
|
||||
possible ways, depending on the characteristics of the
|
||||
listening application:
|
||||
|
||||
1. For an application willing to accept both IPv4 and
|
||||
IPv6 datagrams, the value of this object must be
|
||||
''h (a zero-length octet-string), with the value
|
||||
of the corresponding tcpListenerLocalAddressType
|
||||
object being unknown (0).
|
||||
|
||||
2. For an application willing to accept only IPv4 or
|
||||
IPv6 datagrams, the value of this object must be
|
||||
'0.0.0.0' or '::' respectively, with
|
||||
tcpListenerLocalAddressType representing the
|
||||
appropriate address type.
|
||||
|
||||
3. For an application which is listening for data
|
||||
destined only to a specific IP address, the value
|
||||
of this object is the specific local address, with
|
||||
tcpListenerLocalAddressType representing the
|
||||
appropriate address type.
|
||||
|
||||
As this object is used in the index for the
|
||||
tcpListenerTable, implementors should be
|
||||
careful not to create entries that would result in OIDs
|
||||
with more than 128 subidentifiers; otherwise the information
|
||||
cannot be accessed, using SNMPv1, SNMPv2c, or SNMPv3."
|
||||
::= { tcpListenerEntry 2 }
|
||||
|
||||
tcpListenerLocalPort OBJECT-TYPE
|
||||
SYNTAX InetPortNumber
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The local port number for this TCP connection."
|
||||
::= { tcpListenerEntry 3 }
|
||||
|
||||
|
||||
|
||||
tcpListenerProcess OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The system's process ID for the process associated with
|
||||
this listener, or zero if there is no such process. This
|
||||
value is expected to be the same as HOST-RESOURCES-MIB::
|
||||
hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some
|
||||
row in the appropriate tables."
|
||||
::= { tcpListenerEntry 4 }
|
||||
|
||||
|
||||
-- The deprecated TCP Connection table
|
||||
|
||||
tcpConnTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF TcpConnEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"A table containing information about existing IPv4-specific
|
||||
TCP connections or listeners. This table has been
|
||||
deprecated in favor of the version neutral
|
||||
tcpConnectionTable."
|
||||
::= { tcp 13 }
|
||||
|
||||
tcpConnEntry OBJECT-TYPE
|
||||
SYNTAX TcpConnEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"A conceptual row of the tcpConnTable containing information
|
||||
about a particular current IPv4 TCP connection. Each row
|
||||
of this table is transient in that it ceases to exist when
|
||||
(or soon after) the connection makes the transition to the
|
||||
CLOSED state."
|
||||
INDEX { tcpConnLocalAddress,
|
||||
tcpConnLocalPort,
|
||||
tcpConnRemAddress,
|
||||
tcpConnRemPort }
|
||||
::= { tcpConnTable 1 }
|
||||
|
||||
TcpConnEntry ::= SEQUENCE {
|
||||
tcpConnState INTEGER,
|
||||
tcpConnLocalAddress IpAddress,
|
||||
tcpConnLocalPort Integer32,
|
||||
tcpConnRemAddress IpAddress,
|
||||
tcpConnRemPort Integer32
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
tcpConnState OBJECT-TYPE
|
||||
SYNTAX INTEGER {
|
||||
closed(1),
|
||||
listen(2),
|
||||
synSent(3),
|
||||
synReceived(4),
|
||||
established(5),
|
||||
finWait1(6),
|
||||
finWait2(7),
|
||||
closeWait(8),
|
||||
lastAck(9),
|
||||
closing(10),
|
||||
timeWait(11),
|
||||
deleteTCB(12)
|
||||
}
|
||||
MAX-ACCESS read-write
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The state of this TCP connection.
|
||||
|
||||
The only value that may be set by a management station is
|
||||
deleteTCB(12). Accordingly, it is appropriate for an agent
|
||||
to return a `badValue' response if a management station
|
||||
attempts to set this object to any other value.
|
||||
|
||||
If a management station sets this object to the value
|
||||
deleteTCB(12), then the TCB (as defined in [RFC793]) of
|
||||
the corresponding connection on the managed node is
|
||||
deleted, resulting in immediate termination of the
|
||||
connection.
|
||||
|
||||
As an implementation-specific option, a RST segment may be
|
||||
sent from the managed node to the other TCP endpoint (note,
|
||||
however, that RST segments are not sent reliably)."
|
||||
::= { tcpConnEntry 1 }
|
||||
|
||||
tcpConnLocalAddress OBJECT-TYPE
|
||||
SYNTAX IpAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The local IP address for this TCP connection. In the case
|
||||
of a connection in the listen state willing to
|
||||
accept connections for any IP interface associated with the
|
||||
node, the value 0.0.0.0 is used."
|
||||
::= { tcpConnEntry 2 }
|
||||
|
||||
|
||||
|
||||
tcpConnLocalPort OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS read-only
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The local port number for this TCP connection."
|
||||
::= { tcpConnEntry 3 }
|
||||
|
||||
tcpConnRemAddress OBJECT-TYPE
|
||||
SYNTAX IpAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The remote IP address for this TCP connection."
|
||||
::= { tcpConnEntry 4 }
|
||||
|
||||
tcpConnRemPort OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS read-only
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The remote port number for this TCP connection."
|
||||
::= { tcpConnEntry 5 }
|
||||
|
||||
-- conformance information
|
||||
|
||||
tcpMIBConformance OBJECT IDENTIFIER ::= { tcpMIB 2 }
|
||||
|
||||
tcpMIBCompliances OBJECT IDENTIFIER ::= { tcpMIBConformance 1 }
|
||||
tcpMIBGroups OBJECT IDENTIFIER ::= { tcpMIBConformance 2 }
|
||||
|
||||
-- compliance statements
|
||||
|
||||
tcpMIBCompliance2 MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for systems that implement TCP.
|
||||
|
||||
A number of INDEX objects cannot be
|
||||
represented in the form of OBJECT clauses in SMIv2 but
|
||||
have the following compliance requirements,
|
||||
expressed in OBJECT clause form in this description
|
||||
clause:
|
||||
|
||||
-- OBJECT tcpConnectionLocalAddressType
|
||||
-- SYNTAX InetAddressType { ipv4(1), ipv6(2) }
|
||||
-- DESCRIPTION
|
||||
-- This MIB requires support for only global IPv4
|
||||
|
||||
|
||||
|
||||
-- and IPv6 address types.
|
||||
--
|
||||
-- OBJECT tcpConnectionRemAddressType
|
||||
-- SYNTAX InetAddressType { ipv4(1), ipv6(2) }
|
||||
-- DESCRIPTION
|
||||
-- This MIB requires support for only global IPv4
|
||||
-- and IPv6 address types.
|
||||
--
|
||||
-- OBJECT tcpListenerLocalAddressType
|
||||
-- SYNTAX InetAddressType { unknown(0), ipv4(1),
|
||||
-- ipv6(2) }
|
||||
-- DESCRIPTION
|
||||
-- This MIB requires support for only global IPv4
|
||||
-- and IPv6 address types. The type unknown also
|
||||
-- needs to be supported to identify a special
|
||||
-- case in the listener table: a listen using
|
||||
-- both IPv4 and IPv6 addresses on the device.
|
||||
--
|
||||
"
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { tcpBaseGroup, tcpConnectionGroup,
|
||||
tcpListenerGroup }
|
||||
GROUP tcpHCGroup
|
||||
DESCRIPTION
|
||||
"This group is mandatory for systems that are capable
|
||||
of receiving or transmitting more than 1 million TCP
|
||||
segments per second. 1 million segments per second will
|
||||
cause a Counter32 to wrap in just over an hour."
|
||||
OBJECT tcpConnectionState
|
||||
SYNTAX INTEGER { closed(1), listen(2), synSent(3),
|
||||
synReceived(4), established(5),
|
||||
finWait1(6), finWait2(7), closeWait(8),
|
||||
lastAck(9), closing(10), timeWait(11) }
|
||||
MIN-ACCESS read-only
|
||||
DESCRIPTION
|
||||
"Write access is not required, nor is support for the value
|
||||
deleteTCB (12)."
|
||||
::= { tcpMIBCompliances 2 }
|
||||
|
||||
tcpMIBCompliance MODULE-COMPLIANCE
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The compliance statement for IPv4-only systems that
|
||||
implement TCP. In order to be IP version independent, this
|
||||
compliance statement is deprecated in favor of
|
||||
tcpMIBCompliance2. However, agents are still encouraged
|
||||
to implement these objects in order to interoperate with
|
||||
the deployed base of managers."
|
||||
|
||||
|
||||
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { tcpGroup }
|
||||
OBJECT tcpConnState
|
||||
MIN-ACCESS read-only
|
||||
DESCRIPTION
|
||||
"Write access is not required."
|
||||
::= { tcpMIBCompliances 1 }
|
||||
|
||||
|
||||
-- units of conformance
|
||||
|
||||
tcpGroup OBJECT-GROUP
|
||||
OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax,
|
||||
tcpMaxConn, tcpActiveOpens,
|
||||
tcpPassiveOpens, tcpAttemptFails,
|
||||
tcpEstabResets, tcpCurrEstab, tcpInSegs,
|
||||
tcpOutSegs, tcpRetransSegs, tcpConnState,
|
||||
tcpConnLocalAddress, tcpConnLocalPort,
|
||||
tcpConnRemAddress, tcpConnRemPort,
|
||||
tcpInErrs, tcpOutRsts }
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The tcp group of objects providing for management of TCP
|
||||
entities."
|
||||
::= { tcpMIBGroups 1 }
|
||||
|
||||
tcpBaseGroup OBJECT-GROUP
|
||||
OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax,
|
||||
tcpMaxConn, tcpActiveOpens,
|
||||
tcpPassiveOpens, tcpAttemptFails,
|
||||
tcpEstabResets, tcpCurrEstab, tcpInSegs,
|
||||
tcpOutSegs, tcpRetransSegs,
|
||||
tcpInErrs, tcpOutRsts }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The group of counters common to TCP entities."
|
||||
::= { tcpMIBGroups 2 }
|
||||
|
||||
tcpConnectionGroup OBJECT-GROUP
|
||||
OBJECTS { tcpConnectionState, tcpConnectionProcess }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The group provides general information about TCP
|
||||
connections."
|
||||
::= { tcpMIBGroups 3 }
|
||||
|
||||
tcpListenerGroup OBJECT-GROUP
|
||||
OBJECTS { tcpListenerProcess }
|
||||
|
||||
|
||||
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This group has objects providing general information about
|
||||
TCP listeners."
|
||||
::= { tcpMIBGroups 4 }
|
||||
|
||||
tcpHCGroup OBJECT-GROUP
|
||||
OBJECTS { tcpHCInSegs, tcpHCOutSegs }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The group of objects providing for counters of high speed
|
||||
TCP implementations."
|
||||
::= { tcpMIBGroups 5 }
|
||||
|
||||
END
|
579
contrib/apps/LwipMibCompiler/Mibs/UDP-MIB
Normal file
579
contrib/apps/LwipMibCompiler/Mibs/UDP-MIB
Normal file
@ -0,0 +1,579 @@
|
||||
UDP-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, Counter64,
|
||||
Unsigned32, IpAddress, mib-2 FROM SNMPv2-SMI
|
||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
||||
InetAddress, InetAddressType,
|
||||
InetPortNumber FROM INET-ADDRESS-MIB;
|
||||
|
||||
udpMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200505200000Z" -- May 20, 2005
|
||||
ORGANIZATION
|
||||
"IETF IPv6 Working Group
|
||||
http://www.ietf.org/html.charters/ipv6-charter.html"
|
||||
CONTACT-INFO
|
||||
"Bill Fenner (editor)
|
||||
|
||||
AT&T Labs -- Research
|
||||
75 Willow Rd.
|
||||
Menlo Park, CA 94025
|
||||
|
||||
Phone: +1 650 330-7893
|
||||
Email: <fenner@research.att.com>
|
||||
|
||||
John Flick (editor)
|
||||
|
||||
Hewlett-Packard Company
|
||||
8000 Foothills Blvd. M/S 5557
|
||||
Roseville, CA 95747
|
||||
|
||||
Phone: +1 916 785 4018
|
||||
Email: <john.flick@hp.com>
|
||||
|
||||
Send comments to <ipv6@ietf.org>"
|
||||
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
"The MIB module for managing UDP implementations.
|
||||
Copyright (C) The Internet Society (2005). This
|
||||
version of this MIB module is part of RFC 4113;
|
||||
see the RFC itself for full legal notices."
|
||||
REVISION "200505200000Z" -- May 20, 2005
|
||||
DESCRIPTION
|
||||
"IP version neutral revision, incorporating the
|
||||
following revisions:
|
||||
|
||||
- Added udpHCInDatagrams and udpHCOutDatagrams in order
|
||||
to provide high-capacity counters for fast networks.
|
||||
- Added text to the descriptions of all counter objects
|
||||
to indicate how discontinuities are detected.
|
||||
- Deprecated the IPv4-specific udpTable and replaced it
|
||||
with the version neutral udpEndpointTable. This
|
||||
table includes support for connected UDP endpoints
|
||||
and support for identification of the operating
|
||||
system process associated with a UDP endpoint.
|
||||
- Deprecated the udpGroup and replaced it with object
|
||||
groups representing the current set of objects.
|
||||
- Deprecated udpMIBCompliance and replaced it with
|
||||
udpMIBCompliance2, which includes the compliance
|
||||
information for the new object groups.
|
||||
|
||||
This version published as RFC 4113."
|
||||
REVISION "199411010000Z" -- November 1, 1994
|
||||
DESCRIPTION
|
||||
"Initial SMIv2 version, published as RFC 2013."
|
||||
REVISION "199103310000Z" -- March 31, 1991
|
||||
DESCRIPTION
|
||||
"The initial revision of this MIB module was part of
|
||||
MIB-II, published as RFC 1213."
|
||||
::= { mib-2 50 }
|
||||
|
||||
-- the UDP group
|
||||
|
||||
udp OBJECT IDENTIFIER ::= { mib-2 7 }
|
||||
|
||||
udpInDatagrams OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of UDP datagrams delivered to UDP
|
||||
users.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Discontinuities in the value of this counter can occur
|
||||
at re-initialization of the management system, and at
|
||||
other times as indicated by discontinuities in the
|
||||
value of sysUpTime."
|
||||
::= { udp 1 }
|
||||
|
||||
udpNoPorts OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of received UDP datagrams for which
|
||||
there was no application at the destination port.
|
||||
|
||||
Discontinuities in the value of this counter can occur
|
||||
at re-initialization of the management system, and at
|
||||
other times as indicated by discontinuities in the
|
||||
value of sysUpTime."
|
||||
::= { udp 2 }
|
||||
|
||||
udpInErrors OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of received UDP datagrams that could not be
|
||||
delivered for reasons other than the lack of an
|
||||
application at the destination port.
|
||||
|
||||
Discontinuities in the value of this counter can occur
|
||||
at re-initialization of the management system, and at
|
||||
other times as indicated by discontinuities in the
|
||||
value of sysUpTime."
|
||||
::= { udp 3 }
|
||||
|
||||
udpOutDatagrams OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of UDP datagrams sent from this
|
||||
entity.
|
||||
|
||||
Discontinuities in the value of this counter can occur
|
||||
at re-initialization of the management system, and at
|
||||
other times as indicated by discontinuities in the
|
||||
value of sysUpTime."
|
||||
::= { udp 4 }
|
||||
|
||||
|
||||
|
||||
udpHCInDatagrams OBJECT-TYPE
|
||||
SYNTAX Counter64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of UDP datagrams delivered to UDP
|
||||
users, for devices that can receive more than 1
|
||||
million UDP datagrams per second.
|
||||
|
||||
Discontinuities in the value of this counter can occur
|
||||
at re-initialization of the management system, and at
|
||||
other times as indicated by discontinuities in the
|
||||
value of sysUpTime."
|
||||
::= { udp 8 }
|
||||
|
||||
udpHCOutDatagrams OBJECT-TYPE
|
||||
SYNTAX Counter64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The total number of UDP datagrams sent from this
|
||||
entity, for devices that can transmit more than 1
|
||||
million UDP datagrams per second.
|
||||
|
||||
Discontinuities in the value of this counter can occur
|
||||
at re-initialization of the management system, and at
|
||||
other times as indicated by discontinuities in the
|
||||
value of sysUpTime."
|
||||
::= { udp 9 }
|
||||
|
||||
--
|
||||
-- { udp 6 } was defined as the ipv6UdpTable in RFC2454's
|
||||
-- IPV6-UDP-MIB. This RFC obsoletes RFC 2454, so { udp 6 } is
|
||||
-- obsoleted.
|
||||
--
|
||||
|
||||
-- The UDP "Endpoint" table.
|
||||
|
||||
udpEndpointTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF UdpEndpointEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A table containing information about this entity's UDP
|
||||
endpoints on which a local application is currently
|
||||
accepting or sending datagrams.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
The address type in this table represents the address
|
||||
type used for the communication, irrespective of the
|
||||
higher-layer abstraction. For example, an application
|
||||
using IPv6 'sockets' to communicate via IPv4 between
|
||||
::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use
|
||||
InetAddressType ipv4(1).
|
||||
|
||||
Unlike the udpTable in RFC 2013, this table also allows
|
||||
the representation of an application that completely
|
||||
specifies both local and remote addresses and ports. A
|
||||
listening application is represented in three possible
|
||||
ways:
|
||||
|
||||
1) An application that is willing to accept both IPv4
|
||||
and IPv6 datagrams is represented by a
|
||||
udpEndpointLocalAddressType of unknown(0) and a
|
||||
udpEndpointLocalAddress of ''h (a zero-length
|
||||
octet-string).
|
||||
|
||||
2) An application that is willing to accept only IPv4
|
||||
or only IPv6 datagrams is represented by a
|
||||
udpEndpointLocalAddressType of the appropriate
|
||||
address type and a udpEndpointLocalAddress of
|
||||
'0.0.0.0' or '::' respectively.
|
||||
|
||||
3) An application that is listening for datagrams only
|
||||
for a specific IP address but from any remote
|
||||
system is represented by a
|
||||
udpEndpointLocalAddressType of the appropriate
|
||||
address type, with udpEndpointLocalAddress
|
||||
specifying the local address.
|
||||
|
||||
In all cases where the remote is a wildcard, the
|
||||
udpEndpointRemoteAddressType is unknown(0), the
|
||||
udpEndpointRemoteAddress is ''h (a zero-length
|
||||
octet-string), and the udpEndpointRemotePort is 0.
|
||||
|
||||
If the operating system is demultiplexing UDP packets
|
||||
by remote address and port, or if the application has
|
||||
'connected' the socket specifying a default remote
|
||||
address and port, the udpEndpointRemote* values should
|
||||
be used to reflect this."
|
||||
::= { udp 7 }
|
||||
|
||||
udpEndpointEntry OBJECT-TYPE
|
||||
SYNTAX UdpEndpointEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
"Information about a particular current UDP endpoint.
|
||||
|
||||
Implementers need to be aware that if the total number
|
||||
of elements (octets or sub-identifiers) in
|
||||
udpEndpointLocalAddress and udpEndpointRemoteAddress
|
||||
exceeds 111, then OIDs of column instances in this table
|
||||
will have more than 128 sub-identifiers and cannot be
|
||||
accessed using SNMPv1, SNMPv2c, or SNMPv3."
|
||||
INDEX { udpEndpointLocalAddressType,
|
||||
udpEndpointLocalAddress,
|
||||
udpEndpointLocalPort,
|
||||
udpEndpointRemoteAddressType,
|
||||
udpEndpointRemoteAddress,
|
||||
udpEndpointRemotePort,
|
||||
udpEndpointInstance }
|
||||
::= { udpEndpointTable 1 }
|
||||
|
||||
UdpEndpointEntry ::= SEQUENCE {
|
||||
udpEndpointLocalAddressType InetAddressType,
|
||||
udpEndpointLocalAddress InetAddress,
|
||||
udpEndpointLocalPort InetPortNumber,
|
||||
udpEndpointRemoteAddressType InetAddressType,
|
||||
udpEndpointRemoteAddress InetAddress,
|
||||
udpEndpointRemotePort InetPortNumber,
|
||||
udpEndpointInstance Unsigned32,
|
||||
udpEndpointProcess Unsigned32
|
||||
}
|
||||
|
||||
udpEndpointLocalAddressType OBJECT-TYPE
|
||||
SYNTAX InetAddressType
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The address type of udpEndpointLocalAddress. Only
|
||||
IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or
|
||||
unknown(0) if datagrams for all local IP addresses are
|
||||
accepted."
|
||||
::= { udpEndpointEntry 1 }
|
||||
|
||||
udpEndpointLocalAddress OBJECT-TYPE
|
||||
SYNTAX InetAddress
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The local IP address for this UDP endpoint.
|
||||
|
||||
The value of this object can be represented in three
|
||||
|
||||
|
||||
|
||||
possible ways, depending on the characteristics of the
|
||||
listening application:
|
||||
|
||||
1. For an application that is willing to accept both
|
||||
IPv4 and IPv6 datagrams, the value of this object
|
||||
must be ''h (a zero-length octet-string), with
|
||||
the value of the corresponding instance of the
|
||||
udpEndpointLocalAddressType object being unknown(0).
|
||||
|
||||
2. For an application that is willing to accept only IPv4
|
||||
or only IPv6 datagrams, the value of this object
|
||||
must be '0.0.0.0' or '::', respectively, while the
|
||||
corresponding instance of the
|
||||
udpEndpointLocalAddressType object represents the
|
||||
appropriate address type.
|
||||
|
||||
3. For an application that is listening for data
|
||||
destined only to a specific IP address, the value
|
||||
of this object is the specific IP address for which
|
||||
this node is receiving packets, with the
|
||||
corresponding instance of the
|
||||
udpEndpointLocalAddressType object representing the
|
||||
appropriate address type.
|
||||
|
||||
As this object is used in the index for the
|
||||
udpEndpointTable, implementors of this table should be
|
||||
careful not to create entries that would result in OIDs
|
||||
with more than 128 subidentifiers; else the information
|
||||
cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3."
|
||||
::= { udpEndpointEntry 2 }
|
||||
|
||||
udpEndpointLocalPort OBJECT-TYPE
|
||||
SYNTAX InetPortNumber
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The local port number for this UDP endpoint."
|
||||
::= { udpEndpointEntry 3 }
|
||||
|
||||
udpEndpointRemoteAddressType OBJECT-TYPE
|
||||
SYNTAX InetAddressType
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The address type of udpEndpointRemoteAddress. Only
|
||||
IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or
|
||||
unknown(0) if datagrams for all remote IP addresses are
|
||||
accepted. Also, note that some combinations of
|
||||
|
||||
|
||||
|
||||
udpEndpointLocalAdressType and
|
||||
udpEndpointRemoteAddressType are not supported. In
|
||||
particular, if the value of this object is not
|
||||
unknown(0), it is expected to always refer to the
|
||||
same IP version as udpEndpointLocalAddressType."
|
||||
::= { udpEndpointEntry 4 }
|
||||
|
||||
udpEndpointRemoteAddress OBJECT-TYPE
|
||||
SYNTAX InetAddress
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The remote IP address for this UDP endpoint. If
|
||||
datagrams from any remote system are to be accepted,
|
||||
this value is ''h (a zero-length octet-string).
|
||||
Otherwise, it has the type described by
|
||||
udpEndpointRemoteAddressType and is the address of the
|
||||
remote system from which datagrams are to be accepted
|
||||
(or to which all datagrams will be sent).
|
||||
|
||||
As this object is used in the index for the
|
||||
udpEndpointTable, implementors of this table should be
|
||||
careful not to create entries that would result in OIDs
|
||||
with more than 128 subidentifiers; else the information
|
||||
cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3."
|
||||
::= { udpEndpointEntry 5 }
|
||||
|
||||
udpEndpointRemotePort OBJECT-TYPE
|
||||
SYNTAX InetPortNumber
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The remote port number for this UDP endpoint. If
|
||||
datagrams from any remote system are to be accepted,
|
||||
this value is zero."
|
||||
::= { udpEndpointEntry 6 }
|
||||
|
||||
udpEndpointInstance OBJECT-TYPE
|
||||
SYNTAX Unsigned32 (1..'ffffffff'h)
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The instance of this tuple. This object is used to
|
||||
distinguish among multiple processes 'connected' to
|
||||
the same UDP endpoint. For example, on a system
|
||||
implementing the BSD sockets interface, this would be
|
||||
used to support the SO_REUSEADDR and SO_REUSEPORT
|
||||
socket options."
|
||||
|
||||
|
||||
|
||||
::= { udpEndpointEntry 7 }
|
||||
|
||||
udpEndpointProcess OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The system's process ID for the process associated with
|
||||
this endpoint, or zero if there is no such process.
|
||||
This value is expected to be the same as
|
||||
HOST-RESOURCES-MIB::hrSWRunIndex or SYSAPPL-MIB::
|
||||
sysApplElmtRunIndex for some row in the appropriate
|
||||
tables."
|
||||
::= { udpEndpointEntry 8 }
|
||||
|
||||
-- The deprecated UDP Listener table
|
||||
|
||||
-- The deprecated UDP listener table only contains information
|
||||
-- about this entity's IPv4 UDP end-points on which a local
|
||||
-- application is currently accepting datagrams. It does not
|
||||
-- provide more detailed connection information, or information
|
||||
-- about IPv6 endpoints.
|
||||
|
||||
udpTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF UdpEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"A table containing IPv4-specific UDP listener
|
||||
information. It contains information about all local
|
||||
IPv4 UDP end-points on which an application is
|
||||
currently accepting datagrams. This table has been
|
||||
deprecated in favor of the version neutral
|
||||
udpEndpointTable."
|
||||
::= { udp 5 }
|
||||
|
||||
udpEntry OBJECT-TYPE
|
||||
SYNTAX UdpEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"Information about a particular current UDP listener."
|
||||
INDEX { udpLocalAddress, udpLocalPort }
|
||||
::= { udpTable 1 }
|
||||
|
||||
UdpEntry ::= SEQUENCE {
|
||||
udpLocalAddress IpAddress,
|
||||
udpLocalPort Integer32
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
udpLocalAddress OBJECT-TYPE
|
||||
SYNTAX IpAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The local IP address for this UDP listener. In the
|
||||
case of a UDP listener that is willing to accept
|
||||
datagrams for any IP interface associated with the
|
||||
node, the value 0.0.0.0 is used."
|
||||
::= { udpEntry 1 }
|
||||
|
||||
udpLocalPort OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS read-only
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The local port number for this UDP listener."
|
||||
::= { udpEntry 2 }
|
||||
|
||||
-- conformance information
|
||||
|
||||
udpMIBConformance OBJECT IDENTIFIER ::= { udpMIB 2 }
|
||||
udpMIBCompliances OBJECT IDENTIFIER ::= { udpMIBConformance 1 }
|
||||
udpMIBGroups OBJECT IDENTIFIER ::= { udpMIBConformance 2 }
|
||||
|
||||
-- compliance statements
|
||||
|
||||
udpMIBCompliance2 MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for systems that implement
|
||||
UDP.
|
||||
|
||||
There are a number of INDEX objects that cannot be
|
||||
represented in the form of OBJECT clauses in SMIv2, but
|
||||
for which we have the following compliance
|
||||
requirements, expressed in OBJECT clause form in this
|
||||
description clause:
|
||||
|
||||
-- OBJECT udpEndpointLocalAddressType
|
||||
-- SYNTAX InetAddressType { unknown(0), ipv4(1),
|
||||
-- ipv6(2), ipv4z(3),
|
||||
-- ipv6z(4) }
|
||||
-- DESCRIPTION
|
||||
-- Support for dns(5) is not required.
|
||||
-- OBJECT udpEndpointLocalAddress
|
||||
|
||||
|
||||
|
||||
-- SYNTAX InetAddress (SIZE(0|4|8|16|20))
|
||||
-- DESCRIPTION
|
||||
-- Support is only required for zero-length
|
||||
-- octet-strings, and for scoped and unscoped
|
||||
-- IPv4 and IPv6 addresses.
|
||||
-- OBJECT udpEndpointRemoteAddressType
|
||||
-- SYNTAX InetAddressType { unknown(0), ipv4(1),
|
||||
-- ipv6(2), ipv4z(3),
|
||||
-- ipv6z(4) }
|
||||
-- DESCRIPTION
|
||||
-- Support for dns(5) is not required.
|
||||
-- OBJECT udpEndpointRemoteAddress
|
||||
-- SYNTAX InetAddress (SIZE(0|4|8|16|20))
|
||||
-- DESCRIPTION
|
||||
-- Support is only required for zero-length
|
||||
-- octet-strings, and for scoped and unscoped
|
||||
-- IPv4 and IPv6 addresses.
|
||||
"
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { udpBaseGroup, udpEndpointGroup }
|
||||
GROUP udpHCGroup
|
||||
DESCRIPTION
|
||||
"This group is mandatory for systems that
|
||||
are capable of receiving or transmitting more than
|
||||
1 million UDP datagrams per second. 1 million
|
||||
datagrams per second will cause a Counter32 to
|
||||
wrap in just over an hour."
|
||||
::= { udpMIBCompliances 2 }
|
||||
|
||||
udpMIBCompliance MODULE-COMPLIANCE
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The compliance statement for IPv4-only systems that
|
||||
implement UDP. For IP version independence, this
|
||||
compliance statement is deprecated in favor of
|
||||
udpMIBCompliance2. However, agents are still
|
||||
encouraged to implement these objects in order to
|
||||
interoperate with the deployed base of managers."
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { udpGroup }
|
||||
::= { udpMIBCompliances 1 }
|
||||
|
||||
-- units of conformance
|
||||
|
||||
udpGroup OBJECT-GROUP
|
||||
OBJECTS { udpInDatagrams, udpNoPorts,
|
||||
udpInErrors, udpOutDatagrams,
|
||||
udpLocalAddress, udpLocalPort }
|
||||
|
||||
|
||||
|
||||
STATUS deprecated
|
||||
DESCRIPTION
|
||||
"The deprecated group of objects providing for
|
||||
management of UDP over IPv4."
|
||||
::= { udpMIBGroups 1 }
|
||||
|
||||
udpBaseGroup OBJECT-GROUP
|
||||
OBJECTS { udpInDatagrams, udpNoPorts, udpInErrors,
|
||||
udpOutDatagrams }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The group of objects providing for counters of UDP
|
||||
statistics."
|
||||
::= { udpMIBGroups 2 }
|
||||
|
||||
udpHCGroup OBJECT-GROUP
|
||||
OBJECTS { udpHCInDatagrams, udpHCOutDatagrams }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The group of objects providing for counters of high
|
||||
speed UDP implementations."
|
||||
::= { udpMIBGroups 3 }
|
||||
|
||||
udpEndpointGroup OBJECT-GROUP
|
||||
OBJECTS { udpEndpointProcess }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The group of objects providing for the IP version
|
||||
independent management of UDP 'endpoints'."
|
||||
::= { udpMIBGroups 4 }
|
||||
|
||||
END
|
84
contrib/apps/LwipMibCompiler/SharpSnmpLib/Mib/DisplayHint.cs
Normal file
84
contrib/apps/LwipMibCompiler/SharpSnmpLib/Mib/DisplayHint.cs
Normal file
@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
|
||||
namespace Lextm.SharpSnmpLib.Mib
|
||||
{
|
||||
public class DisplayHint
|
||||
{
|
||||
private enum NumType {
|
||||
dec,
|
||||
hex,
|
||||
oct,
|
||||
bin,
|
||||
str
|
||||
}
|
||||
|
||||
private string _str;
|
||||
private NumType _type;
|
||||
private int _decimalPoints = 0;
|
||||
|
||||
public DisplayHint(string str)
|
||||
{
|
||||
_str = str;
|
||||
if (str.StartsWith("d"))
|
||||
{
|
||||
_type = NumType.dec;
|
||||
if (str.StartsWith("d-"))
|
||||
{
|
||||
_decimalPoints = Convert.ToInt32(str.Substring(2));
|
||||
}
|
||||
}
|
||||
else if (str.StartsWith("o"))
|
||||
{
|
||||
_type = NumType.oct;
|
||||
}
|
||||
else if (str.StartsWith("h"))
|
||||
{
|
||||
_type = NumType.hex;
|
||||
}
|
||||
else if (str.StartsWith("b"))
|
||||
{
|
||||
_type = NumType.bin;
|
||||
}
|
||||
else
|
||||
{
|
||||
_type = NumType.str;
|
||||
foreach (char c in str)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _str;
|
||||
}
|
||||
|
||||
internal object Decode(int i)
|
||||
{
|
||||
switch (_type)
|
||||
{
|
||||
case NumType.dec:
|
||||
if (_decimalPoints == 0)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
return i / Math.Pow(10.0, _decimalPoints);
|
||||
}
|
||||
case NumType.hex:
|
||||
return System.Convert.ToString(i, 16);
|
||||
case NumType.oct:
|
||||
return System.Convert.ToString(i, 8);
|
||||
case NumType.bin:
|
||||
return System.Convert.ToString(i, 2);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: lextm
|
||||
* Date: 2008/5/31
|
||||
* Time: 13:18
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
|
||||
namespace Lextm.SharpSnmpLib.Mib.Elements.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// The AGENT-CAPABILITIES construct is used to specify implementation characteristics of an SNMP agent sub-system with respect to object types and events.
|
||||
/// </summary>
|
||||
public sealed class AgentCapabilities : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates an <see cref="AgentCapabilities"/> instance.
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="header"></param>
|
||||
/// <param name="lexer"></param>
|
||||
public AgentCapabilities(IModule module, SymbolList preAssignSymbols, ISymbolEnumerator symbols)
|
||||
: base(module, preAssignSymbols, symbols)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
using System;
|
||||
|
||||
namespace Lextm.SharpSnmpLib.Mib.Elements.Entities
|
||||
{
|
||||
public abstract class EntityBase: IEntity
|
||||
{
|
||||
private readonly IModule _module;
|
||||
private string _parent;
|
||||
private readonly uint _value;
|
||||
private readonly string _name;
|
||||
|
||||
public EntityBase(IModule module, SymbolList preAssignSymbols, ISymbolEnumerator symbols)
|
||||
{
|
||||
_module = module;
|
||||
_name = preAssignSymbols[0].ToString();
|
||||
|
||||
Lexer.ParseOidValue(symbols, out _parent, out _value);
|
||||
}
|
||||
|
||||
public IModule Module
|
||||
{
|
||||
get { return _module; }
|
||||
}
|
||||
|
||||
public string Parent
|
||||
{
|
||||
get { return _parent; }
|
||||
set { _parent = value; }
|
||||
}
|
||||
|
||||
public uint Value
|
||||
{
|
||||
get { return _value; }
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return _name; }
|
||||
}
|
||||
|
||||
public virtual string Description
|
||||
{
|
||||
get { return string.Empty; }
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user