mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-09-29 07:10:54 +00:00
Merge branch 'master' into STABLE-2_0_0
This commit is contained in:
commit
15b75555a6
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,9 +1,10 @@
|
|||||||
|
/doc/doxygen/output
|
||||||
/src/apps/snmp/LwipMibCompiler/CCodeGeneration/bin/
|
/src/apps/snmp/LwipMibCompiler/CCodeGeneration/bin/
|
||||||
/src/apps/snmp/LwipMibCompiler/CCodeGeneration/obj/
|
/src/apps/snmp/LwipMibCompiler/CCodeGeneration/obj/
|
||||||
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler/bin/
|
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler/bin/
|
||||||
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler/obj/
|
/src/apps/snmp/LwipMibCompiler/LwipMibCompiler/obj/
|
||||||
/src/apps/snmp/LwipMibCompiler/LwipMibViewer/bin/
|
/src/apps/snmp/LwipMibCompiler/MibViewer/bin/
|
||||||
/src/apps/snmp/LwipMibCompiler/LwipMibViewer/obj/
|
/src/apps/snmp/LwipMibCompiler/MibViewer/obj/
|
||||||
/src/apps/snmp/LwipMibCompiler/LwipSnmpCodeGeneration/bin/
|
/src/apps/snmp/LwipMibCompiler/LwipSnmpCodeGeneration/bin/
|
||||||
/src/apps/snmp/LwipMibCompiler/LwipSnmpCodeGeneration/obj/
|
/src/apps/snmp/LwipMibCompiler/LwipSnmpCodeGeneration/obj/
|
||||||
/src/apps/snmp/LwipMibCompiler/SharpSnmpLib/bin/
|
/src/apps/snmp/LwipMibCompiler/SharpSnmpLib/bin/
|
||||||
|
32
CHANGELOG
32
CHANGELOG
@ -6,14 +6,21 @@ HISTORY
|
|||||||
|
|
||||||
++ New features:
|
++ New features:
|
||||||
|
|
||||||
2016-04-05: Simon Goldschmidt:
|
2016-07-27: Simon Goldschmidt
|
||||||
|
* opt.h, timeouts.h/.c: added LWIP_TIMERS_CUSTOM to override the default
|
||||||
|
implementation of timeouts
|
||||||
|
|
||||||
|
2016-07-xx: Dirk Ziegelmeier
|
||||||
|
* Large overhaul of doxygen documentation
|
||||||
|
|
||||||
|
2016-04-05: Simon Goldschmidt
|
||||||
* timers.h/.c: prepare for overriding current timeout implementation: all
|
* timers.h/.c: prepare for overriding current timeout implementation: all
|
||||||
stack-internal caclic timers are avaliable in the lwip_cyclic_timers array
|
stack-internal caclic timers are avaliable in the lwip_cyclic_timers array
|
||||||
|
|
||||||
2016-03-23: Simon Goldschmidt
|
2016-03-23: Simon Goldschmidt
|
||||||
* tcp: call accept-callback with ERR_MEM when allocating a pcb fails on
|
* tcp: call accept-callback with ERR_MEM when allocating a pcb fails on
|
||||||
passive open to inform the application about this error
|
passive open to inform the application about this error
|
||||||
ATTENTION: applications have to handle NULL pcb in accept callback!
|
ATTENTION: applications have to handle NULL pcb in accept callback!
|
||||||
|
|
||||||
2016-02-22: Ivan Delamer
|
2016-02-22: Ivan Delamer
|
||||||
* Initial 6LoWPAN support
|
* Initial 6LoWPAN support
|
||||||
@ -321,6 +328,27 @@ HISTORY
|
|||||||
|
|
||||||
++ Bugfixes:
|
++ Bugfixes:
|
||||||
|
|
||||||
|
2016-07-20: Simon Goldschmidt
|
||||||
|
* memp.h/.c: fixed bug #48442 (memp stats don't work for MEMP_MEM_MALLOC)
|
||||||
|
|
||||||
|
2016-07-21: Simon Goldschmidt (patch by Ambroz Bizjak)
|
||||||
|
* tcp_in.c, tcp_out.c: fixed bug #48543 (TCP sent callback may prematurely
|
||||||
|
report sent data when only part of a segment is acked) and don't include
|
||||||
|
SYN/FIN in snd_buf counter
|
||||||
|
|
||||||
|
2016-07-19: Simon Goldschmidt
|
||||||
|
* etharp.c: fixed bug #48477 (ARP input packet might update static entry)
|
||||||
|
|
||||||
|
2016-07-11: Simon Goldschmidt
|
||||||
|
* tcp_in.c: fixed bug #48476 (TCP sent callback called wrongly due to picking
|
||||||
|
up old pcb->acked
|
||||||
|
|
||||||
|
2016-06-30: Simon Goldschmidt (original patch by Fabian Koch)
|
||||||
|
* tcp_in.c: fixed bug #48170 (Vulnerable to TCP RST spoofing)
|
||||||
|
|
||||||
|
2016-05-20: Dirk Ziegelmeier
|
||||||
|
* sntp.h/.c: Fix return value of sntp_getserver() call to return a pointer
|
||||||
|
|
||||||
2016-04-05: Simon Goldschmidt (patch by Philip Gladstone)
|
2016-04-05: Simon Goldschmidt (patch by Philip Gladstone)
|
||||||
* udp.c: patch #8358: allow more combinations of listening PCB for IPv6
|
* udp.c: patch #8358: allow more combinations of listening PCB for IPv6
|
||||||
|
|
||||||
|
41
README
41
README
@ -10,28 +10,38 @@ while still having a full scale TCP. This making lwIP suitable for use
|
|||||||
in embedded systems with tens of kilobytes of free RAM and room for
|
in embedded systems with tens of kilobytes of free RAM and room for
|
||||||
around 40 kilobytes of code ROM.
|
around 40 kilobytes of code ROM.
|
||||||
|
|
||||||
|
|
||||||
FEATURES
|
FEATURES
|
||||||
|
|
||||||
* IP (Internet Protocol) including packet forwarding over multiple network
|
* IP (Internet Protocol, IPv4 and IPv6) including packet forwarding over
|
||||||
interfaces
|
multiple network interfaces
|
||||||
* ICMP (Internet Control Message Protocol) for network maintenance and debugging
|
* ICMP (Internet Control Message Protocol) for network maintenance and debugging
|
||||||
* IGMP (Internet Group Management Protocol) for multicast traffic management
|
* IGMP (Internet Group Management Protocol) for multicast traffic management
|
||||||
|
* MLD (Multicast listener discovery for IPv6). Aims to be compliant with
|
||||||
|
RFC 2710. No support for MLDv2
|
||||||
|
* ND (Neighbor discovery and stateless address autoconfiguration for IPv6).
|
||||||
|
Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862
|
||||||
|
(Address autoconfiguration)
|
||||||
* UDP (User Datagram Protocol) including experimental UDP-lite extensions
|
* UDP (User Datagram Protocol) including experimental UDP-lite extensions
|
||||||
* TCP (Transmission Control Protocol) with congestion control, RTT estimation
|
* TCP (Transmission Control Protocol) with congestion control, RTT estimation
|
||||||
and fast recovery/fast retransmit
|
and fast recovery/fast retransmit
|
||||||
* Specialized raw/native API for enhanced performance
|
* raw/native API for enhanced performance
|
||||||
* Optional Berkeley-like socket API
|
* Optional Berkeley-like socket API
|
||||||
* DNS (Domain names resolver)
|
* DNS (Domain names resolver)
|
||||||
* SNMP (Simple Network Management Protocol)
|
|
||||||
* DHCP (Dynamic Host Configuration Protocol)
|
|
||||||
* AUTOIP (for IPv4, conform with RFC 3927)
|
APPLICATIONS
|
||||||
* PPP (Point-to-Point Protocol)
|
|
||||||
* ARP (Address Resolution Protocol) for Ethernet
|
* HTTP server with SSI and CGI
|
||||||
|
* SNMPv2c agent with MIB compiler (Simple Network Management Protocol)
|
||||||
|
* SNTP (Simple network time protocol)
|
||||||
|
|
||||||
|
|
||||||
LICENSE
|
LICENSE
|
||||||
|
|
||||||
lwIP is freely available under a BSD license.
|
lwIP is freely available under a BSD license.
|
||||||
|
|
||||||
|
|
||||||
DEVELOPMENT
|
DEVELOPMENT
|
||||||
|
|
||||||
lwIP has grown into an excellent TCP/IP stack for embedded devices,
|
lwIP has grown into an excellent TCP/IP stack for embedded devices,
|
||||||
@ -57,15 +67,14 @@ The current Git trees are web-browsable:
|
|||||||
Submit patches and bugs via the lwIP project page:
|
Submit patches and bugs via the lwIP project page:
|
||||||
http://savannah.nongnu.org/projects/lwip/
|
http://savannah.nongnu.org/projects/lwip/
|
||||||
|
|
||||||
|
Continuous integration builds (GCC, clang):
|
||||||
|
https://travis-ci.org/yarrick/lwip-merged
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION
|
DOCUMENTATION
|
||||||
|
|
||||||
The original out-dated homepage of lwIP and Adam Dunkels' papers on
|
Self documentation of the source code is regularly extracted from the current
|
||||||
lwIP are at the official lwIP home page:
|
Git sources and is available from this web page:
|
||||||
http://www.sics.se/~adam/lwip/
|
|
||||||
|
|
||||||
Self documentation of the source code is regularly extracted from the
|
|
||||||
current Git sources and is available from this web page:
|
|
||||||
http://www.nongnu.org/lwip/
|
http://www.nongnu.org/lwip/
|
||||||
|
|
||||||
There is now a constantly growin wiki about lwIP at
|
There is now a constantly growin wiki about lwIP at
|
||||||
@ -77,10 +86,12 @@ plus searchable archives:
|
|||||||
http://lists.nongnu.org/archive/html/lwip-users/
|
http://lists.nongnu.org/archive/html/lwip-users/
|
||||||
http://lists.nongnu.org/archive/html/lwip-devel/
|
http://lists.nongnu.org/archive/html/lwip-devel/
|
||||||
|
|
||||||
|
lwIP was originally written by Adam Dunkels:
|
||||||
|
http://dunkels.com/adam/
|
||||||
|
|
||||||
Reading Adam's papers, the files in docs/, browsing the source code
|
Reading Adam's papers, the files in docs/, browsing the source code
|
||||||
documentation and browsing the mailing list archives is a good way to
|
documentation and browsing the mailing list archives is a good way to
|
||||||
become familiar with the design of lwIP.
|
become familiar with the design of lwIP.
|
||||||
|
|
||||||
Adam Dunkels <adam@sics.se>
|
Adam Dunkels <adam@sics.se>
|
||||||
Leon Woestenberg <leon.woestenberg@gmx.net>
|
Leon Woestenberg <leon.woestenberg@gmx.net>
|
||||||
|
|
||||||
|
69
UPGRADING
69
UPGRADING
@ -10,6 +10,75 @@ with newer versions.
|
|||||||
|
|
||||||
* TODO
|
* TODO
|
||||||
|
|
||||||
|
(2.0.0)
|
||||||
|
|
||||||
|
++ Application changes:
|
||||||
|
|
||||||
|
* Changed netif "up" flag handling to be an administrative flag (as opposed to the previous meaning of
|
||||||
|
"ip4-address-valid", a netif will now not be used for transmission if not up) -> even a DHCP netif
|
||||||
|
has to be set "up" before starting the DHCP client
|
||||||
|
* Added IPv6 support (dual-stack or IPv4/IPv6 only)
|
||||||
|
* Changed ip_addr_t to be a union in dual-stack mode (use ip4_addr_t where referring to IPv4 only).
|
||||||
|
* Major rewrite of SNMP (added MIB parser that creates code stubs for custom MIBs);
|
||||||
|
supports SNMP2vc (experimental v3 support)
|
||||||
|
* Moved some core applications from contrib repository to src/apps (and include/lwip/apps)
|
||||||
|
|
||||||
|
+++ Raw API:
|
||||||
|
* Changed TCP listen backlog: removed tcp_accepted(), added the function pair tcp_backlog_delayed()/
|
||||||
|
tcp_backlog_accepted() to explicitly delay backlog handling on a connection pcb
|
||||||
|
|
||||||
|
+++ Socket API:
|
||||||
|
* Added an implementation for posix sendmsg()
|
||||||
|
* Added LWIP_FIONREAD_LINUXMODE that makes ioctl/FIONREAD return the size of the next pending datagram
|
||||||
|
|
||||||
|
++ Port changes
|
||||||
|
|
||||||
|
+++ new files:
|
||||||
|
* MANY new and moved files!
|
||||||
|
* Continued moving stack-internal parts from abc.h to abc_priv.h in sub-folder "priv"
|
||||||
|
to let abc.h only contain the actual application programmer's API
|
||||||
|
|
||||||
|
+++ sys layer:
|
||||||
|
* Made LWIP_TCPIP_CORE_LOCKING==1 the default as it usually performs better than
|
||||||
|
the traditional message passing (although with LWIP_COMPAT_MUTEX you are still
|
||||||
|
open to priority inversion, so this is not recommended any more)
|
||||||
|
* Added LWIP_NETCONN_SEM_PER_THREAD to use one "op_completed" semaphore per thread
|
||||||
|
instead of using one per netconn (these semaphores are used even with core locking
|
||||||
|
enabled as some longer lasting functions like big writes still need to delay)
|
||||||
|
|
||||||
|
+++ new options:
|
||||||
|
* TODO
|
||||||
|
|
||||||
|
+++ new pools:
|
||||||
|
* Added LWIP_MEMPOOL_* (declare/init/alloc/free) to declare private memp pools
|
||||||
|
that share memp.c code but do not have to be made global via lwippools.h
|
||||||
|
* Added pools for IPv6, MPU_COMPATIBLE, dns-api, netif-api, etc.
|
||||||
|
* added hook LWIP_HOOK_MEMP_AVAILABLE() to get informed when a memp pool was empty and an item
|
||||||
|
is now available
|
||||||
|
|
||||||
|
* LWIP_DECLARE_MEMORY_ALIGNED() may be used to declare aligned memory buffers (mem/memp)
|
||||||
|
or to move buffers to dedicated memory using compiler attributes
|
||||||
|
|
||||||
|
* Standard C headers are used to define sized types and printf formatters
|
||||||
|
(disable by setting LWIP_NO_STDINT_H=1 or LWIP_NO_INTTYPES_H=1 if your compiler
|
||||||
|
does not support these)
|
||||||
|
|
||||||
|
|
||||||
|
++ Major bugfixes/improvements
|
||||||
|
|
||||||
|
* Added IPv6 support (dual-stack or IPv4/IPv6 only)
|
||||||
|
* Major rewrite of PPP (incl. keep-up with apache pppd)
|
||||||
|
* Major rewrite of SNMP (incl. MIB parser)
|
||||||
|
* Fixed timing issues that might have lead to losing a DHCP lease
|
||||||
|
* Made rx processing path more robust against crafted errors
|
||||||
|
* TCP window scaling support
|
||||||
|
* modification of api modules to support FreeRTOS-MPU (don't pass stack-pointers to other threads)
|
||||||
|
* made DNS client more robust
|
||||||
|
* support PBUF_REF for RX packets
|
||||||
|
* LWIP_NETCONN_FULLDUPLEX allows netconn/sockets to be used for reading/writing from separate
|
||||||
|
threads each (needs LWIP_NETCONN_SEM_PER_THREAD)
|
||||||
|
* Moved and reorderd stats (mainly memp/mib2)
|
||||||
|
|
||||||
(1.4.0)
|
(1.4.0)
|
||||||
|
|
||||||
++ Application changes:
|
++ Application changes:
|
||||||
|
1
doc/doxygen/generate.bat
Normal file
1
doc/doxygen/generate.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
doxygen lwip.Doxyfile
|
1
doc/doxygen/generate.sh
Executable file
1
doc/doxygen/generate.sh
Executable file
@ -0,0 +1 @@
|
|||||||
|
doxygen lwip.Doxyfile
|
File diff suppressed because it is too large
Load Diff
@ -1,47 +1,32 @@
|
|||||||
/*! \mainpage lwIP Documentation
|
/**
|
||||||
|
* @defgroup lwip lwIP
|
||||||
*
|
*
|
||||||
* \section intro_sec Introduction
|
* @defgroup infrastructure Infrastructure
|
||||||
*
|
|
||||||
* lwIP is a small independent implementation of the TCP/IP protocol suite that has been developed by Adam Dunkels at the Computer and Networks Architectures (CNA) lab at the Swedish Institute of Computer Science (SICS).
|
|
||||||
*
|
|
||||||
* The focus of the lwIP TCP/IP implementation is to reduce resource usage while still having a full scale TCP. This making lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40 kilobytes of code ROM.
|
|
||||||
*
|
|
||||||
* \section lwip_features_sec lwIP features:
|
|
||||||
*
|
|
||||||
* \li \c IP (Internet Protocol) including packet forwarding over multiple network interfaces\n
|
|
||||||
* \li \c ICMP (Internet Control Message Protocol) for network maintenance and debugging\n
|
|
||||||
* \li \c IGMP (Internet Group Management Protocol) for multicast traffic management\n
|
|
||||||
* \li \c UDP (User Datagram Protocol) including experimental UDP-lite extensions\n
|
|
||||||
* \li \c TCP (Transmission Control Protocol) with congestion control, RTT estimation and fast recovery/fast retransmit\n
|
|
||||||
* \li \c raw/native API for enhanced performance\n
|
|
||||||
* \li \c Optional Berkeley-like socket API\n
|
|
||||||
* \li \c DNS (Domain names resolver)\n
|
|
||||||
* \li \c SNMP (Simple Network Management Protocol)\n
|
|
||||||
* \li \c DHCP (Dynamic Host Configuration Protocol)\n
|
|
||||||
* \li \c AUTOIP (for IPv4, conform with RFC 3927)\n
|
|
||||||
* \li \c PPP (Point-to-Point Protocol)\n
|
|
||||||
* \li \c ARP (Address Resolution Protocol) for Ethernet\n
|
|
||||||
*
|
|
||||||
* \section install_sec Documentation
|
|
||||||
*
|
|
||||||
* Development of lwIP is hosted on Savannah, a central point for software development, maintenance and distribution. Everyone can help improve lwIP by use of Savannah's interface, Git and the mailing list. A core team of developers will commit changes to the Git source tree.\n
|
|
||||||
* http://savannah.nongnu.org/projects/lwip/\n
|
|
||||||
* \n
|
|
||||||
* The original out-dated homepage of lwIP and Adam Dunkels' papers on lwIP are at the official lwIP home page:\n
|
|
||||||
* http://www.sics.se/~adam/lwip/\n
|
|
||||||
* \n
|
|
||||||
* Self documentation of the source code is regularly extracted from the current Git sources and is available from this web page:\n
|
|
||||||
* http://www.nongnu.org/lwip/\n
|
|
||||||
* \n
|
|
||||||
* There is now a constantly growin wiki about lwIP at\n
|
|
||||||
* http://lwip.wikia.com/\n
|
|
||||||
* \n
|
|
||||||
* Also, there are mailing lists you can subscribe at\n
|
|
||||||
* http://savannah.nongnu.org/mail/?group=lwip\n
|
|
||||||
* plus searchable archives:\n
|
|
||||||
* http://lists.nongnu.org/archive/html/lwip-users/\n
|
|
||||||
* http://lists.nongnu.org/archive/html/lwip-devel/\n
|
|
||||||
* \n
|
|
||||||
* Reading Adam's papers, the files in docs/, browsing the source code documentation and browsing the mailing list archives is a good way to become familiar with the design of lwIP.\n
|
|
||||||
*
|
*
|
||||||
|
* @defgroup callbackstyle_api Callback-style APIs
|
||||||
|
* Non thread-safe APIs, callback style for maximum performance and minimum
|
||||||
|
* memory footprint.
|
||||||
|
*
|
||||||
|
* @defgroup threadsafe_api Thread-safe APIs
|
||||||
|
* Thread-safe APIs, blocking functions. More overhead, but can be called
|
||||||
|
* from any thread except TCPIP thread.
|
||||||
|
*
|
||||||
|
* @defgroup addons Addons
|
||||||
|
*
|
||||||
|
* @defgroup apps Applications
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @mainpage Overview
|
||||||
|
* @verbinclude "README"
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @page upgrading Upgrading
|
||||||
|
* @verbinclude "UPGRADING"
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @page contrib How to contribute to lwIP
|
||||||
|
* @verbinclude "contrib.txt"
|
||||||
*/
|
*/
|
||||||
|
144
doc/ppp.txt
144
doc/ppp.txt
@ -8,7 +8,8 @@ Table of Contents:
|
|||||||
2 - Raw API PPP example for all protocols
|
2 - Raw API PPP example for all protocols
|
||||||
3 - PPPoS input path (raw API, IRQ safe API, TCPIP API)
|
3 - PPPoS input path (raw API, IRQ safe API, TCPIP API)
|
||||||
4 - Thread safe PPP API (PPPAPI)
|
4 - Thread safe PPP API (PPPAPI)
|
||||||
5 - Upgrading from lwIP <= 1.4.x to lwIP >= 1.5.x
|
5 - Notify phase callback (PPP_NOTIFY_PHASE)
|
||||||
|
6 - Upgrading from lwIP <= 1.4.x to lwIP >= 2.0.x
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -171,6 +172,7 @@ static void status_cb(ppp_pcb *pcb, int err_code, void *ctx) {
|
|||||||
* to do a much better signaling here ;-)
|
* to do a much better signaling here ;-)
|
||||||
*/
|
*/
|
||||||
ppp_connect(pcb, 30);
|
ppp_connect(pcb, 30);
|
||||||
|
/* OR ppp_listen(pcb); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -260,22 +262,27 @@ ppp = pppol2tp_create(&ppp_netif,
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PPP link configuration
|
* Initiate PPP client connection
|
||||||
* ======================
|
* ==============================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Auth configuration, this is pretty self-explanatory */
|
|
||||||
ppp_set_auth(ppp, PPPAUTHTYPE_ANY, "login", "password");
|
|
||||||
|
|
||||||
/* Set this interface as default route */
|
/* Set this interface as default route */
|
||||||
ppp_set_default(ppp);
|
ppp_set_default(ppp);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initiate PPP connection
|
* Basic PPP client configuration. Can only be set if PPP session is in the
|
||||||
* =======================
|
* dead state (i.e. disconnected). We don't need to provide thread-safe
|
||||||
|
* equivalents through PPPAPI because those helpers are only changing
|
||||||
|
* structure members while session is inactive for lwIP core. Configuration
|
||||||
|
* only need to be done once.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Ask the peer for up to 2 DNS server addresses. */
|
||||||
|
ppp_set_usepeerdns(ppp, 1);
|
||||||
|
|
||||||
|
/* Auth configuration, this is pretty self-explanatory */
|
||||||
|
ppp_set_auth(ppp, PPPAUTHTYPE_ANY, "login", "password");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initiate PPP negotiation, without waiting (holdoff=0), can only be called
|
* Initiate PPP negotiation, without waiting (holdoff=0), can only be called
|
||||||
* if PPP session is in the dead state (i.e. disconnected).
|
* if PPP session is in the dead state (i.e. disconnected).
|
||||||
@ -284,6 +291,60 @@ u16_t holdoff = 0;
|
|||||||
ppp_connect(ppp, holdoff);
|
ppp_connect(ppp, holdoff);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initiate PPP server listener
|
||||||
|
* ============================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Basic PPP server configuration. Can only be set if PPP session is in the
|
||||||
|
* dead state (i.e. disconnected). We don't need to provide thread-safe
|
||||||
|
* equivalents through PPPAPI because those helpers are only changing
|
||||||
|
* structure members while session is inactive for lwIP core. Configuration
|
||||||
|
* only need to be done once.
|
||||||
|
*/
|
||||||
|
ip4_addr_t addr;
|
||||||
|
|
||||||
|
/* Set our address */
|
||||||
|
IP4_ADDR(&addr, 192,168,0,1);
|
||||||
|
ppp_set_ipcp_ouraddr(ppp, &addr);
|
||||||
|
|
||||||
|
/* Set peer(his) address */
|
||||||
|
IP4_ADDR(&addr, 192,168,0,2);
|
||||||
|
ppp_set_ipcp_hisaddr(ppp, &addr);
|
||||||
|
|
||||||
|
/* Set primary DNS server */
|
||||||
|
IP4_ADDR(&addr, 192,168,10,20);
|
||||||
|
ppp_set_ipcp_dnsaddr(ppp, 0, &addr);
|
||||||
|
|
||||||
|
/* Set secondary DNS server */
|
||||||
|
IP4_ADDR(&addr, 192,168,10,21);
|
||||||
|
ppp_set_ipcp_dnsaddr(ppp, 1, &addr);
|
||||||
|
|
||||||
|
/* Auth configuration, this is pretty self-explanatory */
|
||||||
|
ppp_set_auth(ppp, PPPAUTHTYPE_ANY, "login", "password");
|
||||||
|
|
||||||
|
/* Require peer to authenticate */
|
||||||
|
ppp_set_auth_required(ppp, 1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only for PPPoS, the PPP session should be up and waiting for input.
|
||||||
|
*
|
||||||
|
* Note: for PPPoS, ppp_connect() and ppp_listen() are actually the same thing.
|
||||||
|
* The listen call is meant for future support of PPPoE and PPPoL2TP server
|
||||||
|
* mode, where we will need to negotiate the incoming PPPoE session or L2TP
|
||||||
|
* session before initiating PPP itself. We need this call because there is
|
||||||
|
* two passive modes for PPPoS, ppp_set_passive and ppp_set_silent.
|
||||||
|
*/
|
||||||
|
ppp_set_silent(pppos, 1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initiate PPP listener (i.e. wait for an incoming connection), can only
|
||||||
|
* be called if PPP session is in the dead state (i.e. disconnected).
|
||||||
|
*/
|
||||||
|
ppp_listen(ppp);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Closing PPP connection
|
* Closing PPP connection
|
||||||
* ======================
|
* ======================
|
||||||
@ -356,19 +417,63 @@ or
|
|||||||
void pppos_input_tcpip(ppp, buffer, buffer_len);
|
void pppos_input_tcpip(ppp, buffer, buffer_len);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
4 Thread safe PPP API (PPPAPI)
|
4 Thread safe PPP API (PPPAPI)
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
There is a thread safe API for all corresponding ppp_* functions, you have to
|
There is a thread safe API for all corresponding ppp_* functions, you have to
|
||||||
enable LWIP_PPP_API in your lwipopts.h file, then see include/lwip/pppapi.h,
|
enable LWIP_PPP_API in your lwipopts.h file, then see
|
||||||
this is actually pretty obvious.
|
include/netif/ppp/pppapi.h, this is actually pretty obvious.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5 Upgrading from lwIP <= 1.4.x to lwIP >= 1.5.x
|
5 Notify phase callback (PPP_NOTIFY_PHASE)
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
Notify phase callback, enabled using the PPP_NOTIFY_PHASE config option, let
|
||||||
|
you configure a callback that is called on each PPP internal state change.
|
||||||
|
This is different from the status callback which only warns you about
|
||||||
|
up(running) and down(dead) events.
|
||||||
|
|
||||||
|
Notify phase callback can be used, for example, to set a LED pattern depending
|
||||||
|
on the current phase of the PPP session. Here is a callback example which
|
||||||
|
tries to mimic what we usually see on xDSL modems while they are negotiating
|
||||||
|
the link, which should be self-explanatory:
|
||||||
|
|
||||||
|
static void ppp_notify_phase_cb(ppp_pcb *pcb, u8_t phase, void *ctx) {
|
||||||
|
switch (phase) {
|
||||||
|
|
||||||
|
/* Session is down (either permanently or briefly) */
|
||||||
|
case PPP_PHASE_DEAD:
|
||||||
|
led_set(PPP_LED, LED_OFF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* We are between two sessions */
|
||||||
|
case PPP_PHASE_HOLDOFF:
|
||||||
|
led_set(PPP_LED, LED_SLOW_BLINK);
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Session just started */
|
||||||
|
case PPP_PHASE_INITIALIZE:
|
||||||
|
led_set(PPP_LED, LED_FAST_BLINK);
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Session is running */
|
||||||
|
case PPP_PHASE_RUNNING:
|
||||||
|
led_set(PPP_LED, LED_ON);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6 Upgrading from lwIP <= 1.4.x to lwIP >= 2.0.x
|
||||||
===============================================
|
===============================================
|
||||||
|
|
||||||
PPP API was fully reworked between 1.4.x and 1.5.x releases. However porting
|
PPP API was fully reworked between 1.4.x and 2.0.x releases. However porting
|
||||||
from previous lwIP version is pretty easy:
|
from previous lwIP version is pretty easy:
|
||||||
|
|
||||||
* Previous PPP API used an integer to identify PPP sessions, we are now
|
* Previous PPP API used an integer to identify PPP sessions, we are now
|
||||||
@ -392,7 +497,7 @@ from previous lwIP version is pretty easy:
|
|||||||
callback function
|
callback function
|
||||||
|
|
||||||
* Only the following include files should now be used in user application:
|
* Only the following include files should now be used in user application:
|
||||||
#include "lwip/pppapi.h"
|
#include "netif/ppp/pppapi.h"
|
||||||
#include "netif/ppp/pppos.h"
|
#include "netif/ppp/pppos.h"
|
||||||
#include "netif/ppp/pppoe.h"
|
#include "netif/ppp/pppoe.h"
|
||||||
#include "netif/ppp/pppol2tp.h"
|
#include "netif/ppp/pppol2tp.h"
|
||||||
@ -413,11 +518,12 @@ from previous lwIP version is pretty easy:
|
|||||||
* ppp_sighup and ppp_close functions were merged using an optional argument
|
* ppp_sighup and ppp_close functions were merged using an optional argument
|
||||||
"nocarrier" on ppp_close.
|
"nocarrier" on ppp_close.
|
||||||
|
|
||||||
* DNS servers are now only remotely asked if LWIP_DNS is set and we are now
|
* DNS servers are now only remotely asked if LWIP_DNS is set and if
|
||||||
unconditionally registering them, which is probably the wanted behavior in
|
ppp_set_usepeerdns() is set to true, they are now automatically registered
|
||||||
almost all cases. If you need it conditional contact us and we will made it
|
using the dns_setserver() function so you don't need to do that in the PPP
|
||||||
conditional.
|
callback anymore.
|
||||||
|
|
||||||
* PPPoS now requires a serial output callback
|
* PPPoS does not use the SIO API anymore, as such it now requires a serial
|
||||||
|
output callback in place of sio_write
|
||||||
|
|
||||||
* PPP_MAXIDLEFLAG is now in ms instead of jiffies
|
* PPP_MAXIDLEFLAG is now in ms instead of jiffies
|
||||||
|
@ -1,165 +0,0 @@
|
|||||||
SNMPv1 agent for lwIP
|
|
||||||
|
|
||||||
Author: Christiaan Simons
|
|
||||||
|
|
||||||
This is a brief introduction how to use and configure the SNMP agent.
|
|
||||||
Note the agent uses the raw-API UDP interface so you may also want to
|
|
||||||
read rawapi.txt to gain a better understanding of the SNMP message handling.
|
|
||||||
|
|
||||||
0 Agent Capabilities
|
|
||||||
====================
|
|
||||||
|
|
||||||
SNMPv1 per RFC1157
|
|
||||||
This is an old(er) standard but is still widely supported.
|
|
||||||
For SNMPv2c and v3 have a greater complexity and need many
|
|
||||||
more lines of code. IMHO this breaks the idea of "lightweight IP".
|
|
||||||
|
|
||||||
Note the S in SNMP stands for "Simple". Note that "Simple" is
|
|
||||||
relative. SNMP is simple compared to the complex ISO network
|
|
||||||
management protocols CMIP (Common Management Information Protocol)
|
|
||||||
and CMOT (CMip Over Tcp).
|
|
||||||
|
|
||||||
MIB II per RFC1213
|
|
||||||
The standard lwIP stack management information base.
|
|
||||||
This is a required MIB, so this is always enabled.
|
|
||||||
When builing lwIP without TCP, the mib-2.tcp group is omitted.
|
|
||||||
The groups EGP, CMOT and transmission are disabled by default.
|
|
||||||
|
|
||||||
Most mib-2 objects are not writable except:
|
|
||||||
sysName, sysLocation, sysContact, snmpEnableAuthenTraps.
|
|
||||||
Writing to or changing the ARP and IP address and route
|
|
||||||
tables is not possible.
|
|
||||||
|
|
||||||
Note lwIP has a very limited notion of IP routing. It currently
|
|
||||||
doen't have a route table and doesn't have a notion of the U,G,H flags.
|
|
||||||
Instead lwIP uses the interface list with only one default interface
|
|
||||||
acting as a single gateway interface (G) for the default route.
|
|
||||||
|
|
||||||
The agent returns a "virtual table" with the default route 0.0.0.0
|
|
||||||
for the default interface and network routes (no H) for each
|
|
||||||
network interface in the netif_list.
|
|
||||||
All routes are considered to be up (U).
|
|
||||||
|
|
||||||
Loading additional MIBs
|
|
||||||
MIBs can only be added in compile-time, not in run-time.
|
|
||||||
There is no MIB compiler thus additional MIBs must be hand coded.
|
|
||||||
|
|
||||||
Large SNMP message support
|
|
||||||
The packet decoding and encoding routines are designed
|
|
||||||
to use pbuf-chains. Larger payloads than the minimum
|
|
||||||
SNMP requirement of 484 octets are supported if the
|
|
||||||
PBUF_POOL_SIZE and IP_REASS_BUFSIZE are set to match your
|
|
||||||
local requirement.
|
|
||||||
|
|
||||||
1 Building the Agent
|
|
||||||
====================
|
|
||||||
|
|
||||||
First of all you'll need to add the following define
|
|
||||||
to your local lwipopts.h:
|
|
||||||
|
|
||||||
#define LWIP_SNMP 1
|
|
||||||
|
|
||||||
and add the source files in lwip/src/core/snmp
|
|
||||||
and some snmp headers in lwip/src/include/lwip to your makefile.
|
|
||||||
|
|
||||||
Note you'll might need to adapt you network driver to update
|
|
||||||
the mib2 variables for your interface.
|
|
||||||
|
|
||||||
2 Running the Agent
|
|
||||||
===================
|
|
||||||
|
|
||||||
The following function calls must be made in your program to
|
|
||||||
actually get the SNMP agent running.
|
|
||||||
|
|
||||||
Before starting the agent you should supply pointers
|
|
||||||
to non-volatile memory for sysContact, sysLocation,
|
|
||||||
and snmpEnableAuthenTraps. You can do this by calling
|
|
||||||
|
|
||||||
snmp_set_syscontact()
|
|
||||||
snmp_set_syslocation()
|
|
||||||
snmp_set_snmpenableauthentraps()
|
|
||||||
|
|
||||||
Additionally you may want to set
|
|
||||||
|
|
||||||
snmp_set_sysdescr()
|
|
||||||
snmp_set_sysobjid() (if you have a private MIB)
|
|
||||||
snmp_set_sysname()
|
|
||||||
|
|
||||||
Also before starting the agent you need to setup
|
|
||||||
one or more trap destinations using these calls:
|
|
||||||
|
|
||||||
snmp_trap_dst_enable();
|
|
||||||
snmp_trap_dst_ip_set();
|
|
||||||
|
|
||||||
|
|
||||||
3 Private MIBs
|
|
||||||
==============
|
|
||||||
|
|
||||||
If want to extend the agent with your own private MIB you'll need to
|
|
||||||
add the following define to your local lwipopts.h:
|
|
||||||
|
|
||||||
#define SNMP_PRIVATE_MIB 1
|
|
||||||
|
|
||||||
You must provide the private_mib.h and associated files yourself.
|
|
||||||
Note we don't have a "MIB compiler" that generates C source from a MIB,
|
|
||||||
so you're required to do some serious coding if you enable this!
|
|
||||||
|
|
||||||
Note the lwIP enterprise ID (26381) is assigned to the lwIP project,
|
|
||||||
ALL OBJECT IDENTIFIERS LIVING UNDER THIS ID ARE ASSIGNED BY THE lwIP
|
|
||||||
MAINTAINERS!
|
|
||||||
|
|
||||||
If you need to create your own private MIB you'll need
|
|
||||||
to apply for your own enterprise ID with IANA: http://www.iana.org/numbers.html
|
|
||||||
|
|
||||||
You can set it by passing a struct snmp_obj_id to the agent
|
|
||||||
using snmp_set_sysobjid(&my_object_id), just before snmp_init().
|
|
||||||
|
|
||||||
Note the object identifiers for thes MIB-2 and your private MIB
|
|
||||||
tree must be kept in sorted ascending (lexicographical) order.
|
|
||||||
This to ensure correct getnext operation.
|
|
||||||
|
|
||||||
An example for a private MIB is part of the "minimal Unix" project:
|
|
||||||
contrib/ports/unix/proj/minimal/lwip_prvmib.c
|
|
||||||
|
|
||||||
The next chapter gives a more detailed description of the
|
|
||||||
MIB-2 tree and the optional private MIB.
|
|
||||||
|
|
||||||
4 The Gory Details
|
|
||||||
==================
|
|
||||||
|
|
||||||
4.0 Object identifiers and the MIB tree.
|
|
||||||
|
|
||||||
We have three distinct parts for all object identifiers:
|
|
||||||
|
|
||||||
The prefix
|
|
||||||
.iso.org.dod.internet
|
|
||||||
|
|
||||||
the middle part
|
|
||||||
.mgmt.mib-2.ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress
|
|
||||||
|
|
||||||
and the index part
|
|
||||||
.1.192.168.0.1
|
|
||||||
|
|
||||||
Objects located above the .internet hierarchy aren't supported.
|
|
||||||
Currently only the .mgmt sub-tree is available and
|
|
||||||
when the SNMP_PRIVATE_MIB is enabled the .private tree
|
|
||||||
becomes available too.
|
|
||||||
|
|
||||||
Object identifiers from incoming requests are checked
|
|
||||||
for a matching prefix, middle part and index part
|
|
||||||
or are expanded(*) for GetNext requests with short
|
|
||||||
or inexisting names in the request.
|
|
||||||
(* we call this "expansion" but this also
|
|
||||||
resembles the "auto-completion" operation)
|
|
||||||
|
|
||||||
The middle part is usually located in ROM (const)
|
|
||||||
to preserve precious RAM on small microcontrollers.
|
|
||||||
However RAM location is possible for a dynamically
|
|
||||||
changing private tree.
|
|
||||||
|
|
||||||
The index part is handled by functions which in
|
|
||||||
turn use dynamically allocated index trees from RAM.
|
|
||||||
These trees are updated by e.g. the etharp code
|
|
||||||
when new entries are made or removed form the ARP cache.
|
|
||||||
|
|
||||||
/** @todo more gory details */
|
|
@ -30,10 +30,10 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
# COREFILES, CORE4FILES: The minimum set of files needed for lwIP.
|
# COREFILES, CORE4FILES: The minimum set of files needed for lwIP.
|
||||||
COREFILES=$(LWIPDIR)/core/def.c \
|
COREFILES=$(LWIPDIR)/core/init.c \
|
||||||
|
$(LWIPDIR)/core/def.c \
|
||||||
$(LWIPDIR)/core/dns.c \
|
$(LWIPDIR)/core/dns.c \
|
||||||
$(LWIPDIR)/core/inet_chksum.c \
|
$(LWIPDIR)/core/inet_chksum.c \
|
||||||
$(LWIPDIR)/core/init.c \
|
|
||||||
$(LWIPDIR)/core/ip.c \
|
$(LWIPDIR)/core/ip.c \
|
||||||
$(LWIPDIR)/core/mem.c \
|
$(LWIPDIR)/core/mem.c \
|
||||||
$(LWIPDIR)/core/memp.c \
|
$(LWIPDIR)/core/memp.c \
|
||||||
@ -45,20 +45,22 @@ COREFILES=$(LWIPDIR)/core/def.c \
|
|||||||
$(LWIPDIR)/core/tcp.c \
|
$(LWIPDIR)/core/tcp.c \
|
||||||
$(LWIPDIR)/core/tcp_in.c \
|
$(LWIPDIR)/core/tcp_in.c \
|
||||||
$(LWIPDIR)/core/tcp_out.c \
|
$(LWIPDIR)/core/tcp_out.c \
|
||||||
$(LWIPDIR)/core/timers.c \
|
$(LWIPDIR)/core/timeouts.c \
|
||||||
$(LWIPDIR)/core/udp.c
|
$(LWIPDIR)/core/udp.c
|
||||||
|
|
||||||
CORE4FILES=$(LWIPDIR)/core/ipv4/autoip.c \
|
CORE4FILES=$(LWIPDIR)/core/ipv4/autoip.c \
|
||||||
$(LWIPDIR)/core/ipv4/dhcp.c \
|
$(LWIPDIR)/core/ipv4/dhcp.c \
|
||||||
|
$(LWIPDIR)/core/ipv4/etharp.c \
|
||||||
$(LWIPDIR)/core/ipv4/icmp.c \
|
$(LWIPDIR)/core/ipv4/icmp.c \
|
||||||
$(LWIPDIR)/core/ipv4/igmp.c \
|
$(LWIPDIR)/core/ipv4/igmp.c \
|
||||||
$(LWIPDIR)/core/ipv4/ip_frag.c \
|
$(LWIPDIR)/core/ipv4/ip4_frag.c \
|
||||||
$(LWIPDIR)/core/ipv4/ip4.c \
|
$(LWIPDIR)/core/ipv4/ip4.c \
|
||||||
$(LWIPDIR)/core/ipv4/ip4_addr.c
|
$(LWIPDIR)/core/ipv4/ip4_addr.c
|
||||||
|
|
||||||
CORE6FILES=$(LWIPDIR)/core/ipv6/dhcp6.c \
|
CORE6FILES=$(LWIPDIR)/core/ipv6/dhcp6.c \
|
||||||
$(LWIPDIR)/core/ipv6/ethip6.c \
|
$(LWIPDIR)/core/ipv6/ethip6.c \
|
||||||
$(LWIPDIR)/core/ipv6/icmp6.c \
|
$(LWIPDIR)/core/ipv6/icmp6.c \
|
||||||
|
$(LWIPDIR)/core/ipv6/inet6.c \
|
||||||
$(LWIPDIR)/core/ipv6/ip6.c \
|
$(LWIPDIR)/core/ipv6/ip6.c \
|
||||||
$(LWIPDIR)/core/ipv6/ip6_addr.c \
|
$(LWIPDIR)/core/ipv6/ip6_addr.c \
|
||||||
$(LWIPDIR)/core/ipv6/ip6_frag.c \
|
$(LWIPDIR)/core/ipv6/ip6_frag.c \
|
||||||
@ -76,7 +78,7 @@ APIFILES=$(LWIPDIR)/api/api_lib.c \
|
|||||||
$(LWIPDIR)/api/tcpip.c
|
$(LWIPDIR)/api/tcpip.c
|
||||||
|
|
||||||
# NETIFFILES: Files implementing various generic network interface functions
|
# NETIFFILES: Files implementing various generic network interface functions
|
||||||
NETIFFILES=$(LWIPDIR)/netif/ethernet.c $(LWIPDIR)/netif/etharp.c \
|
NETIFFILES=$(LWIPDIR)/netif/ethernet.c \
|
||||||
$(LWIPDIR)/netif/slipif.c
|
$(LWIPDIR)/netif/slipif.c
|
||||||
|
|
||||||
# SIXLOWPAN: 6LoWPAN
|
# SIXLOWPAN: 6LoWPAN
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* Sequential API External module
|
* Sequential API External module
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -33,7 +32,26 @@
|
|||||||
* This file is part of the lwIP TCP/IP stack.
|
* This file is part of the lwIP TCP/IP stack.
|
||||||
*
|
*
|
||||||
* Author: Adam Dunkels <adam@sics.se>
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
*
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup netconn Netconn API
|
||||||
|
* @ingroup threadsafe_api
|
||||||
|
* Thread-safe, to be called from non-TCPIP threads only.
|
||||||
|
* TX/RX handling based on @ref netbuf (containing @ref pbuf)
|
||||||
|
* to avoid copying data around.
|
||||||
|
*
|
||||||
|
* @defgroup netconn_common Common functions
|
||||||
|
* @ingroup netconn
|
||||||
|
* For use with TCP and UDP
|
||||||
|
*
|
||||||
|
* @defgroup netconn_tcp TCP only
|
||||||
|
* @ingroup netconn
|
||||||
|
* TCP only functions
|
||||||
|
*
|
||||||
|
* @defgroup netconn_udp UDP only
|
||||||
|
* @ingroup netconn
|
||||||
|
* UDP only functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* This is the part of the API that is linked with
|
/* This is the part of the API that is linked with
|
||||||
@ -138,6 +156,7 @@ netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, netconn_cal
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_common
|
||||||
* Close a netconn 'connection' and free its resources.
|
* Close a netconn 'connection' and free its resources.
|
||||||
* UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate
|
* UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate
|
||||||
* after this returns.
|
* after this returns.
|
||||||
@ -219,6 +238,7 @@ netconn_getaddr(struct netconn *conn, ip_addr_t *addr, u16_t *port, u8_t local)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_common
|
||||||
* Bind a netconn to a specific local IP address and port.
|
* Bind a netconn to a specific local IP address and port.
|
||||||
* Binding one netconn twice might not always be checked correctly!
|
* Binding one netconn twice might not always be checked correctly!
|
||||||
*
|
*
|
||||||
@ -252,6 +272,7 @@ netconn_bind(struct netconn *conn, const ip_addr_t *addr, u16_t port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_common
|
||||||
* Connect a netconn to a specific remote IP address and port.
|
* Connect a netconn to a specific remote IP address and port.
|
||||||
*
|
*
|
||||||
* @param conn the netconn to connect
|
* @param conn the netconn to connect
|
||||||
@ -283,10 +304,11 @@ netconn_connect(struct netconn *conn, const ip_addr_t *addr, u16_t port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_udp
|
||||||
* Disconnect a netconn from its current peer (only valid for UDP netconns).
|
* Disconnect a netconn from its current peer (only valid for UDP netconns).
|
||||||
*
|
*
|
||||||
* @param conn the netconn to disconnect
|
* @param conn the netconn to disconnect
|
||||||
* @return TODO: return value is not set here...
|
* @return @todo: return value is not set here...
|
||||||
*/
|
*/
|
||||||
err_t
|
err_t
|
||||||
netconn_disconnect(struct netconn *conn)
|
netconn_disconnect(struct netconn *conn)
|
||||||
@ -305,6 +327,7 @@ netconn_disconnect(struct netconn *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Set a TCP netconn into listen mode
|
* Set a TCP netconn into listen mode
|
||||||
*
|
*
|
||||||
* @param conn the tcp netconn to set to listen mode
|
* @param conn the tcp netconn to set to listen mode
|
||||||
@ -341,6 +364,7 @@ netconn_listen_with_backlog(struct netconn *conn, u8_t backlog)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Accept a new connection on a TCP listening netconn.
|
* Accept a new connection on a TCP listening netconn.
|
||||||
*
|
*
|
||||||
* @param conn the TCP listen netconn
|
* @param conn the TCP listen netconn
|
||||||
@ -429,6 +453,7 @@ netconn_accept(struct netconn *conn, struct netconn **new_conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_common
|
||||||
* Receive data: actual implementation that doesn't care whether pbuf or netbuf
|
* Receive data: actual implementation that doesn't care whether pbuf or netbuf
|
||||||
* is received
|
* is received
|
||||||
*
|
*
|
||||||
@ -445,6 +470,9 @@ netconn_recv_data(struct netconn *conn, void **new_buf)
|
|||||||
err_t err;
|
err_t err;
|
||||||
#if LWIP_TCP
|
#if LWIP_TCP
|
||||||
API_MSG_VAR_DECLARE(msg);
|
API_MSG_VAR_DECLARE(msg);
|
||||||
|
#if LWIP_MPU_COMPATIBLE
|
||||||
|
msg = NULL;
|
||||||
|
#endif
|
||||||
#endif /* LWIP_TCP */
|
#endif /* LWIP_TCP */
|
||||||
|
|
||||||
LWIP_ERROR("netconn_recv: invalid pointer", (new_buf != NULL), return ERR_ARG;);
|
LWIP_ERROR("netconn_recv: invalid pointer", (new_buf != NULL), return ERR_ARG;);
|
||||||
@ -479,7 +507,7 @@ netconn_recv_data(struct netconn *conn, void **new_buf)
|
|||||||
API_MSG_VAR_ALLOC(msg);
|
API_MSG_VAR_ALLOC(msg);
|
||||||
}
|
}
|
||||||
#endif /* LWIP_TCP */
|
#endif /* LWIP_TCP */
|
||||||
|
|
||||||
#if LWIP_SO_RCVTIMEO
|
#if LWIP_SO_RCVTIMEO
|
||||||
if (sys_arch_mbox_fetch(&conn->recvmbox, &buf, conn->recv_timeout) == SYS_ARCH_TIMEOUT) {
|
if (sys_arch_mbox_fetch(&conn->recvmbox, &buf, conn->recv_timeout) == SYS_ARCH_TIMEOUT) {
|
||||||
#if LWIP_TCP
|
#if LWIP_TCP
|
||||||
@ -502,7 +530,7 @@ netconn_recv_data(struct netconn *conn, void **new_buf)
|
|||||||
#endif /* (LWIP_UDP || LWIP_RAW) */
|
#endif /* (LWIP_UDP || LWIP_RAW) */
|
||||||
{
|
{
|
||||||
/* Let the stack know that we have taken the data. */
|
/* Let the stack know that we have taken the data. */
|
||||||
/* TODO: Speedup: Don't block and wait for the answer here
|
/* @todo: Speedup: Don't block and wait for the answer here
|
||||||
(to prevent multiple thread-switches). */
|
(to prevent multiple thread-switches). */
|
||||||
API_MSG_VAR_REF(msg).conn = conn;
|
API_MSG_VAR_REF(msg).conn = conn;
|
||||||
if (buf != NULL) {
|
if (buf != NULL) {
|
||||||
@ -550,6 +578,7 @@ netconn_recv_data(struct netconn *conn, void **new_buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Receive data (in form of a pbuf) from a TCP netconn
|
* Receive data (in form of a pbuf) from a TCP netconn
|
||||||
*
|
*
|
||||||
* @param conn the netconn from which to receive data
|
* @param conn the netconn from which to receive data
|
||||||
@ -568,6 +597,7 @@ netconn_recv_tcp_pbuf(struct netconn *conn, struct pbuf **new_buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_common
|
||||||
* Receive data (in form of a netbuf containing a packet buffer) from a netconn
|
* Receive data (in form of a netbuf containing a packet buffer) from a netconn
|
||||||
*
|
*
|
||||||
* @param conn the netconn from which to receive data
|
* @param conn the netconn from which to receive data
|
||||||
@ -627,6 +657,7 @@ netconn_recv(struct netconn *conn, struct netbuf **new_buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_udp
|
||||||
* Send data (in form of a netbuf) to a specific remote IP address and port.
|
* Send data (in form of a netbuf) to a specific remote IP address and port.
|
||||||
* Only to be used for UDP and RAW netconns (not TCP).
|
* Only to be used for UDP and RAW netconns (not TCP).
|
||||||
*
|
*
|
||||||
@ -648,6 +679,7 @@ netconn_sendto(struct netconn *conn, struct netbuf *buf, const ip_addr_t *addr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_udp
|
||||||
* Send data over a UDP or RAW netconn (that is already connected).
|
* Send data over a UDP or RAW netconn (that is already connected).
|
||||||
*
|
*
|
||||||
* @param conn the UDP or RAW netconn over which to send data
|
* @param conn the UDP or RAW netconn over which to send data
|
||||||
@ -673,6 +705,7 @@ netconn_send(struct netconn *conn, struct netbuf *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Send data over a TCP netconn.
|
* Send data over a TCP netconn.
|
||||||
*
|
*
|
||||||
* @param conn the TCP netconn over which to send data
|
* @param conn the TCP netconn over which to send data
|
||||||
@ -744,6 +777,7 @@ netconn_write_partly(struct netconn *conn, const void *dataptr, size_t size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Close or shutdown a TCP netconn (doesn't delete it).
|
* Close or shutdown a TCP netconn (doesn't delete it).
|
||||||
*
|
*
|
||||||
* @param conn the TCP netconn to close or shutdown
|
* @param conn the TCP netconn to close or shutdown
|
||||||
@ -780,6 +814,7 @@ netconn_close_shutdown(struct netconn *conn, u8_t how)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Close a TCP netconn (doesn't delete it).
|
* Close a TCP netconn (doesn't delete it).
|
||||||
*
|
*
|
||||||
* @param conn the TCP netconn to close
|
* @param conn the TCP netconn to close
|
||||||
@ -793,9 +828,12 @@ netconn_close(struct netconn *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_tcp
|
||||||
* Shut down one or both sides of a TCP netconn (doesn't delete it).
|
* Shut down one or both sides of a TCP netconn (doesn't delete it).
|
||||||
*
|
*
|
||||||
* @param conn the TCP netconn to shut down
|
* @param conn the TCP netconn to shut down
|
||||||
|
* @param shut_rx shut down the RX side (no more read possible after this)
|
||||||
|
* @param shut_tx shut down the TX side (no more write possible after this)
|
||||||
* @return ERR_OK if the netconn was closed, any other err_t on error
|
* @return ERR_OK if the netconn was closed, any other err_t on error
|
||||||
*/
|
*/
|
||||||
err_t
|
err_t
|
||||||
@ -806,6 +844,7 @@ netconn_shutdown(struct netconn *conn, u8_t shut_rx, u8_t shut_tx)
|
|||||||
|
|
||||||
#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD)
|
#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD)
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_udp
|
||||||
* Join multicast groups for UDP netconns.
|
* Join multicast groups for UDP netconns.
|
||||||
*
|
*
|
||||||
* @param conn the UDP netconn for which to change multicast addresses
|
* @param conn the UDP netconn for which to change multicast addresses
|
||||||
@ -849,10 +888,12 @@ netconn_join_leave_group(struct netconn *conn,
|
|||||||
|
|
||||||
#if LWIP_DNS
|
#if LWIP_DNS
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netconn_common
|
||||||
* Execute a DNS query, only one IP address is returned
|
* Execute a DNS query, only one IP address is returned
|
||||||
*
|
*
|
||||||
* @param name a string representation of the DNS host name to query
|
* @param name a string representation of the DNS host name to query
|
||||||
* @param addr a preallocated ip_addr_t where to store the resolved IP address
|
* @param addr a preallocated ip_addr_t where to store the resolved IP address
|
||||||
|
* @param dns_addrtype IP address type (IPv4 / IPv6)
|
||||||
* @return ERR_OK: resolving succeeded
|
* @return ERR_OK: resolving succeeded
|
||||||
* ERR_MEM: memory error, try again later
|
* ERR_MEM: memory error, try again later
|
||||||
* ERR_ARG: dns client not initialized or invalid hostname
|
* ERR_ARG: dns client not initialized or invalid hostname
|
||||||
|
@ -604,7 +604,7 @@ pcb_new(struct api_msg *msg)
|
|||||||
* Create a new pcb of a specific type inside a netconn.
|
* Create a new pcb of a specific type inside a netconn.
|
||||||
* Called from netconn_new_with_proto_and_callback.
|
* Called from netconn_new_with_proto_and_callback.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg describing the connection type
|
* @param m the api_msg_msg describing the connection type
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_newconn(void *m)
|
lwip_netconn_do_newconn(void *m)
|
||||||
@ -627,7 +627,6 @@ lwip_netconn_do_newconn(void *m)
|
|||||||
* The corresponding pcb is NOT created!
|
* The corresponding pcb is NOT created!
|
||||||
*
|
*
|
||||||
* @param t the type of 'connection' to create (@see enum netconn_type)
|
* @param t the type of 'connection' to create (@see enum netconn_type)
|
||||||
* @param proto the IP protocol for RAW IP pcbs
|
|
||||||
* @param callback a function to call on status changes (RX available, TX'ed)
|
* @param callback a function to call on status changes (RX available, TX'ed)
|
||||||
* @return a newly allocated struct netconn or
|
* @return a newly allocated struct netconn or
|
||||||
* NULL on memory error
|
* NULL on memory error
|
||||||
@ -1000,7 +999,7 @@ lwip_netconn_do_close_internal(struct netconn *conn WRITE_DELAYED_PARAM)
|
|||||||
* Delete the pcb inside a netconn.
|
* Delete the pcb inside a netconn.
|
||||||
* Called from netconn_delete.
|
* Called from netconn_delete.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_delconn(void *m)
|
lwip_netconn_do_delconn(void *m)
|
||||||
@ -1101,8 +1100,8 @@ lwip_netconn_do_delconn(void *m)
|
|||||||
* Bind a pcb contained in a netconn
|
* Bind a pcb contained in a netconn
|
||||||
* Called from netconn_bind.
|
* Called from netconn_bind.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection and containing
|
* @param m the api_msg_msg pointing to the connection and containing
|
||||||
* the IP address and port to bind to
|
* the IP address and port to bind to
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_bind(void *m)
|
lwip_netconn_do_bind(void *m)
|
||||||
@ -1209,8 +1208,8 @@ lwip_netconn_do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
|
|||||||
* Connect a pcb contained inside a netconn
|
* Connect a pcb contained inside a netconn
|
||||||
* Called from netconn_connect.
|
* Called from netconn_connect.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection and containing
|
* @param m the api_msg_msg pointing to the connection and containing
|
||||||
* the IP address and port to connect to
|
* the IP address and port to connect to
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_connect(void *m)
|
lwip_netconn_do_connect(void *m)
|
||||||
@ -1281,7 +1280,7 @@ lwip_netconn_do_connect(void *m)
|
|||||||
* Only used for UDP netconns.
|
* Only used for UDP netconns.
|
||||||
* Called from netconn_disconnect.
|
* Called from netconn_disconnect.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection to disconnect
|
* @param m the api_msg_msg pointing to the connection to disconnect
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_disconnect(void *m)
|
lwip_netconn_do_disconnect(void *m)
|
||||||
@ -1305,7 +1304,7 @@ lwip_netconn_do_disconnect(void *m)
|
|||||||
* Set a TCP pcb contained in a netconn into listen mode
|
* Set a TCP pcb contained in a netconn into listen mode
|
||||||
* Called from netconn_listen.
|
* Called from netconn_listen.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_listen(void *m)
|
lwip_netconn_do_listen(void *m)
|
||||||
@ -1386,7 +1385,7 @@ lwip_netconn_do_listen(void *m)
|
|||||||
* Send some data on a RAW or UDP pcb contained in a netconn
|
* Send some data on a RAW or UDP pcb contained in a netconn
|
||||||
* Called from netconn_send
|
* Called from netconn_send
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_send(void *m)
|
lwip_netconn_do_send(void *m)
|
||||||
@ -1441,7 +1440,7 @@ lwip_netconn_do_send(void *m)
|
|||||||
* Indicate data has been received from a TCP pcb contained in a netconn
|
* Indicate data has been received from a TCP pcb contained in a netconn
|
||||||
* Called from netconn_recv
|
* Called from netconn_recv
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_recv(void *m)
|
lwip_netconn_do_recv(void *m)
|
||||||
@ -1466,7 +1465,7 @@ lwip_netconn_do_recv(void *m)
|
|||||||
/** Indicate that a TCP pcb has been accepted
|
/** Indicate that a TCP pcb has been accepted
|
||||||
* Called from netconn_accept
|
* Called from netconn_accept
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_accepted(void *m)
|
lwip_netconn_do_accepted(void *m)
|
||||||
@ -1643,7 +1642,7 @@ err_mem:
|
|||||||
* Send some data on a TCP pcb contained in a netconn
|
* Send some data on a TCP pcb contained in a netconn
|
||||||
* Called from netconn_write
|
* Called from netconn_write
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_write(void *m)
|
lwip_netconn_do_write(void *m)
|
||||||
@ -1699,7 +1698,7 @@ lwip_netconn_do_write(void *m)
|
|||||||
* Return a connection's local or remote address
|
* Return a connection's local or remote address
|
||||||
* Called from netconn_getaddr
|
* Called from netconn_getaddr
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_getaddr(void *m)
|
lwip_netconn_do_getaddr(void *m)
|
||||||
@ -1765,7 +1764,7 @@ lwip_netconn_do_getaddr(void *m)
|
|||||||
* Called from netconn_close
|
* Called from netconn_close
|
||||||
* In contrast to closing sockets, the netconn is not deallocated.
|
* In contrast to closing sockets, the netconn is not deallocated.
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_close(void *m)
|
lwip_netconn_do_close(void *m)
|
||||||
@ -1841,7 +1840,7 @@ lwip_netconn_do_close(void *m)
|
|||||||
* Join multicast groups for UDP netconns.
|
* Join multicast groups for UDP netconns.
|
||||||
* Called from netconn_join_leave_group
|
* Called from netconn_join_leave_group
|
||||||
*
|
*
|
||||||
* @param msg the api_msg_msg pointing to the connection
|
* @param m the api_msg_msg pointing to the connection
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwip_netconn_do_join_leave_group(void *m)
|
lwip_netconn_do_join_leave_group(void *m)
|
||||||
|
@ -36,6 +36,15 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup netbuf Network buffers
|
||||||
|
* @ingroup netconn
|
||||||
|
* Network buffer descriptor for @ref netconn. Based on @ref pbuf internally
|
||||||
|
* to avoid copying data around.\n
|
||||||
|
* Buffers must not be shared accross multiple threads, all functions except
|
||||||
|
* netbuf_new() and netbuf_delete() are not thread-safe.
|
||||||
|
*/
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "lwip/opt.h"
|
||||||
|
|
||||||
#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
|
||||||
@ -46,6 +55,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Create (allocate) and initialize a new netbuf.
|
* Create (allocate) and initialize a new netbuf.
|
||||||
* The netbuf doesn't yet contain a packet buffer!
|
* The netbuf doesn't yet contain a packet buffer!
|
||||||
*
|
*
|
||||||
@ -79,6 +89,7 @@ netbuf *netbuf_new(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Deallocate a netbuf allocated by netbuf_new().
|
* Deallocate a netbuf allocated by netbuf_new().
|
||||||
*
|
*
|
||||||
* @param buf pointer to a netbuf allocated by netbuf_new()
|
* @param buf pointer to a netbuf allocated by netbuf_new()
|
||||||
@ -96,6 +107,7 @@ netbuf_delete(struct netbuf *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Allocate memory for a packet buffer for a given netbuf.
|
* Allocate memory for a packet buffer for a given netbuf.
|
||||||
*
|
*
|
||||||
* @param buf the netbuf for which to allocate a packet buffer
|
* @param buf the netbuf for which to allocate a packet buffer
|
||||||
@ -123,6 +135,7 @@ netbuf_alloc(struct netbuf *buf, u16_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Free the packet buffer included in a netbuf
|
* Free the packet buffer included in a netbuf
|
||||||
*
|
*
|
||||||
* @param buf pointer to the netbuf which contains the packet buffer to free
|
* @param buf pointer to the netbuf which contains the packet buffer to free
|
||||||
@ -138,6 +151,7 @@ netbuf_free(struct netbuf *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Let a netbuf reference existing (non-volatile) data.
|
* Let a netbuf reference existing (non-volatile) data.
|
||||||
*
|
*
|
||||||
* @param buf netbuf which should reference the data
|
* @param buf netbuf which should reference the data
|
||||||
@ -165,6 +179,7 @@ netbuf_ref(struct netbuf *buf, const void *dataptr, u16_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Chain one netbuf to another (@see pbuf_chain)
|
* Chain one netbuf to another (@see pbuf_chain)
|
||||||
*
|
*
|
||||||
* @param head the first netbuf
|
* @param head the first netbuf
|
||||||
@ -181,6 +196,7 @@ netbuf_chain(struct netbuf *head, struct netbuf *tail)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Get the data pointer and length of the data inside a netbuf.
|
* Get the data pointer and length of the data inside a netbuf.
|
||||||
*
|
*
|
||||||
* @param buf netbuf to get the data from
|
* @param buf netbuf to get the data from
|
||||||
@ -205,6 +221,7 @@ netbuf_data(struct netbuf *buf, void **dataptr, u16_t *len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Move the current data pointer of a packet buffer contained in a netbuf
|
* Move the current data pointer of a packet buffer contained in a netbuf
|
||||||
* to the next part.
|
* to the next part.
|
||||||
* The packet buffer itself is not modified.
|
* The packet buffer itself is not modified.
|
||||||
@ -229,6 +246,7 @@ netbuf_next(struct netbuf *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netbuf
|
||||||
* Move the current data pointer of a packet buffer contained in a netbuf
|
* Move the current data pointer of a packet buffer contained in a netbuf
|
||||||
* to the beginning of the packet.
|
* to the beginning of the packet.
|
||||||
* The packet buffer itself is not modified.
|
* The packet buffer itself is not modified.
|
||||||
|
@ -33,6 +33,12 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup netdbapi NETDB API
|
||||||
|
* @ingroup socket
|
||||||
|
*/
|
||||||
|
|
||||||
#include "lwip/netdb.h"
|
#include "lwip/netdb.h"
|
||||||
|
|
||||||
#if LWIP_DNS && LWIP_SOCKET
|
#if LWIP_DNS && LWIP_SOCKET
|
||||||
@ -364,6 +370,7 @@ lwip_getaddrinfo(const char *nodename, const char *servname,
|
|||||||
return EAI_MEMORY;
|
return EAI_MEMORY;
|
||||||
}
|
}
|
||||||
memset(ai, 0, total_size);
|
memset(ai, 0, total_size);
|
||||||
|
/* cast through void* to get rid of alignment warnings */
|
||||||
sa = (struct sockaddr_storage *)(void*)((u8_t*)ai + sizeof(struct addrinfo));
|
sa = (struct sockaddr_storage *)(void*)((u8_t*)ai + sizeof(struct addrinfo));
|
||||||
if (IP_IS_V6_VAL(addr)) {
|
if (IP_IS_V6_VAL(addr)) {
|
||||||
#if LWIP_IPV6
|
#if LWIP_IPV6
|
||||||
|
@ -31,6 +31,16 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup netifapi NETIF API
|
||||||
|
* @ingroup threadsafe_api
|
||||||
|
* Thread-safe functions to be called from non-TCPIP threads
|
||||||
|
*
|
||||||
|
* @defgroup netifapi_netif NETIF related
|
||||||
|
* @ingroup netifapi
|
||||||
|
* To be called from non-TCPIP threads
|
||||||
|
*/
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "lwip/opt.h"
|
||||||
|
|
||||||
#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */
|
||||||
@ -50,7 +60,9 @@
|
|||||||
static err_t
|
static err_t
|
||||||
netifapi_do_netif_add(struct tcpip_api_call_data *m)
|
netifapi_do_netif_add(struct tcpip_api_call_data *m)
|
||||||
{
|
{
|
||||||
struct netifapi_msg *msg = (struct netifapi_msg*)m;
|
/* cast through void* to silence alignment warnings.
|
||||||
|
* We know it works because the structs have been instantiated as struct netifapi_msg */
|
||||||
|
struct netifapi_msg *msg = (struct netifapi_msg*)(void*)m;
|
||||||
|
|
||||||
if (!netif_add( msg->netif,
|
if (!netif_add( msg->netif,
|
||||||
#if LWIP_IPV4
|
#if LWIP_IPV4
|
||||||
@ -74,7 +86,9 @@ netifapi_do_netif_add(struct tcpip_api_call_data *m)
|
|||||||
static err_t
|
static err_t
|
||||||
netifapi_do_netif_set_addr(struct tcpip_api_call_data *m)
|
netifapi_do_netif_set_addr(struct tcpip_api_call_data *m)
|
||||||
{
|
{
|
||||||
struct netifapi_msg *msg = (struct netifapi_msg*)m;
|
/* cast through void* to silence alignment warnings.
|
||||||
|
* We know it works because the structs have been instantiated as struct netifapi_msg */
|
||||||
|
struct netifapi_msg *msg = (struct netifapi_msg*)(void*)m;
|
||||||
|
|
||||||
netif_set_addr( msg->netif,
|
netif_set_addr( msg->netif,
|
||||||
API_EXPR_REF(msg->msg.add.ipaddr),
|
API_EXPR_REF(msg->msg.add.ipaddr),
|
||||||
@ -91,7 +105,9 @@ netifapi_do_netif_set_addr(struct tcpip_api_call_data *m)
|
|||||||
static err_t
|
static err_t
|
||||||
netifapi_do_netif_common(struct tcpip_api_call_data *m)
|
netifapi_do_netif_common(struct tcpip_api_call_data *m)
|
||||||
{
|
{
|
||||||
struct netifapi_msg *msg = (struct netifapi_msg*)m;
|
/* cast through void* to silence alignment warnings.
|
||||||
|
* We know it works because the structs have been instantiated as struct netifapi_msg */
|
||||||
|
struct netifapi_msg *msg = (struct netifapi_msg*)(void*)m;
|
||||||
|
|
||||||
if (msg->msg.common.errtfunc != NULL) {
|
if (msg->msg.common.errtfunc != NULL) {
|
||||||
return msg->msg.common.errtfunc(msg->netif);
|
return msg->msg.common.errtfunc(msg->netif);
|
||||||
@ -102,6 +118,7 @@ netifapi_do_netif_common(struct tcpip_api_call_data *m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netifapi_netif
|
||||||
* Call netif_add() in a thread-safe way by running that function inside the
|
* Call netif_add() in a thread-safe way by running that function inside the
|
||||||
* tcpip_thread context.
|
* tcpip_thread context.
|
||||||
*
|
*
|
||||||
@ -146,6 +163,7 @@ netifapi_netif_add(struct netif *netif,
|
|||||||
|
|
||||||
#if LWIP_IPV4
|
#if LWIP_IPV4
|
||||||
/**
|
/**
|
||||||
|
* @ingroup netifapi_netif
|
||||||
* Call netif_set_addr() in a thread-safe way by running that function inside the
|
* Call netif_set_addr() in a thread-safe way by running that function inside the
|
||||||
* tcpip_thread context.
|
* tcpip_thread context.
|
||||||
*
|
*
|
||||||
|
@ -38,6 +38,15 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup socket Socket API
|
||||||
|
* @ingroup threadsafe_api
|
||||||
|
* BSD-style socket API.\n
|
||||||
|
* Thread-safe, to be called from non-TCPIP threads only.\n
|
||||||
|
* Can be activated by defining LWIP_SOCKET to 1.\n
|
||||||
|
* Header is in posix/sys/socket.h\b
|
||||||
|
*/
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "lwip/opt.h"
|
||||||
|
|
||||||
#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#include "lwip/init.h"
|
#include "lwip/init.h"
|
||||||
#include "lwip/ip.h"
|
#include "lwip/ip.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "lwip/pbuf.h"
|
||||||
#include "netif/etharp.h"
|
#include "lwip/etharp.h"
|
||||||
|
|
||||||
#define TCPIP_MSG_VAR_REF(name) API_VAR_REF(name)
|
#define TCPIP_MSG_VAR_REF(name) API_VAR_REF(name)
|
||||||
#define TCPIP_MSG_VAR_DECLARE(name) API_VAR_DECLARE(struct tcpip_msg, name)
|
#define TCPIP_MSG_VAR_DECLARE(name) API_VAR_DECLARE(struct tcpip_msg, name)
|
||||||
@ -190,8 +190,10 @@ tcpip_inpkt(struct pbuf *p, struct netif *inp, netif_input_fn input_fn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup lwip_os
|
||||||
* Pass a received packet to tcpip_thread for input processing with
|
* Pass a received packet to tcpip_thread for input processing with
|
||||||
* ethernet_input or ip_input
|
* ethernet_input or ip_input. Don't call directly, pass to netif_add()
|
||||||
|
* and call netif->input().
|
||||||
*
|
*
|
||||||
* @param p the received packet, p->payload pointing to the Ethernet header or
|
* @param p the received packet, p->payload pointing to the Ethernet header or
|
||||||
* to an IP header (if inp doesn't have NETIF_FLAG_ETHARP or
|
* to an IP header (if inp doesn't have NETIF_FLAG_ETHARP or
|
||||||
@ -215,7 +217,7 @@ tcpip_input(struct pbuf *p, struct netif *inp)
|
|||||||
* A function called in that way may access lwIP core code
|
* A function called in that way may access lwIP core code
|
||||||
* without fearing concurrent access.
|
* without fearing concurrent access.
|
||||||
*
|
*
|
||||||
* @param f the function to call
|
* @param function the function to call
|
||||||
* @param ctx parameter passed to f
|
* @param ctx parameter passed to f
|
||||||
* @param block 1 to block until the request is posted, 0 to non-blocking mode
|
* @param block 1 to block until the request is posted, 0 to non-blocking mode
|
||||||
* @return ERR_OK if the function was called, another err_t if not
|
* @return ERR_OK if the function was called, another err_t if not
|
||||||
@ -363,16 +365,15 @@ tcpip_api_call(tcpip_api_call_fn fn, struct tcpip_api_call_data *call)
|
|||||||
return err;
|
return err;
|
||||||
#else /* LWIP_TCPIP_CORE_LOCKING */
|
#else /* LWIP_TCPIP_CORE_LOCKING */
|
||||||
TCPIP_MSG_VAR_DECLARE(msg);
|
TCPIP_MSG_VAR_DECLARE(msg);
|
||||||
err_t err;
|
|
||||||
|
|
||||||
LWIP_ASSERT("Invalid mbox", sys_mbox_valid_val(mbox));
|
|
||||||
|
|
||||||
#if !LWIP_NETCONN_SEM_PER_THREAD
|
#if !LWIP_NETCONN_SEM_PER_THREAD
|
||||||
err = sys_sem_new(&call->sem, 0);
|
err_t err = sys_sem_new(&call->sem, 0);
|
||||||
if (err != ERR_OK) {
|
if (err != ERR_OK) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
#endif /* LWIP_NETCONN_SEM_PER_THREAD */
|
#endif /* LWIP_NETCONN_SEM_PER_THREAD */
|
||||||
|
|
||||||
|
LWIP_ASSERT("Invalid mbox", sys_mbox_valid_val(mbox));
|
||||||
|
|
||||||
TCPIP_MSG_VAR_ALLOC(msg);
|
TCPIP_MSG_VAR_ALLOC(msg);
|
||||||
TCPIP_MSG_VAR_REF(msg).type = TCPIP_MSG_API_CALL;
|
TCPIP_MSG_VAR_REF(msg).type = TCPIP_MSG_API_CALL;
|
||||||
@ -442,6 +443,7 @@ tcpip_trycallback(struct tcpip_callback_msg* msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup lwip_os
|
||||||
* Initialize this module:
|
* Initialize this module:
|
||||||
* - initialize all sub modules
|
* - initialize all sub modules
|
||||||
* - start the tcpip_thread
|
* - start the tcpip_thread
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* LWIP HTTP server implementation
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -31,7 +36,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* This httpd supports for a
|
/**
|
||||||
|
* @defgroup httpd HTTP server
|
||||||
|
* @ingroup apps
|
||||||
|
*
|
||||||
|
* This httpd supports for a
|
||||||
* rudimentary server-side-include facility which will replace tags of the form
|
* rudimentary server-side-include facility which will replace tags of the form
|
||||||
* <!--#tag--> in any file whose extension is .shtml, .shtm or .ssi with
|
* <!--#tag--> in any file whose extension is .shtml, .shtm or .ssi with
|
||||||
* strings provided by an include handler whose pointer is provided to the
|
* strings provided by an include handler whose pointer is provided to the
|
||||||
@ -79,11 +88,14 @@
|
|||||||
* about an unknown extension, make sure to add it (and its doctype) to
|
* about an unknown extension, make sure to add it (and its doctype) to
|
||||||
* the 'g_psHTTPHeaders' list.
|
* the 'g_psHTTPHeaders' list.
|
||||||
*/
|
*/
|
||||||
|
#include "lwip/init.h"
|
||||||
#include "lwip/apps/httpd.h"
|
#include "lwip/apps/httpd.h"
|
||||||
#include "lwip/debug.h"
|
#include "lwip/debug.h"
|
||||||
#include "lwip/stats.h"
|
#include "lwip/stats.h"
|
||||||
#include "lwip/apps/fs.h"
|
#include "lwip/apps/fs.h"
|
||||||
#include "httpd_structs.h"
|
#include "httpd_structs.h"
|
||||||
|
#include "lwip/def.h"
|
||||||
|
#include "lwip/ip.h"
|
||||||
#include "lwip/tcp.h"
|
#include "lwip/tcp.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -104,7 +116,8 @@
|
|||||||
/** These defines check whether tcp_write has to copy data or not */
|
/** These defines check whether tcp_write has to copy data or not */
|
||||||
|
|
||||||
/** This was TI's check whether to let TCP copy data or not
|
/** This was TI's check whether to let TCP copy data or not
|
||||||
#define HTTP_IS_DATA_VOLATILE(hs) ((hs->file < (char *)0x20000000) ? 0 : TCP_WRITE_FLAG_COPY)*/
|
* \#define HTTP_IS_DATA_VOLATILE(hs) ((hs->file < (char *)0x20000000) ? 0 : TCP_WRITE_FLAG_COPY)
|
||||||
|
*/
|
||||||
#ifndef HTTP_IS_DATA_VOLATILE
|
#ifndef HTTP_IS_DATA_VOLATILE
|
||||||
#if LWIP_HTTPD_SSI
|
#if LWIP_HTTPD_SSI
|
||||||
/* Copy for SSI files, no copy for non-SSI files */
|
/* Copy for SSI files, no copy for non-SSI files */
|
||||||
@ -993,7 +1006,8 @@ get_http_headers(struct http_state *hs, const char *uri)
|
|||||||
add_content_len = 0; /* @todo: get maximum file length from SSI */
|
add_content_len = 0; /* @todo: get maximum file length from SSI */
|
||||||
} else
|
} else
|
||||||
#endif /* LWIP_HTTPD_SSI */
|
#endif /* LWIP_HTTPD_SSI */
|
||||||
if ((hs->handle == NULL) || ((hs->handle->flags & FS_FILE_FLAGS_HEADER_PERSISTENT) == 0)) {
|
if ((hs->handle == NULL) ||
|
||||||
|
((hs->handle->flags & (FS_FILE_FLAGS_HEADER_INCLUDED|FS_FILE_FLAGS_HEADER_PERSISTENT)) == FS_FILE_FLAGS_HEADER_INCLUDED)) {
|
||||||
add_content_len = 0;
|
add_content_len = 0;
|
||||||
}
|
}
|
||||||
if (add_content_len) {
|
if (add_content_len) {
|
||||||
@ -2372,7 +2386,8 @@ http_init_file(struct http_state *hs, struct fs_file *file, int is_09, const cha
|
|||||||
} else
|
} else
|
||||||
#endif /* LWIP_HTTPD_SSI */
|
#endif /* LWIP_HTTPD_SSI */
|
||||||
{
|
{
|
||||||
if ((hs->handle != NULL) && ((hs->handle->flags & FS_FILE_FLAGS_HEADER_PERSISTENT) == 0)) {
|
if ((hs->handle != NULL) &&
|
||||||
|
((hs->handle->flags & (FS_FILE_FLAGS_HEADER_INCLUDED|FS_FILE_FLAGS_HEADER_PERSISTENT)) == FS_FILE_FLAGS_HEADER_INCLUDED)) {
|
||||||
hs->keepalive = 0;
|
hs->keepalive = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2543,7 +2558,7 @@ http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
|
|||||||
if (hs->post_content_len_left == 0)
|
if (hs->post_content_len_left == 0)
|
||||||
#endif /* LWIP_HTTPD_SUPPORT_POST */
|
#endif /* LWIP_HTTPD_SUPPORT_POST */
|
||||||
{
|
{
|
||||||
LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_recv: data %p len %"S32_F"\n", hs->file, hs->left));
|
LWIP_DEBUGF(HTTPD_DEBUG | LWIP_DBG_TRACE, ("http_recv: data %p len %"S32_F"\n", (const void*)hs->file, hs->left));
|
||||||
http_send(pcb, hs);
|
http_send(pcb, hs);
|
||||||
}
|
}
|
||||||
} else if (parsed == ERR_ARG) {
|
} else if (parsed == ERR_ARG) {
|
||||||
@ -2600,6 +2615,7 @@ http_accept(void *arg, struct tcp_pcb *pcb, err_t err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup httpd
|
||||||
* Initialize the httpd: set up a listening PCB and bind it to the defined port
|
* Initialize the httpd: set up a listening PCB and bind it to the defined port
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
@ -2608,13 +2624,11 @@ httpd_init(void)
|
|||||||
struct tcp_pcb *pcb;
|
struct tcp_pcb *pcb;
|
||||||
err_t err;
|
err_t err;
|
||||||
|
|
||||||
#if MEMP_MEM_MALLOC || MEM_USE_POOLS || MEMP_USE_CUSTOM_POOLS
|
|
||||||
#if HTTPD_USE_MEM_POOL
|
#if HTTPD_USE_MEM_POOL
|
||||||
LWIP_MEMPOOL_INIT(HTTPD_STATE);
|
LWIP_MEMPOOL_INIT(HTTPD_STATE);
|
||||||
#if LWIP_HTTPD_SSI
|
#if LWIP_HTTPD_SSI
|
||||||
LWIP_MEMPOOL_INIT(HTTPD_SSI_STATE);
|
LWIP_MEMPOOL_INIT(HTTPD_SSI_STATE);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
LWIP_DEBUGF(HTTPD_DEBUG, ("httpd_init\n"));
|
LWIP_DEBUGF(HTTPD_DEBUG, ("httpd_init\n"));
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ tdefl_compressor g_deflator;
|
|||||||
tinfl_decompressor g_inflator;
|
tinfl_decompressor g_inflator;
|
||||||
|
|
||||||
int deflate_level = 10; /* default compression level, can be changed via command line */
|
int deflate_level = 10; /* default compression level, can be changed via command line */
|
||||||
#define USAGE_ARG_DEFLATE " [-defl]"
|
#define USAGE_ARG_DEFLATE " [-defl<:compr_level>]"
|
||||||
#else /* MAKEFS_SUPPORT_DEFLATE */
|
#else /* MAKEFS_SUPPORT_DEFLATE */
|
||||||
#define USAGE_ARG_DEFLATE ""
|
#define USAGE_ARG_DEFLATE ""
|
||||||
#endif /* MAKEFS_SUPPORT_DEFLATE */
|
#endif /* MAKEFS_SUPPORT_DEFLATE */
|
||||||
@ -108,6 +108,7 @@ int deflate_level = 10; /* default compression level, can be changed via command
|
|||||||
/* define this to get the header variables we use to build HTTP headers */
|
/* define this to get the header variables we use to build HTTP headers */
|
||||||
#define LWIP_HTTPD_DYNAMIC_HEADERS 1
|
#define LWIP_HTTPD_DYNAMIC_HEADERS 1
|
||||||
#define LWIP_HTTPD_SSI 1
|
#define LWIP_HTTPD_SSI 1
|
||||||
|
#include "lwip/init.h"
|
||||||
#include "../httpd_structs.h"
|
#include "../httpd_structs.h"
|
||||||
#include "lwip/apps/fs.h"
|
#include "lwip/apps/fs.h"
|
||||||
|
|
||||||
@ -116,6 +117,7 @@ int deflate_level = 10; /* default compression level, can be changed via command
|
|||||||
|
|
||||||
/** (Your server name here) */
|
/** (Your server name here) */
|
||||||
const char *serverID = "Server: "HTTPD_SERVER_AGENT"\r\n";
|
const char *serverID = "Server: "HTTPD_SERVER_AGENT"\r\n";
|
||||||
|
char serverIDBuffer[1024];
|
||||||
|
|
||||||
/* change this to suit your MEM_ALIGNMENT */
|
/* change this to suit your MEM_ALIGNMENT */
|
||||||
#define PAYLOAD_ALIGNMENT 4
|
#define PAYLOAD_ALIGNMENT 4
|
||||||
@ -168,7 +170,7 @@ struct file_entry* last_file = NULL;
|
|||||||
|
|
||||||
static void print_usage(void)
|
static void print_usage(void)
|
||||||
{
|
{
|
||||||
printf(" Usage: htmlgen [targetdir] [-s] [-i] [-f:<filename>] [-m]" USAGE_ARG_DEFLATE NEWLINE NEWLINE);
|
printf(" Usage: htmlgen [targetdir] [-s] [-e] [-i] [-11] [-nossi] [-c] [-f:<filename>] [-m] [-svr:<name>]" USAGE_ARG_DEFLATE NEWLINE NEWLINE);
|
||||||
printf(" targetdir: relative or absolute path to files to convert" NEWLINE);
|
printf(" targetdir: relative or absolute path to files to convert" NEWLINE);
|
||||||
printf(" switch -s: toggle processing of subdirectories (default is on)" NEWLINE);
|
printf(" switch -s: toggle processing of subdirectories (default is on)" NEWLINE);
|
||||||
printf(" switch -e: exclude HTTP header from file (header is created at runtime, default is off)" NEWLINE);
|
printf(" switch -e: exclude HTTP header from file (header is created at runtime, default is off)" NEWLINE);
|
||||||
@ -177,8 +179,9 @@ static void print_usage(void)
|
|||||||
printf(" switch -c: precalculate checksums for all pages (default is off)" NEWLINE);
|
printf(" switch -c: precalculate checksums for all pages (default is off)" NEWLINE);
|
||||||
printf(" switch -f: target filename (default is \"fsdata.c\")" NEWLINE);
|
printf(" switch -f: target filename (default is \"fsdata.c\")" NEWLINE);
|
||||||
printf(" switch -m: include \"Last-Modified\" header based on file time" NEWLINE);
|
printf(" switch -m: include \"Last-Modified\" header based on file time" NEWLINE);
|
||||||
|
printf(" switch -svr: server identifier sent in HTTP response header ('Server' field)" NEWLINE);
|
||||||
#if MAKEFS_SUPPORT_DEFLATE
|
#if MAKEFS_SUPPORT_DEFLATE
|
||||||
printf(" switch -defl: deflate-compress all non-SSI files" NEWLINE);
|
printf(" switch -defl: deflate-compress all non-SSI files (with opt. compr.-level, default=10)" NEWLINE);
|
||||||
printf(" ATTENTION: browser has to support \"Content-Encoding: deflate\"!" NEWLINE);
|
printf(" ATTENTION: browser has to support \"Content-Encoding: deflate\"!" NEWLINE);
|
||||||
#endif
|
#endif
|
||||||
printf(" if targetdir not specified, htmlgen will attempt to" NEWLINE);
|
printf(" if targetdir not specified, htmlgen will attempt to" NEWLINE);
|
||||||
@ -204,28 +207,32 @@ int main(int argc, char *argv[])
|
|||||||
printf(" extended by Simon Goldschmidt - 2009 " NEWLINE NEWLINE);
|
printf(" extended by Simon Goldschmidt - 2009 " NEWLINE NEWLINE);
|
||||||
|
|
||||||
strcpy(path, "fs");
|
strcpy(path, "fs");
|
||||||
for(i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (argv[i] == NULL) {
|
if (argv[i] == NULL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (argv[i][0] == '-') {
|
if (argv[i][0] == '-') {
|
||||||
if (strstr(argv[i], "-s")) {
|
if (strstr(argv[i], "-svr:") == argv[i]) {
|
||||||
|
snprintf(serverIDBuffer, sizeof(serverIDBuffer), "Server: %s\r\n", &argv[i][5]);
|
||||||
|
serverID = serverIDBuffer;
|
||||||
|
printf("Using Server-ID: \"%s\"\n", serverID);
|
||||||
|
} else if (strstr(argv[i], "-s") == argv[i]) {
|
||||||
processSubs = 0;
|
processSubs = 0;
|
||||||
} else if (strstr(argv[i], "-e")) {
|
} else if (strstr(argv[i], "-e") == argv[i]) {
|
||||||
includeHttpHeader = 0;
|
includeHttpHeader = 0;
|
||||||
} else if (strstr(argv[i], "-11")) {
|
} else if (strstr(argv[i], "-11") == argv[i]) {
|
||||||
useHttp11 = 1;
|
useHttp11 = 1;
|
||||||
} else if (strstr(argv[i], "-nossi")) {
|
} else if (strstr(argv[i], "-nossi") == argv[i]) {
|
||||||
supportSsi = 0;
|
supportSsi = 0;
|
||||||
} else if (strstr(argv[i], "-c")) {
|
} else if (strstr(argv[i], "-c") == argv[i]) {
|
||||||
precalcChksum = 1;
|
precalcChksum = 1;
|
||||||
} else if((argv[i][1] == 'f') && (argv[i][2] == ':')) {
|
} else if (strstr(argv[i], "-f:") == argv[i]) {
|
||||||
strncpy(targetfile, &argv[i][3], sizeof(targetfile) - 1);
|
strncpy(targetfile, &argv[i][3], sizeof(targetfile) - 1);
|
||||||
targetfile[sizeof(targetfile) - 1] = 0;
|
targetfile[sizeof(targetfile) - 1] = 0;
|
||||||
printf("Writing to file \"%s\"\n", targetfile);
|
printf("Writing to file \"%s\"\n", targetfile);
|
||||||
} else if (strstr(argv[i], "-m")) {
|
} else if (strstr(argv[i], "-m") == argv[i]) {
|
||||||
includeLastModified = 1;
|
includeLastModified = 1;
|
||||||
} else if (strstr(argv[i], "-defl")) {
|
} else if (strstr(argv[i], "-defl") == argv[i]) {
|
||||||
#if MAKEFS_SUPPORT_DEFLATE
|
#if MAKEFS_SUPPORT_DEFLATE
|
||||||
char* colon = strstr(argv[i], ":");
|
char* colon = strstr(argv[i], ":");
|
||||||
if (colon) {
|
if (colon) {
|
||||||
@ -257,7 +264,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!check_path(path, sizeof(path))) {
|
if (!check_path(path, sizeof(path))) {
|
||||||
printf("Invalid path: \"%s\"." NEWLINE, path);
|
printf("Invalid path: \"%s\"." NEWLINE, path);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
@ -396,8 +403,7 @@ static void copy_file(const char *filename_in, FILE *fout)
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
buf = malloc(COPY_BUFSIZE);
|
buf = malloc(COPY_BUFSIZE);
|
||||||
while((len = fread(buf, 1, COPY_BUFSIZE, fin)) > 0)
|
while ((len = fread(buf, 1, COPY_BUFSIZE, fin)) > 0) {
|
||||||
{
|
|
||||||
fwrite(buf, 1, len, fout);
|
fwrite(buf, 1, len, fout);
|
||||||
}
|
}
|
||||||
free(buf);
|
free(buf);
|
||||||
@ -486,8 +492,7 @@ u8_t* get_file_data(const char* filename, int* file_size, int can_be_compressed,
|
|||||||
}
|
}
|
||||||
fseek(inFile, 0, SEEK_END);
|
fseek(inFile, 0, SEEK_END);
|
||||||
rs = ftell(inFile);
|
rs = ftell(inFile);
|
||||||
if(rs < 0)
|
if (rs < 0) {
|
||||||
{
|
|
||||||
printf("ftell failed with %d\n", errno);
|
printf("ftell failed with %d\n", errno);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
@ -636,8 +641,7 @@ static int is_valid_char_for_c_var(char x)
|
|||||||
if (((x >= 'A') && (x <= 'Z')) ||
|
if (((x >= 'A') && (x <= 'Z')) ||
|
||||||
((x >= 'a') && (x <= 'z')) ||
|
((x >= 'a') && (x <= 'z')) ||
|
||||||
((x >= '0') && (x <= '9')) ||
|
((x >= '0') && (x <= '9')) ||
|
||||||
(x == '_'))
|
(x == '_')) {
|
||||||
{
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -720,7 +724,7 @@ int process_file(FILE *data_file, FILE *struct_file, const char *filename)
|
|||||||
u8_t* file_data;
|
u8_t* file_data;
|
||||||
int is_compressed = 0;
|
int is_compressed = 0;
|
||||||
|
|
||||||
/* create qualified name (TODO: prepend slash or not?) */
|
/* create qualified name (@todo: prepend slash or not?) */
|
||||||
sprintf(qualifiedName,"%s/%s", curSubdir, filename);
|
sprintf(qualifiedName,"%s/%s", curSubdir, filename);
|
||||||
/* create C variable name */
|
/* create C variable name */
|
||||||
strcpy(varname, qualifiedName);
|
strcpy(varname, qualifiedName);
|
||||||
@ -863,13 +867,13 @@ int file_write_http_header(FILE *data_file, const char *filename, int file_size,
|
|||||||
file_ext++;
|
file_ext++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((file_ext == NULL) || (*file_ext == 0)) {
|
if ((file_ext == NULL) || (*file_ext == 0)) {
|
||||||
printf("failed to get extension for file \"%s\", using default.\n", filename);
|
printf("failed to get extension for file \"%s\", using default.\n", filename);
|
||||||
file_type = HTTP_HDR_DEFAULT_TYPE;
|
file_type = HTTP_HDR_DEFAULT_TYPE;
|
||||||
} else {
|
} else {
|
||||||
file_type = NULL;
|
file_type = NULL;
|
||||||
for(j = 0; j < NUM_HTTP_HEADERS; j++) {
|
for (j = 0; j < NUM_HTTP_HEADERS; j++) {
|
||||||
if(!strcmp(file_ext, g_psHTTPHeaders[j].extension)) {
|
if (!strcmp(file_ext, g_psHTTPHeaders[j].extension)) {
|
||||||
file_type = g_psHTTPHeaders[j].content_type;
|
file_type = g_psHTTPHeaders[j].content_type;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -914,14 +918,12 @@ int file_write_http_header(FILE *data_file, const char *filename, int file_size,
|
|||||||
memset(&stat_data, 0, sizeof(stat_data));
|
memset(&stat_data, 0, sizeof(stat_data));
|
||||||
cur_string = modbuf;
|
cur_string = modbuf;
|
||||||
strcpy(modbuf, "Last-Modified: ");
|
strcpy(modbuf, "Last-Modified: ");
|
||||||
if(stat(filename, &stat_data) != 0)
|
if (stat(filename, &stat_data) != 0) {
|
||||||
{
|
|
||||||
printf("stat(%s) failed with error %d\n", filename, errno);
|
printf("stat(%s) failed with error %d\n", filename, errno);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
t = gmtime(&stat_data.st_mtime);
|
t = gmtime(&stat_data.st_mtime);
|
||||||
if(t == NULL)
|
if (t == NULL) {
|
||||||
{
|
|
||||||
printf("gmtime() failed with error %d\n", errno);
|
printf("gmtime() failed with error %d\n", errno);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
@ -1004,7 +1006,7 @@ int file_write_http_header(FILE *data_file, const char *filename, int file_size,
|
|||||||
int file_put_ascii(FILE *file, const char* ascii_string, int len, int *i)
|
int file_put_ascii(FILE *file, const char* ascii_string, int len, int *i)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
for(x = 0; x < len; x++) {
|
for (x = 0; x < len; x++) {
|
||||||
unsigned char cur = ascii_string[x];
|
unsigned char cur = ascii_string[x];
|
||||||
fprintf(file, "0x%02.2x,", cur);
|
fprintf(file, "0x%02.2x,", cur);
|
||||||
if ((++(*i) % HEX_BYTES_PER_LINE) == 0) {
|
if ((++(*i) % HEX_BYTES_PER_LINE) == 0) {
|
||||||
@ -1018,7 +1020,7 @@ int s_put_ascii(char *buf, const char *ascii_string, int len, int *i)
|
|||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
for(x = 0; x < len; x++) {
|
for (x = 0; x < len; x++) {
|
||||||
unsigned char cur = ascii_string[x];
|
unsigned char cur = ascii_string[x];
|
||||||
sprintf(&buf[idx], "0x%02.2x,", cur);
|
sprintf(&buf[idx], "0x%02.2x,", cur);
|
||||||
idx += 5;
|
idx += 5;
|
||||||
|
@ -1,12 +1,17 @@
|
|||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* LWIP iperf server implementation
|
* lwIP iPerf server implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup iperf Iperf server
|
||||||
|
* @ingroup apps
|
||||||
*
|
*
|
||||||
* This is simple "Iperf" server to check your bandwith using Iperf on a PC as client.
|
* This is a simple performance measuring server to check your bandwith using
|
||||||
|
* iPerf2 on a PC as client.
|
||||||
* It is currently a minimal implementation providing an IPv4 TCP server only.
|
* It is currently a minimal implementation providing an IPv4 TCP server only.
|
||||||
*
|
*
|
||||||
* @todo:
|
* @todo: implement UDP mode and IPv6
|
||||||
* - implement UDP mode
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -373,7 +378,7 @@ lwiperf_tx_start(lwiperf_state_tcp_t* conn)
|
|||||||
client_conn->base.server = 0;
|
client_conn->base.server = 0;
|
||||||
client_conn->server_pcb = NULL;
|
client_conn->server_pcb = NULL;
|
||||||
client_conn->conn_pcb = newpcb;
|
client_conn->conn_pcb = newpcb;
|
||||||
client_conn->time_started = sys_now(); /* TODO: set this again on 'connected' */
|
client_conn->time_started = sys_now(); /* @todo: set this again on 'connected' */
|
||||||
client_conn->poll_count = 0;
|
client_conn->poll_count = 0;
|
||||||
client_conn->next_num = 4; /* initial nr is '4' since the header has 24 byte */
|
client_conn->next_num = 4; /* initial nr is '4' since the header has 24 byte */
|
||||||
client_conn->bytes_transferred = 0;
|
client_conn->bytes_transferred = 0;
|
||||||
@ -458,7 +463,7 @@ lwiperf_tcp_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
conn->bytes_transferred += sizeof(lwiperf_settings_t);
|
conn->bytes_transferred += sizeof(lwiperf_settings_t);
|
||||||
if(conn->bytes_transferred <= 24) {
|
if (conn->bytes_transferred <= 24) {
|
||||||
conn->time_started = sys_now();
|
conn->time_started = sys_now();
|
||||||
tcp_recved(tpcb, p->tot_len);
|
tcp_recved(tpcb, p->tot_len);
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
@ -562,7 +567,9 @@ lwiperf_tcp_accept(void *arg, struct tcp_pcb *newpcb, err_t err)
|
|||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Start a TCP iperf server on the default TCP port (5001) and listen for
|
/**
|
||||||
|
* @ingroup iperf
|
||||||
|
* Start a TCP iperf server on the default TCP port (5001) and listen for
|
||||||
* incoming connections from iperf clients.
|
* incoming connections from iperf clients.
|
||||||
*
|
*
|
||||||
* @returns a connection handle that can be used to abort the server
|
* @returns a connection handle that can be used to abort the server
|
||||||
@ -575,7 +582,9 @@ lwiperf_start_tcp_server_default(lwiperf_report_fn report_fn, void* report_arg)
|
|||||||
report_fn, report_arg);
|
report_fn, report_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Start a TCP iperf server on a specific IP address and port and listen for
|
/**
|
||||||
|
* @ingroup iperf
|
||||||
|
* Start a TCP iperf server on a specific IP address and port and listen for
|
||||||
* incoming connections from iperf clients.
|
* incoming connections from iperf clients.
|
||||||
*
|
*
|
||||||
* @returns a connection handle that can be used to abort the server
|
* @returns a connection handle that can be used to abort the server
|
||||||
@ -589,7 +598,7 @@ lwiperf_start_tcp_server(const ip_addr_t* local_addr, u16_t local_port,
|
|||||||
struct tcp_pcb* pcb;
|
struct tcp_pcb* pcb;
|
||||||
lwiperf_state_tcp_t* s;
|
lwiperf_state_tcp_t* s;
|
||||||
|
|
||||||
if(local_addr == NULL) {
|
if (local_addr == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -626,7 +635,10 @@ lwiperf_start_tcp_server(const ip_addr_t* local_addr, u16_t local_port,
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Abort an iperf session (handle returned by lwiperf_start_tcp_server*()) */
|
/**
|
||||||
|
* @ingroup iperf
|
||||||
|
* Abort an iperf session (handle returned by lwiperf_start_tcp_server*())
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
lwiperf_abort(void* lwiperf_session)
|
lwiperf_abort(void* lwiperf_session)
|
||||||
{
|
{
|
||||||
@ -639,7 +651,7 @@ lwiperf_abort(void* lwiperf_session)
|
|||||||
if (last != NULL) {
|
if (last != NULL) {
|
||||||
last->next = i;
|
last->next = i;
|
||||||
}
|
}
|
||||||
LWIPERF_FREE(lwiperf_state_tcp_t, dealloc); /* TODO: type? */
|
LWIPERF_FREE(lwiperf_state_tcp_t, dealloc); /* @todo: type? */
|
||||||
} else {
|
} else {
|
||||||
last = i;
|
last = i;
|
||||||
i = i->next;
|
i = i->next;
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* NetBIOS name service responder
|
* NetBIOS name service responder
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup netbiosns NETBIOS responder
|
||||||
|
* @ingroup apps
|
||||||
*
|
*
|
||||||
* This is an example implementation of a NetBIOS name server.
|
* This is an example implementation of a NetBIOS name server.
|
||||||
* It responds to name queries for a configurable name.
|
* It responds to name queries for a configurable name.
|
||||||
@ -308,6 +313,10 @@ netbiosns_recv(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup netbiosns
|
||||||
|
* Init netbios responder
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
netbiosns_init(void)
|
netbiosns_init(void)
|
||||||
{
|
{
|
||||||
@ -325,19 +334,26 @@ netbiosns_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NETBIOS_LWIP_NAME
|
#ifndef NETBIOS_LWIP_NAME
|
||||||
/* ATTENTION: the hostname must be <= 15 characters! */
|
/**
|
||||||
|
* @ingroup netbiosns
|
||||||
|
* Set netbios name. ATTENTION: the hostname must be less than 15 characters!
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
netbiosns_set_name(const char* hostname)
|
netbiosns_set_name(const char* hostname)
|
||||||
{
|
{
|
||||||
size_t copy_len = strlen(hostname);
|
size_t copy_len = strlen(hostname);
|
||||||
LWIP_ASSERT("NetBIOS name is too long!", copy_len < NETBIOS_NAME_LEN);
|
LWIP_ASSERT("NetBIOS name is too long!", copy_len < NETBIOS_NAME_LEN);
|
||||||
if(copy_len >= NETBIOS_NAME_LEN) {
|
if (copy_len >= NETBIOS_NAME_LEN) {
|
||||||
copy_len = NETBIOS_NAME_LEN - 1;
|
copy_len = NETBIOS_NAME_LEN - 1;
|
||||||
}
|
}
|
||||||
memcpy(netbiosns_local_name, hostname, copy_len + 1);
|
memcpy(netbiosns_local_name, hostname, copy_len + 1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup netbiosns
|
||||||
|
* Stop netbios responder
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
netbiosns_stop(void)
|
netbiosns_stop(void)
|
||||||
{
|
{
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
<?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>
|
|
@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,139 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,64 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,129 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,137 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,67 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
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")]
|
|
@ -1,146 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,82 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,130 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
|
|
||||||
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}") = "LwipMibViewer", "LwipMibViewer\LwipMibViewer.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
|
|
@ -1,73 +0,0 @@
|
|||||||
<?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>
|
|
@ -1,480 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
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")]
|
|
@ -1,3 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<configuration>
|
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
|
@ -1,166 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,217 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,298 +0,0 @@
|
|||||||
<?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>
|
|
@ -1,94 +0,0 @@
|
|||||||
<?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>LwipMibViewer</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>
|
|
@ -1,51 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
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")]
|
|
@ -1,63 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,117 +0,0 @@
|
|||||||
<?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>
|
|
@ -1,26 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
<?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>
|
|
@ -1,3 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<configuration>
|
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
|
@ -1,120 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,199 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,72 +0,0 @@
|
|||||||
<?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>
|
|
@ -1,196 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,129 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
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")]
|
|
@ -1,97 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,293 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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_U16);
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,105 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,395 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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_U16);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,121 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,72 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,86 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,90 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,118 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,91 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,332 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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, LWIP_SNMP_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, result_buf->oid, result_buf->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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,242 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
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
|
|
@ -1,345 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
@ -1,333 +0,0 @@
|
|||||||
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
|
|
@ -1,127 +0,0 @@
|
|||||||
|
|
||||||
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
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
|||||||
|
|
||||||
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
|
|
||||||
|
|
@ -1,770 +0,0 @@
|
|||||||
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
|
|
File diff suppressed because it is too large
Load Diff
@ -1,92 +0,0 @@
|
|||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
@ -1,306 +0,0 @@
|
|||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
@ -1,572 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,421 +0,0 @@
|
|||||||
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
|
|
File diff suppressed because it is too large
Load Diff
@ -1,75 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
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
|
|
@ -1,132 +0,0 @@
|
|||||||
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
|
|
@ -1,129 +0,0 @@
|
|||||||
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
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,318 +0,0 @@
|
|||||||
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
|
|
@ -1,903 +0,0 @@
|
|||||||
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
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user