SDK V1.00.10 uses Lwip version 2.1.3
This commit is contained in:
parent
4ad5c98edb
commit
1c6b25a74b
@ -10,6 +10,6 @@
|
|||||||
#ifndef WM_NETIF_H
|
#ifndef WM_NETIF_H
|
||||||
#define WM_NETIF_H
|
#define WM_NETIF_H
|
||||||
#include "wm_config.h"
|
#include "wm_config.h"
|
||||||
#include "wm_netif2.0.3.h"
|
#include "wm_netif2.1.3.h"
|
||||||
#endif /* WM_NETIF_H */
|
#endif /* WM_NETIF_H */
|
||||||
|
|
||||||
|
|||||||
@ -1,437 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file wm_netif2.0.3.h
|
|
||||||
*
|
|
||||||
* @brief netif203 module
|
|
||||||
*
|
|
||||||
* @author dave
|
|
||||||
*
|
|
||||||
* Copyright (c) 2014 Winner Microelectronics Co., Ltd.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef WM_NETIF2_0_3_H
|
|
||||||
#define WM_NETIF2_0_3_H
|
|
||||||
|
|
||||||
#include "wm_config.h"
|
|
||||||
#include "wm_type_def.h"
|
|
||||||
#include "wm_sockets.h"
|
|
||||||
#include "wm_wifi.h"
|
|
||||||
#include "wm_params.h"
|
|
||||||
|
|
||||||
/** MACRO for callback EVENT to join AP or create soft-AP successfully */
|
|
||||||
#define NETIF_WIFI_JOIN_SUCCESS 0x1
|
|
||||||
/** MACRO for callback EVENT to fail to join AP */
|
|
||||||
#define NETIF_WIFI_JOIN_FAILED 0x2
|
|
||||||
/** MACRO for callback EVENT to disconnect from AP or destroy soft-AP */
|
|
||||||
#define NETIF_WIFI_DISCONNECTED 0x3
|
|
||||||
/** MACRO for callbck EVENT to get IP address */
|
|
||||||
#define NETIF_IP_NET_UP 0x4
|
|
||||||
/** MACRO for callback EVNET to create AP successfully */
|
|
||||||
#define NETIF_WIFI_SOFTAP_SUCCESS 0x5
|
|
||||||
/** MACRO for callback EVNET to create soft-AP failed */
|
|
||||||
#define NETIF_WIFI_SOFTAP_FAILED 0x6
|
|
||||||
/** MACRO for callback EVNET to close soft-AP */
|
|
||||||
#define NETIF_WIFI_SOFTAP_CLOSED 0x7
|
|
||||||
/** MACRO for callback EVNET to inform soft ap's net */
|
|
||||||
#define NETIF_IP_NET2_UP 0x8
|
|
||||||
|
|
||||||
#define NETIF_IPV6_NET_UP 0x9
|
|
||||||
|
|
||||||
/** These are the values for ip_addr_t.type */
|
|
||||||
#define IPADDR_TYPE_V4 0U
|
|
||||||
#define IPADDR_TYPE_V6 6U
|
|
||||||
#define IPADDR_TYPE_ANY 46U
|
|
||||||
|
|
||||||
#define IPV6_ADDR_MAX_NUM 3
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
struct ip_addr {
|
|
||||||
u32_t addr;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct ip_addr ip_addr_t;
|
|
||||||
#endif
|
|
||||||
#if 0
|
|
||||||
struct ip4_addr {
|
|
||||||
u32_t addr;
|
|
||||||
};
|
|
||||||
typedef struct ip4_addr ip4_addr_t;
|
|
||||||
|
|
||||||
struct ip6_addr {
|
|
||||||
u32_t addr[4];
|
|
||||||
};
|
|
||||||
typedef struct ip6_addr ip6_addr_t;
|
|
||||||
|
|
||||||
#if (TLS_CONFIG_IPV4 && TLS_CONFIG_IPV6)
|
|
||||||
typedef struct _ip_addr {
|
|
||||||
union {
|
|
||||||
ip6_addr_t ip6;
|
|
||||||
ip4_addr_t ip4;
|
|
||||||
} u_addr;
|
|
||||||
u8_t type;
|
|
||||||
} ip_addr_t;
|
|
||||||
#else
|
|
||||||
#if TLS_CONFIG_IPV4
|
|
||||||
typedef ip4_addr_t ip_addr_t;
|
|
||||||
#else
|
|
||||||
typedef ip6_addr_t ip_addr_t;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
struct tls_ethif {
|
|
||||||
ip_addr_t ip_addr;
|
|
||||||
ip_addr_t netmask;
|
|
||||||
ip_addr_t gw;
|
|
||||||
#if TLS_CONFIG_IPV6
|
|
||||||
ip_addr_t ip6_addr[IPV6_ADDR_MAX_NUM];
|
|
||||||
#endif
|
|
||||||
ip_addr_t dns1;
|
|
||||||
ip_addr_t dns2;
|
|
||||||
u8 status; //0:net down; 1:net up
|
|
||||||
#if TLS_CONFIG_IPV6
|
|
||||||
u8 ipv6_status[IPV6_ADDR_MAX_NUM]; //0:net down; 1:net up
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
//type defination of netif status changed callback.
|
|
||||||
typedef void (*tls_netif_status_event_fn)(u8 status);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup APP_APIs APP APIs
|
|
||||||
* @brief APP APIs
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup APP_APIs
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup NETIF_APIs NETIF APIs
|
|
||||||
* @brief network interface APIs
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup NETIF_APIs
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to initialize TCP/IP Stack
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval other failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
int tls_ethernet_init(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to get IP information stored in
|
|
||||||
tls_ethif struct
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval tls_ethif * Pointer to struct tls_ethif
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
struct tls_ethif * tls_netif_get_ethif(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to set tls_ethif status
|
|
||||||
*
|
|
||||||
* @param[in] status net status, 0-up, 1-down
|
|
||||||
*
|
|
||||||
* @return None
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
void tls_netif_set_status(u8 status);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to start DHCP Client
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_dhcp_start(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to stop DHCP client
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_dhcp_stop(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to change IP information
|
|
||||||
*
|
|
||||||
* @param[in] *ipaddr IP address
|
|
||||||
* @param[in] *netmask netmask
|
|
||||||
* @param[in] *gw default gateway
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_netif_set_addr(ip_addr_t *ipaddr,
|
|
||||||
ip_addr_t *netmask,
|
|
||||||
ip_addr_t *gw);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to set dns servers
|
|
||||||
*
|
|
||||||
* @param[in] numdns index of the DNS server to set
|
|
||||||
must be < DNS_MAX_SERVERS
|
|
||||||
* @param[in] *dnsserver IP address of the DNS server to set
|
|
||||||
*
|
|
||||||
* @return None
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
void tls_netif_dns_setserver(u8 numdns, ip_addr_t *dnsserver);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to bring up an interface,available
|
|
||||||
for processing traffic
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_netif_set_up(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to bring down an interface,disabling
|
|
||||||
any traffic processing
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_netif_set_down(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to add netif status changed callback
|
|
||||||
to event list,if exists, do nothing
|
|
||||||
*
|
|
||||||
* @param[in] event_fn pointer to tls_netif_status_event_fn
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_netif_add_status_event(tls_netif_status_event_fn event_fn);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to remove netif status changed
|
|
||||||
callback function from event list,if not exists, do nothing
|
|
||||||
*
|
|
||||||
* @param[in] event_fn pointer to tls_netif_status_event_fn
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
err_t tls_netif_remove_status_event(tls_netif_status_event_fn event_fn);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to get pointer of netif
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval pointer of netif
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
struct netif *tls_get_netif(void);
|
|
||||||
|
|
||||||
#if TLS_CONFIG_AP
|
|
||||||
/**
|
|
||||||
* @brief Start DHCP Server for a network interface
|
|
||||||
* *
|
|
||||||
* @retval DHCPS_ERR_SUCCESS - No error
|
|
||||||
* @retval DHCPS_ERR_MEM - Out of memory
|
|
||||||
* @retval DHCPS_ERR_LINKDOWN - The NI is inactive
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
INT8S tls_dhcps_start(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to stop DHCP Server
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval None
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
void tls_dhcps_stop(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Start the dns server's service
|
|
||||||
* *
|
|
||||||
* @retval DHCPS_ERR_SUCCESS - No error
|
|
||||||
* @retval DHCPS_ERR_MEM - Out of memory
|
|
||||||
* @retval DHCPS_ERR_LINKDOWN - The NI is inactive
|
|
||||||
* @retval DNSS_ERR_PARAM - Input parameter error
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
INT8S tls_dnss_start(INT8U * DnsName);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Stop the dns server's service
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval None
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
void tls_dnss_stop(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get station's ip address by mac address
|
|
||||||
*
|
|
||||||
* @param[in] mac station's mac address
|
|
||||||
*
|
|
||||||
* @retval ip_addr station's ip address
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
ip_addr_t *tls_dhcps_getip(const u8_t *mac);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get station's mac address by ip address
|
|
||||||
*
|
|
||||||
* @param[in] ip station's ip address
|
|
||||||
*
|
|
||||||
* @retval u8* station's mac address
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
u8 *tls_dhcps_getmac(const ip_addr_t *ip);
|
|
||||||
#endif //TLS_CONFIG_AP
|
|
||||||
|
|
||||||
#if TLS_CONFIG_RMMS
|
|
||||||
/**
|
|
||||||
* @brief Start remote manager server.
|
|
||||||
* *
|
|
||||||
* @retval DHCPS_ERR_SUCCESS - No error
|
|
||||||
* @retval DHCPS_ERR_MEM - Out of memory
|
|
||||||
* @retval DHCPS_ERR_LINKDOWN - The NIF is inactive
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
INT8S tls_rmms_start(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Disable remote manager server
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval None
|
|
||||||
*
|
|
||||||
* @note None
|
|
||||||
*/
|
|
||||||
void tls_rmms_stop(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TLS_CONFIG_AP
|
|
||||||
/**
|
|
||||||
* @brief This is used to bring up an interface for APSTA,available
|
|
||||||
for processing traffic
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note Can only be used at APSTA mode
|
|
||||||
*/
|
|
||||||
err_t tls_netif2_set_up(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to bring down an interface for APSTA, disabling
|
|
||||||
any traffic processing
|
|
||||||
*
|
|
||||||
* @param[in] None
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note Can only be used at APSTA mode
|
|
||||||
*/
|
|
||||||
err_t tls_netif2_set_down(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is used to change IP information for
|
|
||||||
a network interface for APSTA
|
|
||||||
*
|
|
||||||
* @param[in] *ipaddr IP address
|
|
||||||
* @param[in] *netmask netmask
|
|
||||||
* @param[in] *gw default gateway
|
|
||||||
*
|
|
||||||
* @retval 0 success
|
|
||||||
* @retval Minus failed
|
|
||||||
*
|
|
||||||
* @note Can only be used at APSTA mode
|
|
||||||
*/
|
|
||||||
err_t tls_netif2_set_addr(ip_addr_t *ipaddr,
|
|
||||||
ip_addr_t *netmask,
|
|
||||||
ip_addr_t *gw);
|
|
||||||
/***************************************************************************
|
|
||||||
* Function: tls_dhcps_setdns
|
|
||||||
* Description: Set dhcp server's dns address.
|
|
||||||
*
|
|
||||||
* Input: numdns: the index of the DNS server to set must be less than DNS_MAX_SERVERS
|
|
||||||
*
|
|
||||||
* Output: None
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*
|
|
||||||
* Date : 2015-3-10
|
|
||||||
****************************************************************************/
|
|
||||||
/**
|
|
||||||
* @brief Set dhcp server's dns address
|
|
||||||
*
|
|
||||||
* @param[in] numdns the index of the DNS server to set must be less than DNS_MAX_SERVERS
|
|
||||||
*
|
|
||||||
* @retval None
|
|
||||||
*
|
|
||||||
* @note Can only be used at APSTA mode
|
|
||||||
*/
|
|
||||||
void tls_dhcps_setdns(u8_t numdns);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif //WM_NETIF_H
|
|
||||||
@ -37,6 +37,8 @@ extern int tls_filter_module_srcmac(u8 *mac);
|
|||||||
|
|
||||||
/** WinnerMicro ONSHOT */
|
/** WinnerMicro ONSHOT */
|
||||||
#define TLS_CONFIG_UDP_LSD_SPECIAL (ONESHOT_ON&& TLS_CONFIG_UDP_ONE_SHOT)
|
#define TLS_CONFIG_UDP_LSD_SPECIAL (ONESHOT_ON&& TLS_CONFIG_UDP_ONE_SHOT)
|
||||||
|
/** Delay start plcp receive*/
|
||||||
|
#define TLS_CONFIG_ONESHOT_DELAY_SPECIAL ONESHOT_ON
|
||||||
|
|
||||||
/** AP ONESHOT */
|
/** AP ONESHOT */
|
||||||
#define TLS_CONFIG_AP_MODE_ONESHOT (ONESHOT_ON && TLS_CONFIG_AP)
|
#define TLS_CONFIG_AP_MODE_ONESHOT (ONESHOT_ON && TLS_CONFIG_AP)
|
||||||
@ -45,7 +47,7 @@ extern int tls_filter_module_srcmac(u8 *mac);
|
|||||||
|
|
||||||
|
|
||||||
/** AIRKISS ONESHOT */
|
/** AIRKISS ONESHOT */
|
||||||
#define TLS_CONFIG_AIRKISS_MODE_ONESHOT (ONESHOT_OFF && TLS_CONFIG_UDP_ONE_SHOT)
|
#define TLS_CONFIG_AIRKISS_MODE_ONESHOT (ONESHOT_ON && TLS_CONFIG_UDP_ONE_SHOT)
|
||||||
#define AIRKISS_USE_SELF_WRITE 1
|
#define AIRKISS_USE_SELF_WRITE 1
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
#ifndef WM_SOCKET_H
|
#ifndef WM_SOCKET_H
|
||||||
#define WM_SOCKET_H
|
#define WM_SOCKET_H
|
||||||
#include "wm_config.h"
|
#include "wm_config.h"
|
||||||
#include "wm_socket2.0.3.h"
|
#include "wm_socket2.1.3.h"
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,17 +1,20 @@
|
|||||||
/**
|
/**
|
||||||
* @file wm_socket2.0.3.h
|
* @file wm_socket2.1.3.h
|
||||||
*
|
*
|
||||||
* @brief socket203 Module
|
* @brief socket2.1.3 apis
|
||||||
*
|
*
|
||||||
* @author dave
|
* @author winnermicro
|
||||||
*
|
*
|
||||||
* @copyright (c) 2014 Winner Microelectronics Co., Ltd.
|
* @copyright (c) 2014 Winner Microelectronics Co., Ltd.
|
||||||
*/
|
*/
|
||||||
#ifndef WM_SOCKET2_0_3_H
|
#ifndef WM_SOCKET2_1_3_H
|
||||||
#define WM_SOCKET2_0_3_H
|
#define WM_SOCKET2_1_3_H
|
||||||
|
|
||||||
#include "wm_type_def.h"
|
#include "wm_type_def.h"
|
||||||
#include "wm_netif.h"
|
#include "wm_netif.h"
|
||||||
|
#include "lwip/err.h"
|
||||||
|
#include "lwip/pbuf.h"
|
||||||
|
|
||||||
|
|
||||||
//socket state defination
|
//socket state defination
|
||||||
#define NETCONN_STATE_NONE 0
|
#define NETCONN_STATE_NONE 0
|
||||||
@ -30,40 +33,6 @@
|
|||||||
#define TLS_MAX_SOCKET_NUM 4
|
#define TLS_MAX_SOCKET_NUM 4
|
||||||
#define TLS_MAX_NETCONN_NUM 20
|
#define TLS_MAX_NETCONN_NUM 20
|
||||||
|
|
||||||
/** Main packet buffer struct */
|
|
||||||
struct pbuf {
|
|
||||||
/** next pbuf in singly linked pbuf chain */
|
|
||||||
struct pbuf *next;
|
|
||||||
|
|
||||||
/** pointer to the actual data in the buffer */
|
|
||||||
void *payload;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* total length of this buffer and all next buffers in chain
|
|
||||||
* belonging to the same packet.
|
|
||||||
*
|
|
||||||
* For non-queue packet chains this is the invariant:
|
|
||||||
* p->tot_len == p->len + (p->next? p->next->tot_len: 0)
|
|
||||||
*/
|
|
||||||
u16_t tot_len;
|
|
||||||
|
|
||||||
/** length of this buffer */
|
|
||||||
u16_t len;
|
|
||||||
|
|
||||||
/** pbuf_type as u8_t instead of enum to save space */
|
|
||||||
u8_t /*pbuf_type*/ type;
|
|
||||||
|
|
||||||
/** misc flags */
|
|
||||||
u8_t flags;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* the reference count always equals the number of pointers
|
|
||||||
* that refer to this pbuf. This can be pointers from an application,
|
|
||||||
* the stack itself, or pbuf->next pointers from a chain.
|
|
||||||
*/
|
|
||||||
u16_t ref;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This Function prototype for tcp error callback functions. Called when
|
* @brief This Function prototype for tcp error callback functions. Called when
|
||||||
* receives a RST or is unexpectedly closed for any other reason.
|
* receives a RST or is unexpectedly closed for any other reason.
|
||||||
@ -169,45 +138,6 @@ typedef err_t (*socket_accept_fn)(u8 skt_num, err_t err);
|
|||||||
*/
|
*/
|
||||||
typedef void(*socket_state_changed_fn)(u8 skt_num, u8 event, u8 state);
|
typedef void(*socket_state_changed_fn)(u8 skt_num, u8 event, u8 state);
|
||||||
|
|
||||||
/** Definitions for error constants. */
|
|
||||||
typedef enum {
|
|
||||||
/** No error, everything OK. */
|
|
||||||
ERR_OK = 0,
|
|
||||||
/** Out of memory error. */
|
|
||||||
ERR_MEM = -1,
|
|
||||||
/** Buffer error. */
|
|
||||||
ERR_BUF = -2,
|
|
||||||
/** Timeout. */
|
|
||||||
ERR_TIMEOUT = -3,
|
|
||||||
/** Routing problem. */
|
|
||||||
ERR_RTE = -4,
|
|
||||||
/** Operation in progress */
|
|
||||||
ERR_INPROGRESS = -5,
|
|
||||||
/** Illegal value. */
|
|
||||||
ERR_VAL = -6,
|
|
||||||
/** Operation would block. */
|
|
||||||
ERR_WOULDBLOCK = -7,
|
|
||||||
/** Address in use. */
|
|
||||||
ERR_USE = -8,
|
|
||||||
/** Already connecting. */
|
|
||||||
ERR_ALREADY = -9,
|
|
||||||
/** Conn already established.*/
|
|
||||||
ERR_ISCONN = -10,
|
|
||||||
/** Not connected. */
|
|
||||||
ERR_CONN = -11,
|
|
||||||
/** Low-level netif error */
|
|
||||||
ERR_IF = -12,
|
|
||||||
|
|
||||||
/** Connection aborted. */
|
|
||||||
ERR_ABRT = -13,
|
|
||||||
/** Connection reset. */
|
|
||||||
ERR_RST = -14,
|
|
||||||
/** Connection closed. */
|
|
||||||
ERR_CLSD = -15,
|
|
||||||
/** Illegal argument. */
|
|
||||||
ERR_ARG = -16
|
|
||||||
} err_enum_t;
|
|
||||||
|
|
||||||
enum tls_socket_protocol{
|
enum tls_socket_protocol{
|
||||||
SOCKET_PROTO_TCP, /* TCP Protocol */
|
SOCKET_PROTO_TCP, /* TCP Protocol */
|
||||||
SOCKET_PROTO_UDP, /* UDP Protocol */
|
SOCKET_PROTO_UDP, /* UDP Protocol */
|
||||||
@ -317,106 +247,5 @@ int tls_socket_get_status(u8 skt_num, u8 *buf, u32 bufsize);
|
|||||||
*/
|
*/
|
||||||
int tls_socket_udp_sendto(u16 localport, u8 *ip_addr, u16 port, void *pdata, u16 len);
|
int tls_socket_udp_sendto(u16 localport, u8 *ip_addr, u16 port, void *pdata, u16 len);
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup pbuf
|
|
||||||
* Enumeration of pbuf layers
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
/** Includes spare room for transport layer header, e.g. UDP header.
|
|
||||||
* Use this if you intend to pass the pbuf to functions like udp_send().
|
|
||||||
*/
|
|
||||||
PBUF_TRANSPORT,
|
|
||||||
/** Includes spare room for IP header.
|
|
||||||
* Use this if you intend to pass the pbuf to functions like raw_send().
|
|
||||||
*/
|
|
||||||
PBUF_IP,
|
|
||||||
/** Includes spare room for link layer header (ethernet header).
|
|
||||||
* Use this if you intend to pass the pbuf to functions like ethernet_output().
|
|
||||||
* @see PBUF_LINK_HLEN
|
|
||||||
*/
|
|
||||||
PBUF_LINK,
|
|
||||||
/** Includes spare room for additional encapsulation header before ethernet
|
|
||||||
* headers (e.g. 802.11).
|
|
||||||
* Use this if you intend to pass the pbuf to functions like netif->linkoutput().
|
|
||||||
* @see PBUF_LINK_ENCAPSULATION_HLEN
|
|
||||||
*/
|
|
||||||
PBUF_RAW_TX,
|
|
||||||
/** Use this for input packets in a netif driver when calling netif->input()
|
|
||||||
* in the most common case - ethernet-layer netif driver. */
|
|
||||||
PBUF_RAW
|
|
||||||
} pbuf_layer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup pbuf
|
|
||||||
* Enumeration of pbuf types
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
/** pbuf data is stored in RAM, used for TX mostly, struct pbuf and its payload
|
|
||||||
are allocated in one piece of contiguous memory (so the first payload byte
|
|
||||||
can be calculated from struct pbuf).
|
|
||||||
pbuf_alloc() allocates PBUF_RAM pbufs as unchained pbufs (although that might
|
|
||||||
change in future versions).
|
|
||||||
This should be used for all OUTGOING packets (TX).*/
|
|
||||||
PBUF_RAM,
|
|
||||||
/** pbuf data is stored in ROM, i.e. struct pbuf and its payload are located in
|
|
||||||
totally different memory areas. Since it points to ROM, payload does not
|
|
||||||
have to be copied when queued for transmission. */
|
|
||||||
PBUF_ROM,
|
|
||||||
/** pbuf comes from the pbuf pool. Much like PBUF_ROM but payload might change
|
|
||||||
so it has to be duplicated when queued before transmitting, depending on
|
|
||||||
who has a 'ref' to it. */
|
|
||||||
PBUF_REF,
|
|
||||||
/** pbuf payload refers to RAM. This one comes from a pool and should be used
|
|
||||||
for RX. Payload can be chained (scatter-gather RX) but like PBUF_RAM, struct
|
|
||||||
pbuf and its payload are allocated in one piece of contiguous memory (so
|
|
||||||
the first payload byte can be calculated from struct pbuf).
|
|
||||||
Don't use this for TX, if the pool becomes empty e.g. because of TCP queuing,
|
|
||||||
you are unable to receive TCP acks! */
|
|
||||||
PBUF_POOL
|
|
||||||
} pbuf_type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This Function allocates a pbuf of the given type (possibly a chain for PBUF_POOL type).
|
|
||||||
*
|
|
||||||
* The actual memory allocated for the pbuf is determined by the
|
|
||||||
* layer at which the pbuf is allocated and the requested size
|
|
||||||
* (from the size parameter).
|
|
||||||
*
|
|
||||||
* @param[in] l layer flag to define header size
|
|
||||||
* @param[in] length size of the pbuf's payload
|
|
||||||
* @param[in] type this parameter decides how and where the pbuf
|
|
||||||
*
|
|
||||||
* @retval The allocated pbuf. If multiple pbufs where allocated, this
|
|
||||||
* is the first pbuf of a pbuf chain.
|
|
||||||
*/
|
|
||||||
struct pbuf *pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This Function for release the buffer that you receive within the socket_recv_fn callback function.
|
|
||||||
* Attention please: If you return ERR_OK in the socket_recv_fn callback function, you must call this
|
|
||||||
* function to release the buffer by yourself. Otherwise, the buffer do not need be
|
|
||||||
* released by your code.
|
|
||||||
*
|
|
||||||
* @param[in] p The buffer you received in the socket_recv_fn callback function.
|
|
||||||
*
|
|
||||||
* @retval The number of de-allocated pbufs
|
|
||||||
*/
|
|
||||||
u8 pbuf_free(struct pbuf *p);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This Function for copy (part of) the contents of a packet buffer to an application supplied buffer.
|
|
||||||
*
|
|
||||||
* @param[in] p the pbuf from which to copy data.
|
|
||||||
*
|
|
||||||
* @param[in] dataptr the application supplied buffer
|
|
||||||
*
|
|
||||||
* @param[in] len length of data to copy (dataptr must be big enough). No more
|
|
||||||
* than buf->tot_len will be copied, irrespective of len
|
|
||||||
*
|
|
||||||
* @param[in] offset offset into the packet buffer from where to begin copying len bytes
|
|
||||||
*
|
|
||||||
* @retval The number of bytes copied, or 0 on failure
|
|
||||||
*/
|
|
||||||
u16_t pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -10,6 +10,6 @@
|
|||||||
#ifndef WM_SOCKET_API_H
|
#ifndef WM_SOCKET_API_H
|
||||||
#define WM_SOCKET_API_H
|
#define WM_SOCKET_API_H
|
||||||
#include "wm_config.h"
|
#include "wm_config.h"
|
||||||
#include "wm_sockets2.0.3.h"
|
#include "wm_sockets2.1.3.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
26
src/W800_SDK_v1.00.10/include/net/wm_sockets2.1.3.h
Normal file
26
src/W800_SDK_v1.00.10/include/net/wm_sockets2.1.3.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* @file wm_sockets2.1.3.h
|
||||||
|
*
|
||||||
|
* @brief sockets2.1.3 apis
|
||||||
|
*
|
||||||
|
* @author winnermicro
|
||||||
|
*
|
||||||
|
* @copyright (c) 2014 Winner Microelectronics Co., Ltd.
|
||||||
|
*/
|
||||||
|
#ifndef WM_SOCKET_API2_1_3_H
|
||||||
|
#define WM_SOCKET_API2_1_3_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "wm_type_def.h"
|
||||||
|
#include "wm_config.h"
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include "lwip/ip_addr.h"
|
||||||
|
#include "lwip/sockets.h"
|
||||||
|
#include "lwip/netdb.h"
|
||||||
|
|
||||||
|
extern void print_ipaddr(ip_addr_t *ip);
|
||||||
|
extern struct netif *wm_ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@ -1,122 +0,0 @@
|
|||||||
#include "lwip/opt.h"
|
|
||||||
|
|
||||||
#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
|
|
||||||
|
|
||||||
#include "lwip/sockets.h"
|
|
||||||
|
|
||||||
extern struct hostent* lwip_gethostbyname(const char *name);
|
|
||||||
int
|
|
||||||
accept(int s, struct sockaddr *addr, socklen_t *addrlen)
|
|
||||||
{
|
|
||||||
return lwip_accept(s, addr, addrlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
bind(int s, const struct sockaddr *name, socklen_t namelen)
|
|
||||||
{
|
|
||||||
return lwip_bind(s, name, namelen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
shutdown(int s, int how)
|
|
||||||
{
|
|
||||||
return lwip_shutdown(s, how);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
closesocket(int s)
|
|
||||||
{
|
|
||||||
return lwip_close(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
connect(int s, const struct sockaddr *name, socklen_t namelen)
|
|
||||||
{
|
|
||||||
return lwip_connect(s, name, namelen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
getsockname(int s, struct sockaddr *name, socklen_t *namelen)
|
|
||||||
{
|
|
||||||
return lwip_getsockname(s, name, namelen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
getpeername(int s, struct sockaddr *name, socklen_t *namelen)
|
|
||||||
{
|
|
||||||
return lwip_getpeername(s, name, namelen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
|
|
||||||
{
|
|
||||||
return lwip_setsockopt(s, level, optname, optval, optlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
|
|
||||||
{
|
|
||||||
return lwip_getsockopt(s, level, optname, optval, optlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
listen(int s, int backlog)
|
|
||||||
{
|
|
||||||
return lwip_listen(s, backlog);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
recv(int s, void *mem, size_t len, int flags)
|
|
||||||
{
|
|
||||||
return lwip_recv(s, mem, len, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
recvfrom(int s, void *mem, size_t len, int flags,
|
|
||||||
struct sockaddr *from, socklen_t *fromlen)
|
|
||||||
{
|
|
||||||
return lwip_recvfrom(s, mem, len, flags, from, fromlen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
send(int s, const void *data, size_t size, int flags)
|
|
||||||
{
|
|
||||||
return lwip_send(s, data, size, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
sendto(int s, const void *data, size_t size, int flags,
|
|
||||||
const struct sockaddr *to, socklen_t tolen)
|
|
||||||
{
|
|
||||||
return lwip_sendto(s, data, size, flags, to, tolen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
socket(int domain, int type, int protocol)
|
|
||||||
{
|
|
||||||
return lwip_socket(domain, type, protocol);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
|
|
||||||
struct timeval *timeout)
|
|
||||||
{
|
|
||||||
return lwip_select(maxfdp1, readset, writeset, exceptset, timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
ioctlsocket(int s, long cmd, void *argp)
|
|
||||||
{
|
|
||||||
return lwip_ioctl(s, cmd, argp);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
fcntl(int s, int cmd, int val)
|
|
||||||
{
|
|
||||||
return lwip_fcntl(s, cmd, val);
|
|
||||||
}
|
|
||||||
struct hostent* gethostbyname(const char *name){
|
|
||||||
return lwip_gethostbyname(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LWIP_SOCKET */
|
|
||||||
@ -67,7 +67,6 @@ struct tls_netconn *get_server_conn(struct tls_netconn *conn)
|
|||||||
static struct tls_netconn *net_alloc_socket(struct tls_netconn *conn)
|
static struct tls_netconn *net_alloc_socket(struct tls_netconn *conn)
|
||||||
{
|
{
|
||||||
int sock=-1, i=0, j=0;
|
int sock=-1, i=0, j=0;
|
||||||
u32 cpu_sr;
|
|
||||||
struct tls_netconn * conn_t = NULL;
|
struct tls_netconn * conn_t = NULL;
|
||||||
|
|
||||||
for (i = 0; i < TLS_MAX_NETCONN_NUM; i++)
|
for (i = 0; i < TLS_MAX_NETCONN_NUM; i++)
|
||||||
@ -98,9 +97,9 @@ static struct tls_netconn *net_alloc_socket(struct tls_netconn *conn)
|
|||||||
TLS_DBGPRT_ERR("sock < 0\n");
|
TLS_DBGPRT_ERR("sock < 0\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
cpu_sr = tls_os_set_critical();
|
|
||||||
conn_t = tls_mem_alloc(sizeof(struct tls_netconn));
|
conn_t = tls_mem_alloc(sizeof(struct tls_netconn));
|
||||||
tls_os_release_critical(cpu_sr);
|
|
||||||
if (NULL != conn_t) {
|
if (NULL != conn_t) {
|
||||||
p_net_conn[sock] = conn_t;
|
p_net_conn[sock] = conn_t;
|
||||||
memset(conn_t, 0, sizeof(struct tls_netconn));
|
memset(conn_t, 0, sizeof(struct tls_netconn));
|
||||||
@ -410,7 +409,7 @@ static err_t net_tcp_recv_cb(void *arg,
|
|||||||
|
|
||||||
LWIP_UNUSED_ARG(pcb);
|
LWIP_UNUSED_ARG(pcb);
|
||||||
LWIP_ASSERT("must have a pcb argument", pcb != NULL);
|
LWIP_ASSERT("must have a pcb argument", pcb != NULL);
|
||||||
LWIP_ASSERT("must have an argument", arg < 0);
|
//LWIP_ASSERT("must have an argument", arg < 0);
|
||||||
socketno = (int)arg;
|
socketno = (int)arg;
|
||||||
conn = tls_net_get_socket(socketno);
|
conn = tls_net_get_socket(socketno);
|
||||||
if(conn == NULL || TRUE != conn->used)
|
if(conn == NULL || TRUE != conn->used)
|
||||||
@ -716,7 +715,7 @@ static void net_udp_recv_cb(void *arg, struct udp_pcb *pcb,
|
|||||||
//TLS_DBGPRT_INFO("=====>\n");
|
//TLS_DBGPRT_INFO("=====>\n");
|
||||||
LWIP_UNUSED_ARG(pcb); /* only used for asserts... */
|
LWIP_UNUSED_ARG(pcb); /* only used for asserts... */
|
||||||
LWIP_ASSERT("recv_udp must have a pcb argument", pcb != NULL);
|
LWIP_ASSERT("recv_udp must have a pcb argument", pcb != NULL);
|
||||||
LWIP_ASSERT("recv_udp must have an argument", arg < 0);
|
//LWIP_ASSERT("recv_udp must have an argument", arg < 0);
|
||||||
socketno = (int)arg;
|
socketno = (int)arg;
|
||||||
conn = tls_net_get_socket(socketno);
|
conn = tls_net_get_socket(socketno);
|
||||||
if(conn == NULL || conn->used != TRUE || NULL == pcb){
|
if(conn == NULL || conn->used != TRUE || NULL == pcb){
|
||||||
@ -959,7 +958,7 @@ static err_t net_skt_tcp_send(struct tls_net_msg *net_msg)
|
|||||||
err = tcp_write(pcb, net_msg->dataptr, net_msg->len, TCP_WRITE_FLAG_COPY);
|
err = tcp_write(pcb, net_msg->dataptr, net_msg->len, TCP_WRITE_FLAG_COPY);
|
||||||
if (err == ERR_OK){
|
if (err == ERR_OK){
|
||||||
//sys_sem_signal(&net_msg->conn->op_completed);
|
//sys_sem_signal(&net_msg->conn->op_completed);
|
||||||
tcp_output(pcb);
|
err = tcp_output(pcb);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1,370 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file
|
|
||||||
* Point To Point Protocol Sequential API module
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
|
||||||
|
|
||||||
#if LWIP_PPP_API /* don't build if not configured for use in lwipopts.h */
|
|
||||||
|
|
||||||
#include "lwip/pppapi.h"
|
|
||||||
#include "lwip/priv/tcpip_priv.h"
|
|
||||||
#include "netif/ppp/pppoe.h"
|
|
||||||
#include "netif/ppp/pppol2tp.h"
|
|
||||||
#include "netif/ppp/pppos.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_set_default() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_set_default(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
ppp_set_default(msg->ppp);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_set_default() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
pppapi_set_default(ppp_pcb *pcb)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_set_default;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_set_auth() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_set_auth(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
ppp_set_auth(msg->ppp, msg->msg.setauth.authtype,
|
|
||||||
msg->msg.setauth.user, msg->msg.setauth.passwd);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_set_auth() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
pppapi_set_auth(ppp_pcb *pcb, u8_t authtype, const char *user, const char *passwd)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_set_auth;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
msg.msg.msg.setauth.authtype = authtype;
|
|
||||||
msg.msg.msg.setauth.user = user;
|
|
||||||
msg.msg.msg.setauth.passwd = passwd;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#if PPP_NOTIFY_PHASE
|
|
||||||
/**
|
|
||||||
* Call ppp_set_notify_phase_callback() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_set_notify_phase_callback(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
ppp_set_notify_phase_callback(msg->ppp, msg->msg.setnotifyphasecb.notify_phase_cb);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_set_notify_phase_callback() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
pppapi_set_notify_phase_callback(ppp_pcb *pcb, ppp_notify_phase_cb_fn notify_phase_cb)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_set_notify_phase_callback;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
msg.msg.msg.setnotifyphasecb.notify_phase_cb = notify_phase_cb;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
}
|
|
||||||
#endif /* PPP_NOTIFY_PHASE */
|
|
||||||
|
|
||||||
|
|
||||||
#if PPPOS_SUPPORT
|
|
||||||
/**
|
|
||||||
* Call pppos_create() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_pppos_create(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->ppp = pppos_create(msg->msg.serialcreate.pppif, msg->msg.serialcreate.output_cb,
|
|
||||||
msg->msg.serialcreate.link_status_cb, msg->msg.serialcreate.ctx_cb);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call pppos_create() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
ppp_pcb*
|
|
||||||
pppapi_pppos_create(struct netif *pppif, pppos_output_cb_fn output_cb,
|
|
||||||
ppp_link_status_cb_fn link_status_cb, void *ctx_cb)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_pppos_create;
|
|
||||||
msg.msg.msg.serialcreate.pppif = pppif;
|
|
||||||
msg.msg.msg.serialcreate.output_cb = output_cb;
|
|
||||||
msg.msg.msg.serialcreate.link_status_cb = link_status_cb;
|
|
||||||
msg.msg.msg.serialcreate.ctx_cb = ctx_cb;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.ppp;
|
|
||||||
}
|
|
||||||
#endif /* PPPOS_SUPPORT */
|
|
||||||
|
|
||||||
|
|
||||||
#if PPPOE_SUPPORT
|
|
||||||
/**
|
|
||||||
* Call pppoe_create() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_pppoe_create(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
|
|
||||||
msg->ppp = pppoe_create(msg->msg.ethernetcreate.pppif, msg->msg.ethernetcreate.ethif,
|
|
||||||
msg->msg.ethernetcreate.service_name, msg->msg.ethernetcreate.concentrator_name,
|
|
||||||
msg->msg.ethernetcreate.link_status_cb, msg->msg.ethernetcreate.ctx_cb);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call pppoe_create() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
ppp_pcb*
|
|
||||||
pppapi_pppoe_create(struct netif *pppif, struct netif *ethif, const char *service_name,
|
|
||||||
const char *concentrator_name, ppp_link_status_cb_fn link_status_cb,
|
|
||||||
void *ctx_cb)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_pppoe_create;
|
|
||||||
msg.msg.msg.ethernetcreate.pppif = pppif;
|
|
||||||
msg.msg.msg.ethernetcreate.ethif = ethif;
|
|
||||||
msg.msg.msg.ethernetcreate.service_name = service_name;
|
|
||||||
msg.msg.msg.ethernetcreate.concentrator_name = concentrator_name;
|
|
||||||
msg.msg.msg.ethernetcreate.link_status_cb = link_status_cb;
|
|
||||||
msg.msg.msg.ethernetcreate.ctx_cb = ctx_cb;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.ppp;
|
|
||||||
}
|
|
||||||
#endif /* PPPOE_SUPPORT */
|
|
||||||
|
|
||||||
|
|
||||||
#if PPPOL2TP_SUPPORT
|
|
||||||
/**
|
|
||||||
* Call pppol2tp_create() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_pppol2tp_create(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->ppp = pppol2tp_create(msg->msg.l2tpcreate.pppif,
|
|
||||||
msg->msg.l2tpcreate.netif, msg->msg.l2tpcreate.ipaddr, msg->msg.l2tpcreate.port,
|
|
||||||
#if PPPOL2TP_AUTH_SUPPORT
|
|
||||||
msg->msg.l2tpcreate.secret,
|
|
||||||
msg->msg.l2tpcreate.secret_len,
|
|
||||||
#else /* PPPOL2TP_AUTH_SUPPORT */
|
|
||||||
NULL,
|
|
||||||
#endif /* PPPOL2TP_AUTH_SUPPORT */
|
|
||||||
msg->msg.l2tpcreate.link_status_cb, msg->msg.l2tpcreate.ctx_cb);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call pppol2tp_create() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
ppp_pcb*
|
|
||||||
pppapi_pppol2tp_create(struct netif *pppif, struct netif *netif, ip_addr_t *ipaddr, u16_t port,
|
|
||||||
const u8_t *secret, u8_t secret_len,
|
|
||||||
ppp_link_status_cb_fn link_status_cb, void *ctx_cb)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_pppol2tp_create;
|
|
||||||
msg.msg.msg.l2tpcreate.pppif = pppif;
|
|
||||||
msg.msg.msg.l2tpcreate.netif = netif;
|
|
||||||
msg.msg.msg.l2tpcreate.ipaddr = ipaddr;
|
|
||||||
msg.msg.msg.l2tpcreate.port = port;
|
|
||||||
#if PPPOL2TP_AUTH_SUPPORT
|
|
||||||
msg.msg.msg.l2tpcreate.secret = secret;
|
|
||||||
msg.msg.msg.l2tpcreate.secret_len = secret_len;
|
|
||||||
#endif /* PPPOL2TP_AUTH_SUPPORT */
|
|
||||||
msg.msg.msg.l2tpcreate.link_status_cb = link_status_cb;
|
|
||||||
msg.msg.msg.l2tpcreate.ctx_cb = ctx_cb;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.ppp;
|
|
||||||
}
|
|
||||||
#endif /* PPPOL2TP_SUPPORT */
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_connect() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_connect(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->err = ppp_connect(msg->ppp, msg->msg.connect.holdoff);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_connect() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
err_t
|
|
||||||
pppapi_connect(ppp_pcb *pcb, u16_t holdoff)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_connect;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
msg.msg.msg.connect.holdoff = holdoff;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.err;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#if PPP_SERVER
|
|
||||||
/**
|
|
||||||
* Call ppp_listen() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_listen(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->err = ppp_listen(msg->ppp, msg->msg.listen.addrs);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_listen() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
err_t
|
|
||||||
pppapi_listen(ppp_pcb *pcb, struct ppp_addrs *addrs)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_listen;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
msg.msg.msg.listen.addrs = addrs;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.err;
|
|
||||||
}
|
|
||||||
#endif /* PPP_SERVER */
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_close() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_close(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->err = ppp_close(msg->ppp, msg->msg.close.nocarrier);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_close() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
err_t
|
|
||||||
pppapi_close(ppp_pcb *pcb, u8_t nocarrier)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_close;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
msg.msg.msg.close.nocarrier = nocarrier;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.err;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_free() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_free(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->err = ppp_free(msg->ppp);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_free() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
err_t
|
|
||||||
pppapi_free(ppp_pcb *pcb)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_free;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.err;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_ioctl() inside the tcpip_thread context.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
pppapi_do_ppp_ioctl(struct pppapi_msg_msg *msg)
|
|
||||||
{
|
|
||||||
msg->err = ppp_ioctl(msg->ppp, msg->msg.ioctl.cmd, msg->msg.ioctl.arg);
|
|
||||||
TCPIP_PPPAPI_ACK(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call ppp_ioctl() in a thread-safe way by running that function inside the
|
|
||||||
* tcpip_thread context.
|
|
||||||
*/
|
|
||||||
err_t
|
|
||||||
pppapi_ioctl(ppp_pcb *pcb, u8_t cmd, void *arg)
|
|
||||||
{
|
|
||||||
struct pppapi_msg msg;
|
|
||||||
msg.function = pppapi_do_ppp_ioctl;
|
|
||||||
msg.msg.ppp = pcb;
|
|
||||||
msg.msg.msg.ioctl.cmd = cmd;
|
|
||||||
msg.msg.msg.ioctl.arg = arg;
|
|
||||||
TCPIP_PPPAPI(&msg);
|
|
||||||
return msg.msg.err;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* LWIP_PPP_API */
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,114 +0,0 @@
|
|||||||
#ifndef LWIP_HTTPD_STRUCTS_H
|
|
||||||
#define LWIP_HTTPD_STRUCTS_H
|
|
||||||
|
|
||||||
#include "lwip/apps/httpd.h"
|
|
||||||
|
|
||||||
#if LWIP_HTTPD_DYNAMIC_HEADERS
|
|
||||||
/** This struct is used for a list of HTTP header strings for various
|
|
||||||
* filename extensions. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
const char *extension;
|
|
||||||
const char *content_type;
|
|
||||||
} tHTTPHeader;
|
|
||||||
|
|
||||||
/** A list of strings used in HTTP headers (see RFC 1945 HTTP/1.0 and
|
|
||||||
* RFC 2616 HTTP/1.1 for header field definitions) */
|
|
||||||
static const char * const g_psHTTPHeaderStrings[] =
|
|
||||||
{
|
|
||||||
"HTTP/1.0 200 OK\r\n",
|
|
||||||
"HTTP/1.0 404 File not found\r\n",
|
|
||||||
"HTTP/1.0 400 Bad Request\r\n",
|
|
||||||
"HTTP/1.0 501 Not Implemented\r\n",
|
|
||||||
"HTTP/1.1 200 OK\r\n",
|
|
||||||
"HTTP/1.1 404 File not found\r\n",
|
|
||||||
"HTTP/1.1 400 Bad Request\r\n",
|
|
||||||
"HTTP/1.1 501 Not Implemented\r\n",
|
|
||||||
"Content-Length: ",
|
|
||||||
"Connection: Close\r\n",
|
|
||||||
"Connection: keep-alive\r\n",
|
|
||||||
"Connection: keep-alive\r\nContent-Length: ",
|
|
||||||
"Server: "HTTPD_SERVER_AGENT"\r\n",
|
|
||||||
"\r\n<html><body><h2>404: The requested file cannot be found.</h2></body></html>\r\n"
|
|
||||||
#if LWIP_HTTPD_SUPPORT_11_KEEPALIVE
|
|
||||||
,"Connection: keep-alive\r\nContent-Length: 77\r\n\r\n<html><body><h2>404: The requested file cannot be found.</h2></body></html>\r\n"
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Indexes into the g_psHTTPHeaderStrings array */
|
|
||||||
#define HTTP_HDR_OK 0 /* 200 OK */
|
|
||||||
#define HTTP_HDR_NOT_FOUND 1 /* 404 File not found */
|
|
||||||
#define HTTP_HDR_BAD_REQUEST 2 /* 400 Bad request */
|
|
||||||
#define HTTP_HDR_NOT_IMPL 3 /* 501 Not Implemented */
|
|
||||||
#define HTTP_HDR_OK_11 4 /* 200 OK */
|
|
||||||
#define HTTP_HDR_NOT_FOUND_11 5 /* 404 File not found */
|
|
||||||
#define HTTP_HDR_BAD_REQUEST_11 6 /* 400 Bad request */
|
|
||||||
#define HTTP_HDR_NOT_IMPL_11 7 /* 501 Not Implemented */
|
|
||||||
#define HTTP_HDR_CONTENT_LENGTH 8 /* Content-Length: (HTTP 1.0)*/
|
|
||||||
#define HTTP_HDR_CONN_CLOSE 9 /* Connection: Close (HTTP 1.1) */
|
|
||||||
#define HTTP_HDR_CONN_KEEPALIVE 10 /* Connection: keep-alive (HTTP 1.1) */
|
|
||||||
#define HTTP_HDR_KEEPALIVE_LEN 11 /* Connection: keep-alive + Content-Length: (HTTP 1.1)*/
|
|
||||||
#define HTTP_HDR_SERVER 12 /* Server: HTTPD_SERVER_AGENT */
|
|
||||||
#define DEFAULT_404_HTML 13 /* default 404 body */
|
|
||||||
#if LWIP_HTTPD_SUPPORT_11_KEEPALIVE
|
|
||||||
#define DEFAULT_404_HTML_PERSISTENT 14 /* default 404 body, but including Connection: keep-alive */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define HTTP_HDR_HTML "Content-type: text/html\r\n\r\n"
|
|
||||||
#define HTTP_HDR_SSI "Content-type: text/html\r\nExpires: Fri, 10 Apr 2008 14:00:00 GMT\r\nPragma: no-cache\r\n\r\n"
|
|
||||||
#define HTTP_HDR_GIF "Content-type: image/gif\r\n\r\n"
|
|
||||||
#define HTTP_HDR_PNG "Content-type: image/png\r\n\r\n"
|
|
||||||
#define HTTP_HDR_JPG "Content-type: image/jpeg\r\n\r\n"
|
|
||||||
#define HTTP_HDR_BMP "Content-type: image/bmp\r\n\r\n"
|
|
||||||
#define HTTP_HDR_ICO "Content-type: image/x-icon\r\n\r\n"
|
|
||||||
#define HTTP_HDR_APP "Content-type: application/octet-stream\r\n\r\n"
|
|
||||||
#define HTTP_HDR_JS "Content-type: application/javascript\r\n\r\n"
|
|
||||||
#define HTTP_HDR_RA "Content-type: application/javascript\r\n\r\n"
|
|
||||||
#define HTTP_HDR_CSS "Content-type: text/css\r\n\r\n"
|
|
||||||
#define HTTP_HDR_SWF "Content-type: application/x-shockwave-flash\r\n\r\n"
|
|
||||||
#define HTTP_HDR_XML "Content-type: text/xml\r\n\r\n"
|
|
||||||
#define HTTP_HDR_PDF "Content-type: application/pdf\r\n\r\n"
|
|
||||||
#define HTTP_HDR_JSON "Content-type: application/json\r\n\r\n"
|
|
||||||
|
|
||||||
#define HTTP_HDR_DEFAULT_TYPE "Content-type: text/plain\r\n\r\n"
|
|
||||||
|
|
||||||
/** A list of extension-to-HTTP header strings (see outdated RFC 1700 MEDIA TYPES
|
|
||||||
* and http://www.iana.org/assignments/media-types for registered content types
|
|
||||||
* and subtypes) */
|
|
||||||
static const tHTTPHeader g_psHTTPHeaders[] =
|
|
||||||
{
|
|
||||||
{ "html", HTTP_HDR_HTML},
|
|
||||||
{ "htm", HTTP_HDR_HTML},
|
|
||||||
{ "shtml",HTTP_HDR_SSI},
|
|
||||||
{ "shtm", HTTP_HDR_SSI},
|
|
||||||
{ "ssi", HTTP_HDR_SSI},
|
|
||||||
{ "gif", HTTP_HDR_GIF},
|
|
||||||
{ "png", HTTP_HDR_PNG},
|
|
||||||
{ "jpg", HTTP_HDR_JPG},
|
|
||||||
{ "bmp", HTTP_HDR_BMP},
|
|
||||||
{ "ico", HTTP_HDR_ICO},
|
|
||||||
{ "class",HTTP_HDR_APP},
|
|
||||||
{ "cls", HTTP_HDR_APP},
|
|
||||||
{ "js", HTTP_HDR_JS},
|
|
||||||
{ "ram", HTTP_HDR_RA},
|
|
||||||
{ "css", HTTP_HDR_CSS},
|
|
||||||
{ "swf", HTTP_HDR_SWF},
|
|
||||||
{ "xml", HTTP_HDR_XML},
|
|
||||||
{ "xsl", HTTP_HDR_XML},
|
|
||||||
{ "pdf", HTTP_HDR_PDF},
|
|
||||||
{ "json", HTTP_HDR_JSON}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NUM_HTTP_HEADERS (sizeof(g_psHTTPHeaders) / sizeof(tHTTPHeader))
|
|
||||||
|
|
||||||
#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */
|
|
||||||
|
|
||||||
#if LWIP_HTTPD_SSI
|
|
||||||
static const char * const g_pcSSIExtensions[] = {
|
|
||||||
".shtml", ".shtm", ".ssi", ".xml"
|
|
||||||
};
|
|
||||||
#define NUM_SHTML_EXTENSIONS (sizeof(g_pcSSIExtensions) / sizeof(const char *))
|
|
||||||
#endif /* LWIP_HTTPD_SSI */
|
|
||||||
|
|
||||||
#endif /* LWIP_HTTPD_STRUCTS_H */
|
|
||||||
@ -1,661 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file
|
|
||||||
* lwIP iPerf server implementation
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup iperf Iperf server
|
|
||||||
* @ingroup apps
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* @todo: implement UDP mode and IPv6
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2014 Simon Goldschmidt
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
* are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
|
||||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
|
||||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
||||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
|
||||||
* OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This file is part of the lwIP TCP/IP stack.
|
|
||||||
*
|
|
||||||
* Author: Simon Goldschmidt
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "lwip/apps/lwiperf.h"
|
|
||||||
|
|
||||||
#include "lwip/tcp.h"
|
|
||||||
#include "lwip/sys.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/* Currently, only TCP-over-IPv4 is implemented (does iperf support IPv6 anyway?) */
|
|
||||||
#if LWIP_IPV4 && LWIP_TCP && LWIP_CALLBACK_API
|
|
||||||
|
|
||||||
/** Specify the idle timeout (in seconds) after that the test fails */
|
|
||||||
#ifndef LWIPERF_TCP_MAX_IDLE_SEC
|
|
||||||
#define LWIPERF_TCP_MAX_IDLE_SEC 10U
|
|
||||||
#endif
|
|
||||||
#if LWIPERF_TCP_MAX_IDLE_SEC > 255
|
|
||||||
#error LWIPERF_TCP_MAX_IDLE_SEC must fit into an u8_t
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* File internal memory allocation (struct lwiperf_*): this defaults to
|
|
||||||
the heap */
|
|
||||||
#ifndef LWIPERF_ALLOC
|
|
||||||
#define LWIPERF_ALLOC(type) mem_malloc(sizeof(type))
|
|
||||||
#define LWIPERF_FREE(type, item) mem_free(item)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** If this is 1, check that received data has the correct format */
|
|
||||||
#ifndef LWIPERF_CHECK_RX_DATA
|
|
||||||
#define LWIPERF_CHECK_RX_DATA 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** This is the Iperf settings struct sent from the client */
|
|
||||||
typedef struct _lwiperf_settings {
|
|
||||||
#define LWIPERF_FLAGS_ANSWER_TEST 0x80000000
|
|
||||||
#define LWIPERF_FLAGS_ANSWER_NOW 0x00000001
|
|
||||||
u32_t flags;
|
|
||||||
u32_t num_threads; /* unused for now */
|
|
||||||
u32_t remote_port;
|
|
||||||
u32_t buffer_len; /* unused for now */
|
|
||||||
u32_t win_band; /* TCP window / UDP rate: unused for now */
|
|
||||||
u32_t amount; /* pos. value: bytes?; neg. values: time (unit is 10ms: 1/100 second) */
|
|
||||||
} lwiperf_settings_t;
|
|
||||||
|
|
||||||
/** Basic connection handle */
|
|
||||||
struct _lwiperf_state_base;
|
|
||||||
typedef struct _lwiperf_state_base lwiperf_state_base_t;
|
|
||||||
struct _lwiperf_state_base {
|
|
||||||
/* 1=tcp, 0=udp */
|
|
||||||
u8_t tcp;
|
|
||||||
/* 1=server, 0=client */
|
|
||||||
u8_t server;
|
|
||||||
lwiperf_state_base_t* next;
|
|
||||||
lwiperf_state_base_t* related_server_state;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Connection handle for a TCP iperf session */
|
|
||||||
typedef struct _lwiperf_state_tcp {
|
|
||||||
lwiperf_state_base_t base;
|
|
||||||
struct tcp_pcb* server_pcb;
|
|
||||||
struct tcp_pcb* conn_pcb;
|
|
||||||
u32_t time_started;
|
|
||||||
lwiperf_report_fn report_fn;
|
|
||||||
void* report_arg;
|
|
||||||
u8_t poll_count;
|
|
||||||
u8_t next_num;
|
|
||||||
u32_t bytes_transferred;
|
|
||||||
lwiperf_settings_t settings;
|
|
||||||
u8_t have_settings_buf;
|
|
||||||
} lwiperf_state_tcp_t;
|
|
||||||
|
|
||||||
/** List of active iperf sessions */
|
|
||||||
static lwiperf_state_base_t* lwiperf_all_connections;
|
|
||||||
/** A const buffer to send from: we want to measure sending, not copying! */
|
|
||||||
static const u8_t lwiperf_txbuf_const[1600] = {
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
'0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9','0','1','2','3','4','5','6','7','8','9',
|
|
||||||
};
|
|
||||||
|
|
||||||
static err_t lwiperf_tcp_poll(void *arg, struct tcp_pcb *tpcb);
|
|
||||||
static void lwiperf_tcp_err(void *arg, err_t err);
|
|
||||||
|
|
||||||
/** Add an iperf session to the 'active' list */
|
|
||||||
static void
|
|
||||||
lwiperf_list_add(lwiperf_state_base_t* item)
|
|
||||||
{
|
|
||||||
if (lwiperf_all_connections == NULL) {
|
|
||||||
lwiperf_all_connections = item;
|
|
||||||
} else {
|
|
||||||
item = lwiperf_all_connections;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Remove an iperf session from the 'active' list */
|
|
||||||
static void
|
|
||||||
lwiperf_list_remove(lwiperf_state_base_t* item)
|
|
||||||
{
|
|
||||||
lwiperf_state_base_t* prev = NULL;
|
|
||||||
lwiperf_state_base_t* iter;
|
|
||||||
for (iter = lwiperf_all_connections; iter != NULL; prev = iter, iter = iter->next) {
|
|
||||||
if (iter == item) {
|
|
||||||
if (prev == NULL) {
|
|
||||||
lwiperf_all_connections = iter->next;
|
|
||||||
} else {
|
|
||||||
prev->next = item;
|
|
||||||
}
|
|
||||||
/* @debug: ensure this item is listed only once */
|
|
||||||
for (iter = iter->next; iter != NULL; iter = iter->next) {
|
|
||||||
LWIP_ASSERT("duplicate entry", iter != item);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Call the report function of an iperf tcp session */
|
|
||||||
static void
|
|
||||||
lwip_tcp_conn_report(lwiperf_state_tcp_t* conn, enum lwiperf_report_type report_type)
|
|
||||||
{
|
|
||||||
if ((conn != NULL) && (conn->report_fn != NULL)) {
|
|
||||||
u32_t now, duration_ms, bandwidth_kbitpsec;
|
|
||||||
now = sys_now();
|
|
||||||
duration_ms = now - conn->time_started;
|
|
||||||
if (duration_ms == 0) {
|
|
||||||
bandwidth_kbitpsec = 0;
|
|
||||||
} else {
|
|
||||||
bandwidth_kbitpsec = (conn->bytes_transferred / duration_ms) * 8U;
|
|
||||||
}
|
|
||||||
conn->report_fn(conn->report_arg, report_type,
|
|
||||||
&conn->conn_pcb->local_ip, conn->conn_pcb->local_port,
|
|
||||||
&conn->conn_pcb->remote_ip, conn->conn_pcb->remote_port,
|
|
||||||
conn->bytes_transferred, duration_ms, bandwidth_kbitpsec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Close an iperf tcp session */
|
|
||||||
static void
|
|
||||||
lwiperf_tcp_close(lwiperf_state_tcp_t* conn, enum lwiperf_report_type report_type)
|
|
||||||
{
|
|
||||||
err_t err;
|
|
||||||
|
|
||||||
lwip_tcp_conn_report(conn, report_type);
|
|
||||||
lwiperf_list_remove(&conn->base);
|
|
||||||
if (conn->conn_pcb != NULL) {
|
|
||||||
tcp_arg(conn->conn_pcb, NULL);
|
|
||||||
tcp_poll(conn->conn_pcb, NULL, 0);
|
|
||||||
tcp_sent(conn->conn_pcb, NULL);
|
|
||||||
tcp_recv(conn->conn_pcb, NULL);
|
|
||||||
tcp_err(conn->conn_pcb, NULL);
|
|
||||||
err = tcp_close(conn->conn_pcb);
|
|
||||||
if (err != ERR_OK) {
|
|
||||||
/* don't want to wait for free memory here... */
|
|
||||||
tcp_abort(conn->conn_pcb);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* no conn pcb, this is the server pcb */
|
|
||||||
err = tcp_close(conn->server_pcb);
|
|
||||||
LWIP_ASSERT("error", err != ERR_OK);
|
|
||||||
}
|
|
||||||
LWIPERF_FREE(lwiperf_state_tcp_t, conn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Try to send more data on an iperf tcp session */
|
|
||||||
static err_t
|
|
||||||
lwiperf_tcp_client_send_more(lwiperf_state_tcp_t* conn)
|
|
||||||
{
|
|
||||||
int send_more;
|
|
||||||
err_t err;
|
|
||||||
u16_t txlen;
|
|
||||||
u16_t txlen_max;
|
|
||||||
void* txptr;
|
|
||||||
u8_t apiflags;
|
|
||||||
|
|
||||||
LWIP_ASSERT("conn invalid", (conn != NULL) && conn->base.tcp && (conn->base.server == 0));
|
|
||||||
|
|
||||||
do {
|
|
||||||
send_more = 0;
|
|
||||||
if (conn->settings.amount & PP_HTONL(0x80000000)) {
|
|
||||||
/* this session is time-limited */
|
|
||||||
u32_t now = sys_now();
|
|
||||||
u32_t diff_ms = now - conn->time_started;
|
|
||||||
u32_t time = (u32_t)-(s32_t)lwip_htonl(conn->settings.amount);
|
|
||||||
u32_t time_ms = time * 10;
|
|
||||||
if (diff_ms >= time_ms) {
|
|
||||||
/* time specified by the client is over -> close the connection */
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_DONE_CLIENT);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* this session is byte-limited */
|
|
||||||
u32_t amount_bytes = lwip_htonl(conn->settings.amount);
|
|
||||||
/* @todo: this can send up to 1*MSS more than requested... */
|
|
||||||
if (amount_bytes >= conn->bytes_transferred) {
|
|
||||||
/* all requested bytes transferred -> close the connection */
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_DONE_CLIENT);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conn->bytes_transferred < 24) {
|
|
||||||
/* transmit the settings a first time */
|
|
||||||
txptr = &((u8_t*)&conn->settings)[conn->bytes_transferred];
|
|
||||||
txlen_max = (u16_t)(24 - conn->bytes_transferred);
|
|
||||||
apiflags = TCP_WRITE_FLAG_COPY;
|
|
||||||
} else if (conn->bytes_transferred < 48) {
|
|
||||||
/* transmit the settings a second time */
|
|
||||||
txptr = &((u8_t*)&conn->settings)[conn->bytes_transferred - 24];
|
|
||||||
txlen_max = (u16_t)(48 - conn->bytes_transferred);
|
|
||||||
apiflags = TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE;
|
|
||||||
send_more = 1;
|
|
||||||
} else {
|
|
||||||
/* transmit data */
|
|
||||||
/* @todo: every x bytes, transmit the settings again */
|
|
||||||
txptr = LWIP_CONST_CAST(void*, &lwiperf_txbuf_const[conn->bytes_transferred % 10]);
|
|
||||||
txlen_max = TCP_MSS;
|
|
||||||
if (conn->bytes_transferred == 48) { /* @todo: fix this for intermediate settings, too */
|
|
||||||
txlen_max = TCP_MSS - 24;
|
|
||||||
}
|
|
||||||
apiflags = 0; /* no copying needed */
|
|
||||||
send_more = 1;
|
|
||||||
}
|
|
||||||
txlen = txlen_max;
|
|
||||||
do {
|
|
||||||
err = tcp_write(conn->conn_pcb, txptr, txlen, apiflags);
|
|
||||||
if (err == ERR_MEM) {
|
|
||||||
txlen /= 2;
|
|
||||||
}
|
|
||||||
} while ((err == ERR_MEM) && (txlen >= (TCP_MSS/2)));
|
|
||||||
|
|
||||||
if (err == ERR_OK) {
|
|
||||||
conn->bytes_transferred += txlen;
|
|
||||||
} else {
|
|
||||||
send_more = 0;
|
|
||||||
}
|
|
||||||
} while(send_more);
|
|
||||||
|
|
||||||
tcp_output(conn->conn_pcb);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** TCP sent callback, try to send more data */
|
|
||||||
static err_t
|
|
||||||
lwiperf_tcp_client_sent(void *arg, struct tcp_pcb *tpcb, u16_t len)
|
|
||||||
{
|
|
||||||
lwiperf_state_tcp_t* conn = (lwiperf_state_tcp_t*)arg;
|
|
||||||
/* @todo: check 'len' (e.g. to time ACK of all data)? for now, we just send more... */
|
|
||||||
LWIP_ASSERT("invalid conn", conn->conn_pcb == tpcb);
|
|
||||||
LWIP_UNUSED_ARG(tpcb);
|
|
||||||
LWIP_UNUSED_ARG(len);
|
|
||||||
|
|
||||||
conn->poll_count = 0;
|
|
||||||
|
|
||||||
return lwiperf_tcp_client_send_more(conn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** TCP connected callback (active connection), send data now */
|
|
||||||
static err_t
|
|
||||||
lwiperf_tcp_client_connected(void *arg, struct tcp_pcb *tpcb, err_t err)
|
|
||||||
{
|
|
||||||
lwiperf_state_tcp_t* conn = (lwiperf_state_tcp_t*)arg;
|
|
||||||
LWIP_ASSERT("invalid conn", conn->conn_pcb == tpcb);
|
|
||||||
LWIP_UNUSED_ARG(tpcb);
|
|
||||||
if (err != ERR_OK) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_REMOTE);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
conn->poll_count = 0;
|
|
||||||
conn->time_started = sys_now();
|
|
||||||
return lwiperf_tcp_client_send_more(conn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Start TCP connection back to the client (either parallel or after the
|
|
||||||
* receive test has finished.
|
|
||||||
*/
|
|
||||||
static err_t
|
|
||||||
lwiperf_tx_start(lwiperf_state_tcp_t* conn)
|
|
||||||
{
|
|
||||||
err_t err;
|
|
||||||
lwiperf_state_tcp_t* client_conn;
|
|
||||||
struct tcp_pcb* newpcb;
|
|
||||||
ip_addr_t remote_addr;
|
|
||||||
u16_t remote_port;
|
|
||||||
|
|
||||||
client_conn = (lwiperf_state_tcp_t*)LWIPERF_ALLOC(lwiperf_state_tcp_t);
|
|
||||||
if (client_conn == NULL) {
|
|
||||||
return ERR_MEM;
|
|
||||||
}
|
|
||||||
newpcb = tcp_new();
|
|
||||||
if (newpcb == NULL) {
|
|
||||||
LWIPERF_FREE(lwiperf_state_tcp_t, client_conn);
|
|
||||||
return ERR_MEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
MEMCPY(client_conn, conn, sizeof(lwiperf_state_tcp_t));
|
|
||||||
client_conn->base.server = 0;
|
|
||||||
client_conn->server_pcb = NULL;
|
|
||||||
client_conn->conn_pcb = newpcb;
|
|
||||||
client_conn->time_started = sys_now(); /* @todo: set this again on 'connected' */
|
|
||||||
client_conn->poll_count = 0;
|
|
||||||
client_conn->next_num = 4; /* initial nr is '4' since the header has 24 byte */
|
|
||||||
client_conn->bytes_transferred = 0;
|
|
||||||
client_conn->settings.flags = 0; /* prevent the remote side starting back as client again */
|
|
||||||
|
|
||||||
tcp_arg(newpcb, client_conn);
|
|
||||||
tcp_sent(newpcb, lwiperf_tcp_client_sent);
|
|
||||||
tcp_poll(newpcb, lwiperf_tcp_poll, 2U);
|
|
||||||
tcp_err(newpcb, lwiperf_tcp_err);
|
|
||||||
|
|
||||||
ip_addr_copy(remote_addr, conn->conn_pcb->remote_ip);
|
|
||||||
remote_port = (u16_t)lwip_htonl(client_conn->settings.remote_port);
|
|
||||||
|
|
||||||
err = tcp_connect(newpcb, &remote_addr, remote_port, lwiperf_tcp_client_connected);
|
|
||||||
if (err != ERR_OK) {
|
|
||||||
lwiperf_tcp_close(client_conn, LWIPERF_TCP_ABORTED_LOCAL);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
lwiperf_list_add(&client_conn->base);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Receive data on an iperf tcp session */
|
|
||||||
static err_t
|
|
||||||
lwiperf_tcp_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
|
|
||||||
{
|
|
||||||
u8_t tmp;
|
|
||||||
u16_t tot_len;
|
|
||||||
u32_t packet_idx;
|
|
||||||
struct pbuf* q;
|
|
||||||
lwiperf_state_tcp_t* conn = (lwiperf_state_tcp_t*)arg;
|
|
||||||
|
|
||||||
LWIP_ASSERT("pcb mismatch", conn->conn_pcb == tpcb);
|
|
||||||
LWIP_UNUSED_ARG(tpcb);
|
|
||||||
|
|
||||||
if (err != ERR_OK) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_REMOTE);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
if (p == NULL) {
|
|
||||||
/* connection closed -> test done */
|
|
||||||
if ((conn->settings.flags & PP_HTONL(LWIPERF_FLAGS_ANSWER_TEST|LWIPERF_FLAGS_ANSWER_NOW)) ==
|
|
||||||
PP_HTONL(LWIPERF_FLAGS_ANSWER_TEST)) {
|
|
||||||
/* client requested transmission after end of test */
|
|
||||||
lwiperf_tx_start(conn);
|
|
||||||
}
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_DONE_SERVER);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
tot_len = p->tot_len;
|
|
||||||
|
|
||||||
conn->poll_count = 0;
|
|
||||||
|
|
||||||
if ((!conn->have_settings_buf) || ((conn->bytes_transferred -24) % (1024*128) == 0)) {
|
|
||||||
/* wait for 24-byte header */
|
|
||||||
if (p->tot_len < sizeof(lwiperf_settings_t)) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_LOCAL_DATAERROR);
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_VAL;
|
|
||||||
}
|
|
||||||
if (!conn->have_settings_buf) {
|
|
||||||
if (pbuf_copy_partial(p, &conn->settings, sizeof(lwiperf_settings_t), 0) != sizeof(lwiperf_settings_t)) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_LOCAL);
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_VAL;
|
|
||||||
}
|
|
||||||
conn->have_settings_buf = 1;
|
|
||||||
if ((conn->settings.flags & PP_HTONL(LWIPERF_FLAGS_ANSWER_TEST|LWIPERF_FLAGS_ANSWER_NOW)) ==
|
|
||||||
PP_HTONL(LWIPERF_FLAGS_ANSWER_TEST|LWIPERF_FLAGS_ANSWER_NOW)) {
|
|
||||||
/* client requested parallel transmission test */
|
|
||||||
err_t err2 = lwiperf_tx_start(conn);
|
|
||||||
if (err2 != ERR_OK) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_LOCAL_TXERROR);
|
|
||||||
pbuf_free(p);
|
|
||||||
return err2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (pbuf_memcmp(p, 0, &conn->settings, sizeof(lwiperf_settings_t)) != 0) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_LOCAL_DATAERROR);
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_VAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
conn->bytes_transferred += sizeof(lwiperf_settings_t);
|
|
||||||
if (conn->bytes_transferred <= 24) {
|
|
||||||
conn->time_started = sys_now();
|
|
||||||
tcp_recved(tpcb, p->tot_len);
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
conn->next_num = 4; /* 24 bytes received... */
|
|
||||||
tmp = pbuf_header(p, -24);
|
|
||||||
LWIP_ASSERT("pbuf_header failed", tmp == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
packet_idx = 0;
|
|
||||||
for (q = p; q != NULL; q = q->next) {
|
|
||||||
#if LWIPERF_CHECK_RX_DATA
|
|
||||||
const u8_t* payload = (const u8_t*)q->payload;
|
|
||||||
u16_t i;
|
|
||||||
for (i = 0; i < q->len; i++) {
|
|
||||||
u8_t val = payload[i];
|
|
||||||
u8_t num = val - '0';
|
|
||||||
if (num == conn->next_num) {
|
|
||||||
conn->next_num++;
|
|
||||||
if (conn->next_num == 10) {
|
|
||||||
conn->next_num = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_LOCAL_DATAERROR);
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_VAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
packet_idx += q->len;
|
|
||||||
}
|
|
||||||
LWIP_ASSERT("count mismatch", packet_idx == p->tot_len);
|
|
||||||
conn->bytes_transferred += packet_idx;
|
|
||||||
tcp_recved(tpcb, tot_len);
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Error callback, iperf tcp session aborted */
|
|
||||||
static void
|
|
||||||
lwiperf_tcp_err(void *arg, err_t err)
|
|
||||||
{
|
|
||||||
lwiperf_state_tcp_t* conn = (lwiperf_state_tcp_t*)arg;
|
|
||||||
LWIP_UNUSED_ARG(err);
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_REMOTE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** TCP poll callback, try to send more data */
|
|
||||||
static err_t
|
|
||||||
lwiperf_tcp_poll(void *arg, struct tcp_pcb *tpcb)
|
|
||||||
{
|
|
||||||
lwiperf_state_tcp_t* conn = (lwiperf_state_tcp_t*)arg;
|
|
||||||
LWIP_ASSERT("pcb mismatch", conn->conn_pcb == tpcb);
|
|
||||||
LWIP_UNUSED_ARG(tpcb);
|
|
||||||
if (++conn->poll_count >= LWIPERF_TCP_MAX_IDLE_SEC) {
|
|
||||||
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_LOCAL);
|
|
||||||
return ERR_OK; /* lwiperf_tcp_close frees conn */
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!conn->base.server) {
|
|
||||||
lwiperf_tcp_client_send_more(conn);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This is called when a new client connects for an iperf tcp session */
|
|
||||||
static err_t
|
|
||||||
lwiperf_tcp_accept(void *arg, struct tcp_pcb *newpcb, err_t err)
|
|
||||||
{
|
|
||||||
lwiperf_state_tcp_t *s, *conn;
|
|
||||||
if ((err != ERR_OK) || (newpcb == NULL) || (arg == NULL)) {
|
|
||||||
return ERR_VAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = (lwiperf_state_tcp_t*)arg;
|
|
||||||
conn = (lwiperf_state_tcp_t*)LWIPERF_ALLOC(lwiperf_state_tcp_t);
|
|
||||||
if (conn == NULL) {
|
|
||||||
return ERR_MEM;
|
|
||||||
}
|
|
||||||
memset(conn, 0, sizeof(lwiperf_state_tcp_t));
|
|
||||||
conn->base.tcp = 1;
|
|
||||||
conn->base.server = 1;
|
|
||||||
conn->base.related_server_state = &s->base;
|
|
||||||
conn->server_pcb = s->server_pcb;
|
|
||||||
conn->conn_pcb = newpcb;
|
|
||||||
conn->time_started = sys_now();
|
|
||||||
conn->report_fn = s->report_fn;
|
|
||||||
conn->report_arg = s->report_arg;
|
|
||||||
|
|
||||||
/* setup the tcp rx connection */
|
|
||||||
tcp_arg(newpcb, conn);
|
|
||||||
tcp_recv(newpcb, lwiperf_tcp_recv);
|
|
||||||
tcp_poll(newpcb, lwiperf_tcp_poll, 2U);
|
|
||||||
tcp_err(conn->conn_pcb, lwiperf_tcp_err);
|
|
||||||
|
|
||||||
lwiperf_list_add(&conn->base);
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup iperf
|
|
||||||
* Start a TCP iperf server on the default TCP port (5001) and listen for
|
|
||||||
* incoming connections from iperf clients.
|
|
||||||
*
|
|
||||||
* @returns a connection handle that can be used to abort the server
|
|
||||||
* by calling @ref lwiperf_abort()
|
|
||||||
*/
|
|
||||||
void*
|
|
||||||
lwiperf_start_tcp_server_default(lwiperf_report_fn report_fn, void* report_arg)
|
|
||||||
{
|
|
||||||
return lwiperf_start_tcp_server(IP_ADDR_ANY, LWIPERF_TCP_PORT_DEFAULT,
|
|
||||||
report_fn, report_arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup iperf
|
|
||||||
* Start a TCP iperf server on a specific IP address and port and listen for
|
|
||||||
* incoming connections from iperf clients.
|
|
||||||
*
|
|
||||||
* @returns a connection handle that can be used to abort the server
|
|
||||||
* by calling @ref lwiperf_abort()
|
|
||||||
*/
|
|
||||||
void*
|
|
||||||
lwiperf_start_tcp_server(const ip_addr_t* local_addr, u16_t local_port,
|
|
||||||
lwiperf_report_fn report_fn, void* report_arg)
|
|
||||||
{
|
|
||||||
err_t err;
|
|
||||||
struct tcp_pcb* pcb;
|
|
||||||
lwiperf_state_tcp_t* s;
|
|
||||||
|
|
||||||
if (local_addr == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = (lwiperf_state_tcp_t*)LWIPERF_ALLOC(lwiperf_state_tcp_t);
|
|
||||||
if (s == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
memset(s, 0, sizeof(lwiperf_state_tcp_t));
|
|
||||||
s->base.tcp = 1;
|
|
||||||
s->base.server = 1;
|
|
||||||
s->report_fn = report_fn;
|
|
||||||
s->report_arg = report_arg;
|
|
||||||
|
|
||||||
pcb = tcp_new();
|
|
||||||
if (pcb != NULL) {
|
|
||||||
err = tcp_bind(pcb, local_addr, local_port);
|
|
||||||
if (err == ERR_OK) {
|
|
||||||
s->server_pcb = tcp_listen_with_backlog(pcb, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (s->server_pcb == NULL) {
|
|
||||||
if (pcb != NULL) {
|
|
||||||
tcp_close(pcb);
|
|
||||||
}
|
|
||||||
LWIPERF_FREE(lwiperf_state_tcp_t, s);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
pcb = NULL;
|
|
||||||
|
|
||||||
tcp_arg(s->server_pcb, s);
|
|
||||||
tcp_accept(s->server_pcb, lwiperf_tcp_accept);
|
|
||||||
|
|
||||||
lwiperf_list_add(&s->base);
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup iperf
|
|
||||||
* Abort an iperf session (handle returned by lwiperf_start_tcp_server*())
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
lwiperf_abort(void* lwiperf_session)
|
|
||||||
{
|
|
||||||
lwiperf_state_base_t* i, *dealloc, *last = NULL;
|
|
||||||
|
|
||||||
for (i = lwiperf_all_connections; i != NULL; ) {
|
|
||||||
if ((i == lwiperf_session) || (i->related_server_state == lwiperf_session)) {
|
|
||||||
dealloc = i;
|
|
||||||
i = i->next;
|
|
||||||
if (last != NULL) {
|
|
||||||
last->next = i;
|
|
||||||
}
|
|
||||||
LWIPERF_FREE(lwiperf_state_tcp_t, dealloc); /* @todo: type? */
|
|
||||||
} else {
|
|
||||||
last = i;
|
|
||||||
i = i->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LWIP_IPV4 && LWIP_TCP && LWIP_CALLBACK_API */
|
|
||||||
@ -1,367 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file
|
|
||||||
* NetBIOS name service responder
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup netbiosns NETBIOS responder
|
|
||||||
* @ingroup apps
|
|
||||||
*
|
|
||||||
* This is an example implementation of a NetBIOS name server.
|
|
||||||
* It responds to name queries for a configurable name.
|
|
||||||
* Name resolving is not supported.
|
|
||||||
*
|
|
||||||
* Note that the device doesn't broadcast it's own name so can't
|
|
||||||
* detect duplicate names!
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "lwip/apps/netbiosns.h"
|
|
||||||
|
|
||||||
#if LWIP_IPV4 && LWIP_UDP /* don't build if not configured for use in lwipopts.h */
|
|
||||||
|
|
||||||
#include "lwip/def.h"
|
|
||||||
#include "lwip/udp.h"
|
|
||||||
#include "lwip/netif.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/** default port number for "NetBIOS Name service */
|
|
||||||
#define NETBIOS_PORT 137
|
|
||||||
|
|
||||||
/** size of a NetBIOS name */
|
|
||||||
#define NETBIOS_NAME_LEN 16
|
|
||||||
|
|
||||||
/** The Time-To-Live for NetBIOS name responds (in seconds)
|
|
||||||
* Default is 300000 seconds (3 days, 11 hours, 20 minutes) */
|
|
||||||
#define NETBIOS_NAME_TTL 300000u
|
|
||||||
|
|
||||||
/** NetBIOS header flags */
|
|
||||||
#define NETB_HFLAG_RESPONSE 0x8000U
|
|
||||||
#define NETB_HFLAG_OPCODE 0x7800U
|
|
||||||
#define NETB_HFLAG_OPCODE_NAME_QUERY 0x0000U
|
|
||||||
#define NETB_HFLAG_AUTHORATIVE 0x0400U
|
|
||||||
#define NETB_HFLAG_TRUNCATED 0x0200U
|
|
||||||
#define NETB_HFLAG_RECURS_DESIRED 0x0100U
|
|
||||||
#define NETB_HFLAG_RECURS_AVAILABLE 0x0080U
|
|
||||||
#define NETB_HFLAG_BROADCAST 0x0010U
|
|
||||||
#define NETB_HFLAG_REPLYCODE 0x0008U
|
|
||||||
#define NETB_HFLAG_REPLYCODE_NOERROR 0x0000U
|
|
||||||
|
|
||||||
/** NetBIOS name flags */
|
|
||||||
#define NETB_NFLAG_UNIQUE 0x8000U
|
|
||||||
#define NETB_NFLAG_NODETYPE 0x6000U
|
|
||||||
#define NETB_NFLAG_NODETYPE_HNODE 0x6000U
|
|
||||||
#define NETB_NFLAG_NODETYPE_MNODE 0x4000U
|
|
||||||
#define NETB_NFLAG_NODETYPE_PNODE 0x2000U
|
|
||||||
#define NETB_NFLAG_NODETYPE_BNODE 0x0000U
|
|
||||||
|
|
||||||
/** NetBIOS message header */
|
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
|
||||||
# include "arch/bpstruct.h"
|
|
||||||
#endif
|
|
||||||
PACK_STRUCT_BEGIN
|
|
||||||
struct netbios_hdr {
|
|
||||||
PACK_STRUCT_FIELD(u16_t trans_id);
|
|
||||||
PACK_STRUCT_FIELD(u16_t flags);
|
|
||||||
PACK_STRUCT_FIELD(u16_t questions);
|
|
||||||
PACK_STRUCT_FIELD(u16_t answerRRs);
|
|
||||||
PACK_STRUCT_FIELD(u16_t authorityRRs);
|
|
||||||
PACK_STRUCT_FIELD(u16_t additionalRRs);
|
|
||||||
} PACK_STRUCT_STRUCT;
|
|
||||||
PACK_STRUCT_END
|
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
|
||||||
# include "arch/epstruct.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** NetBIOS message name part */
|
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
|
||||||
# include "arch/bpstruct.h"
|
|
||||||
#endif
|
|
||||||
PACK_STRUCT_BEGIN
|
|
||||||
struct netbios_name_hdr {
|
|
||||||
PACK_STRUCT_FLD_8(u8_t nametype);
|
|
||||||
PACK_STRUCT_FLD_8(u8_t encname[(NETBIOS_NAME_LEN*2)+1]);
|
|
||||||
PACK_STRUCT_FIELD(u16_t type);
|
|
||||||
PACK_STRUCT_FIELD(u16_t cls);
|
|
||||||
PACK_STRUCT_FIELD(u32_t ttl);
|
|
||||||
PACK_STRUCT_FIELD(u16_t datalen);
|
|
||||||
PACK_STRUCT_FIELD(u16_t flags);
|
|
||||||
PACK_STRUCT_FLD_S(ip4_addr_p_t addr);
|
|
||||||
} PACK_STRUCT_STRUCT;
|
|
||||||
PACK_STRUCT_END
|
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
|
||||||
# include "arch/epstruct.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** NetBIOS message */
|
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
|
||||||
# include "arch/bpstruct.h"
|
|
||||||
#endif
|
|
||||||
PACK_STRUCT_BEGIN
|
|
||||||
struct netbios_resp
|
|
||||||
{
|
|
||||||
struct netbios_hdr resp_hdr;
|
|
||||||
struct netbios_name_hdr resp_name;
|
|
||||||
} PACK_STRUCT_STRUCT;
|
|
||||||
PACK_STRUCT_END
|
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
|
||||||
# include "arch/epstruct.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NETBIOS_LWIP_NAME
|
|
||||||
#define NETBIOS_LOCAL_NAME NETBIOS_LWIP_NAME
|
|
||||||
#else
|
|
||||||
static char netbiosns_local_name[NETBIOS_NAME_LEN];
|
|
||||||
#define NETBIOS_LOCAL_NAME netbiosns_local_name
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct udp_pcb *netbiosns_pcb;
|
|
||||||
|
|
||||||
/** Decode a NetBIOS name (from packet to string) */
|
|
||||||
static int
|
|
||||||
netbiosns_name_decode(char *name_enc, char *name_dec, int name_dec_len)
|
|
||||||
{
|
|
||||||
char *pname;
|
|
||||||
char cname;
|
|
||||||
char cnbname;
|
|
||||||
int idx = 0;
|
|
||||||
|
|
||||||
LWIP_UNUSED_ARG(name_dec_len);
|
|
||||||
|
|
||||||
/* Start decoding netbios name. */
|
|
||||||
pname = name_enc;
|
|
||||||
for (;;) {
|
|
||||||
/* Every two characters of the first level-encoded name
|
|
||||||
* turn into one character in the decoded name. */
|
|
||||||
cname = *pname;
|
|
||||||
if (cname == '\0')
|
|
||||||
break; /* no more characters */
|
|
||||||
if (cname == '.')
|
|
||||||
break; /* scope ID follows */
|
|
||||||
if (cname < 'A' || cname > 'Z') {
|
|
||||||
/* Not legal. */
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
cname -= 'A';
|
|
||||||
cnbname = cname << 4;
|
|
||||||
pname++;
|
|
||||||
|
|
||||||
cname = *pname;
|
|
||||||
if (cname == '\0' || cname == '.') {
|
|
||||||
/* No more characters in the name - but we're in
|
|
||||||
* the middle of a pair. Not legal. */
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (cname < 'A' || cname > 'Z') {
|
|
||||||
/* Not legal. */
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
cname -= 'A';
|
|
||||||
cnbname |= cname;
|
|
||||||
pname++;
|
|
||||||
|
|
||||||
/* Do we have room to store the character? */
|
|
||||||
if (idx < NETBIOS_NAME_LEN) {
|
|
||||||
/* Yes - store the character. */
|
|
||||||
name_dec[idx++] = (cnbname!=' '?cnbname:'\0');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0 /* function currently unused */
|
|
||||||
/** Encode a NetBIOS name (from string to packet) - currently unused because
|
|
||||||
we don't ask for names. */
|
|
||||||
static int
|
|
||||||
netbiosns_name_encode(char *name_enc, char *name_dec, int name_dec_len)
|
|
||||||
{
|
|
||||||
char *pname;
|
|
||||||
char cname;
|
|
||||||
unsigned char ucname;
|
|
||||||
int idx = 0;
|
|
||||||
|
|
||||||
/* Start encoding netbios name. */
|
|
||||||
pname = name_enc;
|
|
||||||
|
|
||||||
for (;;) {
|
|
||||||
/* Every two characters of the first level-encoded name
|
|
||||||
* turn into one character in the decoded name. */
|
|
||||||
cname = *pname;
|
|
||||||
if (cname == '\0')
|
|
||||||
break; /* no more characters */
|
|
||||||
if (cname == '.')
|
|
||||||
break; /* scope ID follows */
|
|
||||||
if ((cname < 'A' || cname > 'Z') && (cname < '0' || cname > '9')) {
|
|
||||||
/* Not legal. */
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Do we have room to store the character? */
|
|
||||||
if (idx >= name_dec_len) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Yes - store the character. */
|
|
||||||
ucname = cname;
|
|
||||||
name_dec[idx++] = ('A'+((ucname>>4) & 0x0F));
|
|
||||||
name_dec[idx++] = ('A'+( ucname & 0x0F));
|
|
||||||
pname++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill with "space" coding */
|
|
||||||
for (;idx < name_dec_len - 1;) {
|
|
||||||
name_dec[idx++] = 'C';
|
|
||||||
name_dec[idx++] = 'A';
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Terminate string */
|
|
||||||
name_dec[idx] = '\0';
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* 0 */
|
|
||||||
|
|
||||||
/** NetBIOS Name service recv callback */
|
|
||||||
static void
|
|
||||||
netbiosns_recv(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
|
|
||||||
{
|
|
||||||
LWIP_UNUSED_ARG(arg);
|
|
||||||
|
|
||||||
/* if packet is valid */
|
|
||||||
if (p != NULL) {
|
|
||||||
char netbios_name[NETBIOS_NAME_LEN+1];
|
|
||||||
struct netbios_hdr* netbios_hdr = (struct netbios_hdr*)p->payload;
|
|
||||||
struct netbios_name_hdr* netbios_name_hdr = (struct netbios_name_hdr*)(netbios_hdr+1);
|
|
||||||
|
|
||||||
/* we only answer if we got a default interface */
|
|
||||||
if (netif_default != NULL) {
|
|
||||||
/* @todo: do we need to check answerRRs/authorityRRs/additionalRRs? */
|
|
||||||
/* if the packet is a NetBIOS name query question */
|
|
||||||
if (((netbios_hdr->flags & PP_NTOHS(NETB_HFLAG_OPCODE)) == PP_NTOHS(NETB_HFLAG_OPCODE_NAME_QUERY)) &&
|
|
||||||
((netbios_hdr->flags & PP_NTOHS(NETB_HFLAG_RESPONSE)) == 0) &&
|
|
||||||
(netbios_hdr->questions == PP_NTOHS(1))) {
|
|
||||||
/* decode the NetBIOS name */
|
|
||||||
netbiosns_name_decode((char*)(netbios_name_hdr->encname), netbios_name, sizeof(netbios_name));
|
|
||||||
/* if the packet is for us */
|
|
||||||
if (lwip_strnicmp(netbios_name, NETBIOS_LOCAL_NAME, sizeof(NETBIOS_LOCAL_NAME)) == 0) {
|
|
||||||
struct pbuf *q;
|
|
||||||
struct netbios_resp *resp;
|
|
||||||
|
|
||||||
q = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct netbios_resp), PBUF_RAM);
|
|
||||||
if (q != NULL) {
|
|
||||||
resp = (struct netbios_resp*)q->payload;
|
|
||||||
|
|
||||||
/* prepare NetBIOS header response */
|
|
||||||
resp->resp_hdr.trans_id = netbios_hdr->trans_id;
|
|
||||||
resp->resp_hdr.flags = PP_HTONS(NETB_HFLAG_RESPONSE |
|
|
||||||
NETB_HFLAG_OPCODE_NAME_QUERY |
|
|
||||||
NETB_HFLAG_AUTHORATIVE |
|
|
||||||
NETB_HFLAG_RECURS_DESIRED);
|
|
||||||
resp->resp_hdr.questions = 0;
|
|
||||||
resp->resp_hdr.answerRRs = PP_HTONS(1);
|
|
||||||
resp->resp_hdr.authorityRRs = 0;
|
|
||||||
resp->resp_hdr.additionalRRs = 0;
|
|
||||||
|
|
||||||
/* prepare NetBIOS header datas */
|
|
||||||
MEMCPY( resp->resp_name.encname, netbios_name_hdr->encname, sizeof(netbios_name_hdr->encname));
|
|
||||||
resp->resp_name.nametype = netbios_name_hdr->nametype;
|
|
||||||
resp->resp_name.type = netbios_name_hdr->type;
|
|
||||||
resp->resp_name.cls = netbios_name_hdr->cls;
|
|
||||||
resp->resp_name.ttl = PP_HTONL(NETBIOS_NAME_TTL);
|
|
||||||
resp->resp_name.datalen = PP_HTONS(sizeof(resp->resp_name.flags)+sizeof(resp->resp_name.addr));
|
|
||||||
resp->resp_name.flags = PP_HTONS(NETB_NFLAG_NODETYPE_BNODE);
|
|
||||||
ip4_addr_copy(resp->resp_name.addr, *netif_ip4_addr(netif_default));
|
|
||||||
|
|
||||||
/* send the NetBIOS response */
|
|
||||||
udp_sendto(upcb, q, addr, port);
|
|
||||||
|
|
||||||
/* free the "reference" pbuf */
|
|
||||||
pbuf_free(q);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* free the pbuf */
|
|
||||||
pbuf_free(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup netbiosns
|
|
||||||
* Init netbios responder
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
netbiosns_init(void)
|
|
||||||
{
|
|
||||||
#ifdef NETBIOS_LWIP_NAME
|
|
||||||
LWIP_ASSERT("NetBIOS name is too long!", strlen(NETBIOS_LWIP_NAME) < NETBIOS_NAME_LEN);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
netbiosns_pcb = udp_new_ip_type(IPADDR_TYPE_ANY);
|
|
||||||
if (netbiosns_pcb != NULL) {
|
|
||||||
/* we have to be allowed to send broadcast packets! */
|
|
||||||
ip_set_option(netbiosns_pcb, SOF_BROADCAST);
|
|
||||||
udp_bind(netbiosns_pcb, IP_ANY_TYPE, NETBIOS_PORT);
|
|
||||||
udp_recv(netbiosns_pcb, netbiosns_recv, netbiosns_pcb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef NETBIOS_LWIP_NAME
|
|
||||||
/**
|
|
||||||
* @ingroup netbiosns
|
|
||||||
* Set netbios name. ATTENTION: the hostname must be less than 15 characters!
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
netbiosns_set_name(const char* hostname)
|
|
||||||
{
|
|
||||||
size_t copy_len = strlen(hostname);
|
|
||||||
LWIP_ASSERT("NetBIOS name is too long!", copy_len < NETBIOS_NAME_LEN);
|
|
||||||
if (copy_len >= NETBIOS_NAME_LEN) {
|
|
||||||
copy_len = NETBIOS_NAME_LEN - 1;
|
|
||||||
}
|
|
||||||
MEMCPY(netbiosns_local_name, hostname, copy_len + 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup netbiosns
|
|
||||||
* Stop netbios responder
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
netbiosns_stop(void)
|
|
||||||
{
|
|
||||||
if (netbiosns_pcb != NULL) {
|
|
||||||
udp_remove(netbiosns_pcb);
|
|
||||||
netbiosns_pcb = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LWIP_IPV4 && LWIP_UDP */
|
|
||||||
@ -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,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,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,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 = LwipMibViewer\LwipMibViewer.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,477 +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();
|
|
||||||
|
|
||||||
// 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, "").ToLowerInvariant();
|
|
||||||
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, "").ToLowerInvariant();
|
|
||||||
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 + "_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 + "_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, LwipDefs.Vt_StMib, null, ConstType.Value),
|
|
||||||
String.Format("{{{0}_base_oid, LWIP_ARRAYSIZE({0}_base_oid), &{1}.node}}", this.Name, 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 + "_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 + "_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,241 +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 + "_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 + "_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;
|
|
||||||
|
|
||||||
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
|
|
||||||
@ -1,352 +0,0 @@
|
|||||||
SNMPv2-SMI DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
|
|
||||||
-- the path to the root
|
|
||||||
|
|
||||||
org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
|
|
||||||
dod OBJECT IDENTIFIER ::= { org 6 }
|
|
||||||
internet OBJECT IDENTIFIER ::= { dod 1 }
|
|
||||||
|
|
||||||
directory OBJECT IDENTIFIER ::= { internet 1 }
|
|
||||||
|
|
||||||
mgmt OBJECT IDENTIFIER ::= { internet 2 }
|
|
||||||
mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
|
|
||||||
transmission OBJECT IDENTIFIER ::= { mib-2 10 }
|
|
||||||
|
|
||||||
experimental OBJECT IDENTIFIER ::= { internet 3 }
|
|
||||||
|
|
||||||
private OBJECT IDENTIFIER ::= { internet 4 }
|
|
||||||
enterprises OBJECT IDENTIFIER ::= { private 1 }
|
|
||||||
|
|
||||||
security OBJECT IDENTIFIER ::= { internet 5 }
|
|
||||||
|
|
||||||
snmpV2 OBJECT IDENTIFIER ::= { internet 6 }
|
|
||||||
|
|
||||||
-- transport domains
|
|
||||||
snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 }
|
|
||||||
|
|
||||||
-- transport proxies
|
|
||||||
snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 }
|
|
||||||
|
|
||||||
-- module identities
|
|
||||||
snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 }
|
|
||||||
|
|
||||||
-- Extended UTCTime, to allow dates with four-digit years
|
|
||||||
-- (Note that this definition of ExtUTCTime is not to be IMPORTed
|
|
||||||
-- by MIB modules.)
|
|
||||||
ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
|
|
||||||
-- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
|
|
||||||
-- where: YY - last two digits of year (only years
|
|
||||||
-- between 1900-1999)
|
|
||||||
-- YYYY - last four digits of the year (any year)
|
|
||||||
-- MM - month (01 through 12)
|
|
||||||
-- DD - day of month (01 through 31)
|
|
||||||
-- HH - hours (00 through 23)
|
|
||||||
-- MM - minutes (00 through 59)
|
|
||||||
-- Z - denotes GMT (the ASCII character Z)
|
|
||||||
--
|
|
||||||
-- For example, "9502192015Z" and "199502192015Z" represent
|
|
||||||
-- 8:15pm GMT on 19 February 1995. Years after 1999 must use
|
|
||||||
-- the four digit year format. Years 1900-1999 may use the
|
|
||||||
-- two or four digit format.
|
|
||||||
|
|
||||||
-- definitions for information modules
|
|
||||||
|
|
||||||
MODULE-IDENTITY MACRO ::=
|
|
||||||
BEGIN
|
|
||||||
TYPE NOTATION ::=
|
|
||||||
"LAST-UPDATED" value(Update ExtUTCTime)
|
|
||||||
"ORGANIZATION" Text
|
|
||||||
"CONTACT-INFO" Text
|
|
||||||
"DESCRIPTION" Text
|
|
||||||
RevisionPart
|
|
||||||
|
|
||||||
VALUE NOTATION ::=
|
|
||||||
value(VALUE OBJECT IDENTIFIER)
|
|
||||||
|
|
||||||
RevisionPart ::=
|
|
||||||
Revisions
|
|
||||||
| empty
|
|
||||||
Revisions ::=
|
|
||||||
Revision
|
|
||||||
| Revisions Revision
|
|
||||||
Revision ::=
|
|
||||||
"REVISION" value(Update ExtUTCTime)
|
|
||||||
"DESCRIPTION" Text
|
|
||||||
|
|
||||||
-- a character string as defined in section 3.1.1
|
|
||||||
Text ::= value(IA5String)
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
OBJECT-IDENTITY MACRO ::=
|
|
||||||
BEGIN
|
|
||||||
TYPE NOTATION ::=
|
|
||||||
"STATUS" Status
|
|
||||||
"DESCRIPTION" Text
|
|
||||||
ReferPart
|
|
||||||
|
|
||||||
VALUE NOTATION ::=
|
|
||||||
value(VALUE OBJECT IDENTIFIER)
|
|
||||||
|
|
||||||
Status ::=
|
|
||||||
"current"
|
|
||||||
| "deprecated"
|
|
||||||
| "obsolete"
|
|
||||||
|
|
||||||
ReferPart ::=
|
|
||||||
"REFERENCE" Text
|
|
||||||
| empty
|
|
||||||
|
|
||||||
-- a character string as defined in section 3.1.1
|
|
||||||
Text ::= value(IA5String)
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
-- names of objects
|
|
||||||
-- (Note that these definitions of ObjectName and NotificationName
|
|
||||||
-- are not to be IMPORTed by MIB modules.)
|
|
||||||
|
|
||||||
ObjectName ::=
|
|
||||||
OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
NotificationName ::=
|
|
||||||
OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
-- syntax of objects
|
|
||||||
|
|
||||||
-- the "base types" defined here are:
|
|
||||||
-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
|
|
||||||
-- 8 application-defined types: Integer32, IpAddress, Counter32,
|
|
||||||
-- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
|
|
||||||
|
|
||||||
ObjectSyntax ::=
|
|
||||||
CHOICE {
|
|
||||||
simple
|
|
||||||
SimpleSyntax,
|
|
||||||
|
|
||||||
-- note that SEQUENCEs for conceptual tables and
|
|
||||||
-- rows are not mentioned here...
|
|
||||||
|
|
||||||
application-wide
|
|
||||||
ApplicationSyntax
|
|
||||||
}
|
|
||||||
|
|
||||||
-- built-in ASN.1 types
|
|
||||||
|
|
||||||
SimpleSyntax ::=
|
|
||||||
CHOICE {
|
|
||||||
-- INTEGERs with a more restrictive range
|
|
||||||
-- may also be used
|
|
||||||
integer-value -- includes Integer32
|
|
||||||
INTEGER (-2147483648..2147483647),
|
|
||||||
|
|
||||||
-- OCTET STRINGs with a more restrictive size
|
|
||||||
-- may also be used
|
|
||||||
string-value
|
|
||||||
OCTET STRING (SIZE (0..65535)),
|
|
||||||
|
|
||||||
objectID-value
|
|
||||||
OBJECT IDENTIFIER
|
|
||||||
}
|
|
||||||
|
|
||||||
-- indistinguishable from INTEGER, but never needs more than
|
|
||||||
-- 32-bits for a two's complement representation
|
|
||||||
Integer32 ::=
|
|
||||||
INTEGER (-2147483648..2147483647)
|
|
||||||
|
|
||||||
|
|
||||||
-- application-wide types
|
|
||||||
|
|
||||||
ApplicationSyntax ::=
|
|
||||||
CHOICE {
|
|
||||||
ipAddress-value
|
|
||||||
IpAddress,
|
|
||||||
|
|
||||||
counter-value
|
|
||||||
Counter32,
|
|
||||||
|
|
||||||
timeticks-value
|
|
||||||
TimeTicks,
|
|
||||||
|
|
||||||
arbitrary-value
|
|
||||||
Opaque,
|
|
||||||
|
|
||||||
big-counter-value
|
|
||||||
Counter64,
|
|
||||||
|
|
||||||
unsigned-integer-value -- includes Gauge32
|
|
||||||
Unsigned32
|
|
||||||
}
|
|
||||||
|
|
||||||
-- in network-byte order
|
|
||||||
-- (this is a tagged type for historical reasons)
|
|
||||||
IpAddress ::=
|
|
||||||
[APPLICATION 0]
|
|
||||||
IMPLICIT OCTET STRING (SIZE (4))
|
|
||||||
|
|
||||||
-- this wraps
|
|
||||||
Counter32 ::=
|
|
||||||
[APPLICATION 1]
|
|
||||||
IMPLICIT INTEGER (0..4294967295)
|
|
||||||
|
|
||||||
-- this doesn't wrap
|
|
||||||
Gauge32 ::=
|
|
||||||
[APPLICATION 2]
|
|
||||||
IMPLICIT INTEGER (0..4294967295)
|
|
||||||
|
|
||||||
-- an unsigned 32-bit quantity
|
|
||||||
-- indistinguishable from Gauge32
|
|
||||||
Unsigned32 ::=
|
|
||||||
[APPLICATION 2]
|
|
||||||
IMPLICIT INTEGER (0..4294967295)
|
|
||||||
|
|
||||||
-- hundredths of seconds since an epoch
|
|
||||||
TimeTicks ::=
|
|
||||||
[APPLICATION 3]
|
|
||||||
IMPLICIT INTEGER (0..4294967295)
|
|
||||||
|
|
||||||
-- for backward-compatibility only
|
|
||||||
Opaque ::=
|
|
||||||
[APPLICATION 4]
|
|
||||||
IMPLICIT OCTET STRING
|
|
||||||
|
|
||||||
-- for counters that wrap in less than one hour with only 32 bits
|
|
||||||
Counter64 ::=
|
|
||||||
[APPLICATION 6]
|
|
||||||
IMPLICIT INTEGER (0..18446744073709551615)
|
|
||||||
|
|
||||||
|
|
||||||
-- definition for objects
|
|
||||||
|
|
||||||
OBJECT-TYPE MACRO ::=
|
|
||||||
BEGIN
|
|
||||||
TYPE NOTATION ::=
|
|
||||||
"SYNTAX" Syntax
|
|
||||||
UnitsPart
|
|
||||||
"MAX-ACCESS" Access
|
|
||||||
"STATUS" Status
|
|
||||||
"DESCRIPTION" Text
|
|
||||||
ReferPart
|
|
||||||
IndexPart
|
|
||||||
DefValPart
|
|
||||||
|
|
||||||
VALUE NOTATION ::=
|
|
||||||
value(VALUE ObjectName)
|
|
||||||
|
|
||||||
Syntax ::= -- Must be one of the following:
|
|
||||||
-- a base type (or its refinement),
|
|
||||||
-- a textual convention (or its refinement), or
|
|
||||||
-- a BITS pseudo-type
|
|
||||||
type
|
|
||||||
| "BITS" "{" NamedBits "}"
|
|
||||||
|
|
||||||
NamedBits ::= NamedBit
|
|
||||||
| NamedBits "," NamedBit
|
|
||||||
|
|
||||||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
|
||||||
|
|
||||||
UnitsPart ::=
|
|
||||||
"UNITS" Text
|
|
||||||
| empty
|
|
||||||
|
|
||||||
Access ::=
|
|
||||||
"not-accessible"
|
|
||||||
| "accessible-for-notify"
|
|
||||||
| "read-only"
|
|
||||||
| "read-write"
|
|
||||||
| "read-create"
|
|
||||||
|
|
||||||
Status ::=
|
|
||||||
"current"
|
|
||||||
| "deprecated"
|
|
||||||
| "obsolete"
|
|
||||||
|
|
||||||
ReferPart ::=
|
|
||||||
"REFERENCE" Text
|
|
||||||
| empty
|
|
||||||
|
|
||||||
IndexPart ::=
|
|
||||||
"INDEX" "{" IndexTypes "}"
|
|
||||||
| "AUGMENTS" "{" Entry "}"
|
|
||||||
| empty
|
|
||||||
IndexTypes ::=
|
|
||||||
IndexType
|
|
||||||
| IndexTypes "," IndexType
|
|
||||||
IndexType ::=
|
|
||||||
"IMPLIED" Index
|
|
||||||
| Index
|
|
||||||
Index ::=
|
|
||||||
-- use the SYNTAX value of the
|
|
||||||
-- correspondent OBJECT-TYPE invocation
|
|
||||||
value(ObjectName)
|
|
||||||
Entry ::=
|
|
||||||
-- use the INDEX value of the
|
|
||||||
-- correspondent OBJECT-TYPE invocation
|
|
||||||
value(ObjectName)
|
|
||||||
|
|
||||||
DefValPart ::= "DEFVAL" "{" Defvalue "}"
|
|
||||||
| empty
|
|
||||||
|
|
||||||
Defvalue ::= -- must be valid for the type specified in
|
|
||||||
-- SYNTAX clause of same OBJECT-TYPE macro
|
|
||||||
value(ObjectSyntax)
|
|
||||||
| "{" BitsValue "}"
|
|
||||||
|
|
||||||
BitsValue ::= BitNames
|
|
||||||
| empty
|
|
||||||
|
|
||||||
BitNames ::= BitName
|
|
||||||
| BitNames "," BitName
|
|
||||||
|
|
||||||
BitName ::= identifier
|
|
||||||
|
|
||||||
-- a character string as defined in section 3.1.1
|
|
||||||
Text ::= value(IA5String)
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
-- definitions for notifications
|
|
||||||
|
|
||||||
NOTIFICATION-TYPE MACRO ::=
|
|
||||||
BEGIN
|
|
||||||
TYPE NOTATION ::=
|
|
||||||
ObjectsPart
|
|
||||||
"STATUS" Status
|
|
||||||
"DESCRIPTION" Text
|
|
||||||
ReferPart
|
|
||||||
|
|
||||||
VALUE NOTATION ::=
|
|
||||||
value(VALUE NotificationName)
|
|
||||||
|
|
||||||
ObjectsPart ::=
|
|
||||||
"OBJECTS" "{" Objects "}"
|
|
||||||
| empty
|
|
||||||
Objects ::=
|
|
||||||
Object
|
|
||||||
| Objects "," Object
|
|
||||||
Object ::=
|
|
||||||
value(ObjectName)
|
|
||||||
|
|
||||||
Status ::=
|
|
||||||
"current"
|
|
||||||
| "deprecated"
|
|
||||||
| "obsolete"
|
|
||||||
|
|
||||||
ReferPart ::=
|
|
||||||
"REFERENCE" Text
|
|
||||||
| empty
|
|
||||||
|
|
||||||
-- a character string as defined in section 3.1.1
|
|
||||||
Text ::= value(IA5String)
|
|
||||||
END
|
|
||||||
|
|
||||||
-- definitions of administrative identifiers
|
|
||||||
|
|
||||||
zeroDotZero OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A value used for null identifiers."
|
|
||||||
::= { 0 0 }
|
|
||||||
|
|
||||||
END
|
|
||||||
@ -1,786 +0,0 @@
|
|||||||
SNMPv2-TC DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
IMPORTS
|
|
||||||
TimeTicks FROM SNMPv2-SMI;
|
|
||||||
|
|
||||||
|
|
||||||
-- definition of textual conventions
|
|
||||||
|
|
||||||
TEXTUAL-CONVENTION MACRO ::=
|
|
||||||
BEGIN
|
|
||||||
TYPE NOTATION ::=
|
|
||||||
DisplayPart
|
|
||||||
"STATUS" Status
|
|
||||||
"DESCRIPTION" Text
|
|
||||||
ReferPart
|
|
||||||
"SYNTAX" Syntax
|
|
||||||
|
|
||||||
VALUE NOTATION ::=
|
|
||||||
value(VALUE Syntax) -- adapted ASN.1
|
|
||||||
|
|
||||||
DisplayPart ::=
|
|
||||||
"DISPLAY-HINT" Text
|
|
||||||
| empty
|
|
||||||
|
|
||||||
Status ::=
|
|
||||||
"current"
|
|
||||||
| "deprecated"
|
|
||||||
| "obsolete"
|
|
||||||
|
|
||||||
ReferPart ::=
|
|
||||||
"REFERENCE" Text
|
|
||||||
| empty
|
|
||||||
|
|
||||||
-- a character string as defined in [2]
|
|
||||||
Text ::= value(IA5String)
|
|
||||||
|
|
||||||
Syntax ::= -- Must be one of the following:
|
|
||||||
-- a base type (or its refinement), or
|
|
||||||
-- a BITS pseudo-type
|
|
||||||
type
|
|
||||||
| "BITS" "{" NamedBits "}"
|
|
||||||
|
|
||||||
NamedBits ::= NamedBit
|
|
||||||
| NamedBits "," NamedBit
|
|
||||||
|
|
||||||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
|
||||||
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DisplayString ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "255a"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents textual information taken from the NVT ASCII
|
|
||||||
character set, as defined in pages 4, 10-11 of RFC 854.
|
|
||||||
|
|
||||||
To summarize RFC 854, the NVT ASCII repertoire specifies:
|
|
||||||
|
|
||||||
- the use of character codes 0-127 (decimal)
|
|
||||||
|
|
||||||
- the graphics characters (32-126) are interpreted as
|
|
||||||
US ASCII
|
|
||||||
|
|
||||||
- NUL, LF, CR, BEL, BS, HT, VT and FF have the special
|
|
||||||
meanings specified in RFC 854
|
|
||||||
|
|
||||||
- the other 25 codes have no standard interpretation
|
|
||||||
|
|
||||||
- the sequence 'CR LF' means newline
|
|
||||||
|
|
||||||
- the sequence 'CR NUL' means carriage-return
|
|
||||||
|
|
||||||
- an 'LF' not preceded by a 'CR' means moving to the
|
|
||||||
same column on the next line.
|
|
||||||
|
|
||||||
- the sequence 'CR x' for any x other than LF or NUL is
|
|
||||||
illegal. (Note that this also means that a string may
|
|
||||||
end with either 'CR LF' or 'CR NUL', but not with CR.)
|
|
||||||
|
|
||||||
Any object defined using this syntax may not exceed 255
|
|
||||||
characters in length."
|
|
||||||
SYNTAX OCTET STRING (SIZE (0..255))
|
|
||||||
|
|
||||||
PhysAddress ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "1x:"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents media- or physical-level addresses."
|
|
||||||
SYNTAX OCTET STRING
|
|
||||||
|
|
||||||
|
|
||||||
MacAddress ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "1x:"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents an 802 MAC address represented in the
|
|
||||||
`canonical' order defined by IEEE 802.1a, i.e., as if it
|
|
||||||
were transmitted least significant bit first, even though
|
|
||||||
802.5 (in contrast to other 802.x protocols) requires MAC
|
|
||||||
addresses to be transmitted most significant bit first."
|
|
||||||
SYNTAX OCTET STRING (SIZE (6))
|
|
||||||
|
|
||||||
TruthValue ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents a boolean value."
|
|
||||||
SYNTAX INTEGER { true(1), false(2) }
|
|
||||||
|
|
||||||
TestAndIncr ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents integer-valued information used for atomic
|
|
||||||
operations. When the management protocol is used to specify
|
|
||||||
that an object instance having this syntax is to be
|
|
||||||
modified, the new value supplied via the management protocol
|
|
||||||
must precisely match the value presently held by the
|
|
||||||
instance. If not, the management protocol set operation
|
|
||||||
fails with an error of `inconsistentValue'. Otherwise, if
|
|
||||||
the current value is the maximum value of 2^31-1 (2147483647
|
|
||||||
decimal), then the value held by the instance is wrapped to
|
|
||||||
zero; otherwise, the value held by the instance is
|
|
||||||
incremented by one. (Note that regardless of whether the
|
|
||||||
management protocol set operation succeeds, the variable-
|
|
||||||
binding in the request and response PDUs are identical.)
|
|
||||||
|
|
||||||
The value of the ACCESS clause for objects having this
|
|
||||||
syntax is either `read-write' or `read-create'. When an
|
|
||||||
instance of a columnar object having this syntax is created,
|
|
||||||
any value may be supplied via the management protocol.
|
|
||||||
|
|
||||||
When the network management portion of the system is re-
|
|
||||||
initialized, the value of every object instance having this
|
|
||||||
syntax must either be incremented from its value prior to
|
|
||||||
the re-initialization, or (if the value prior to the re-
|
|
||||||
initialization is unknown) be set to a pseudo-randomly
|
|
||||||
generated value."
|
|
||||||
SYNTAX INTEGER (0..2147483647)
|
|
||||||
|
|
||||||
AutonomousType ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents an independently extensible type identification
|
|
||||||
value. It may, for example, indicate a particular sub-tree
|
|
||||||
with further MIB definitions, or define a particular type of
|
|
||||||
protocol or hardware."
|
|
||||||
SYNTAX OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
|
|
||||||
InstancePointer ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS obsolete
|
|
||||||
DESCRIPTION
|
|
||||||
"A pointer to either a specific instance of a MIB object or
|
|
||||||
a conceptual row of a MIB table in the managed device. In
|
|
||||||
the latter case, by convention, it is the name of the
|
|
||||||
particular instance of the first accessible columnar object
|
|
||||||
in the conceptual row.
|
|
||||||
|
|
||||||
The two uses of this textual convention are replaced by
|
|
||||||
VariablePointer and RowPointer, respectively."
|
|
||||||
SYNTAX OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
|
|
||||||
VariablePointer ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A pointer to a specific object instance. For example,
|
|
||||||
sysContact.0 or ifInOctets.3."
|
|
||||||
SYNTAX OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
|
|
||||||
RowPointer ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents a pointer to a conceptual row. The value is the
|
|
||||||
name of the instance of the first accessible columnar object
|
|
||||||
in the conceptual row.
|
|
||||||
|
|
||||||
For example, ifIndex.3 would point to the 3rd row in the
|
|
||||||
ifTable (note that if ifIndex were not-accessible, then
|
|
||||||
ifDescr.3 would be used instead)."
|
|
||||||
SYNTAX OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
RowStatus ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The RowStatus textual convention is used to manage the
|
|
||||||
creation and deletion of conceptual rows, and is used as the
|
|
||||||
value of the SYNTAX clause for the status column of a
|
|
||||||
conceptual row (as described in Section 7.7.1 of [2].)
|
|
||||||
The status column has six defined values:
|
|
||||||
|
|
||||||
- `active', which indicates that the conceptual row is
|
|
||||||
available for use by the managed device;
|
|
||||||
|
|
||||||
- `notInService', which indicates that the conceptual
|
|
||||||
row exists in the agent, but is unavailable for use by
|
|
||||||
the managed device (see NOTE below); 'notInService' has
|
|
||||||
no implication regarding the internal consistency of
|
|
||||||
the row, availability of resources, or consistency with
|
|
||||||
the current state of the managed device;
|
|
||||||
|
|
||||||
- `notReady', which indicates that the conceptual row
|
|
||||||
exists in the agent, but is missing information
|
|
||||||
necessary in order to be available for use by the
|
|
||||||
managed device (i.e., one or more required columns in
|
|
||||||
the conceptual row have not been instanciated);
|
|
||||||
|
|
||||||
- `createAndGo', which is supplied by a management
|
|
||||||
station wishing to create a new instance of a
|
|
||||||
conceptual row and to have its status automatically set
|
|
||||||
to active, making it available for use by the managed
|
|
||||||
device;
|
|
||||||
|
|
||||||
- `createAndWait', which is supplied by a management
|
|
||||||
station wishing to create a new instance of a
|
|
||||||
conceptual row (but not make it available for use by
|
|
||||||
the managed device); and,
|
|
||||||
|
|
||||||
- `destroy', which is supplied by a management station
|
|
||||||
wishing to delete all of the instances associated with
|
|
||||||
an existing conceptual row.
|
|
||||||
|
|
||||||
Whereas five of the six values (all except `notReady') may
|
|
||||||
be specified in a management protocol set operation, only
|
|
||||||
three values will be returned in response to a management
|
|
||||||
protocol retrieval operation: `notReady', `notInService' or
|
|
||||||
`active'. That is, when queried, an existing conceptual row
|
|
||||||
has only three states: it is either available for use by
|
|
||||||
the managed device (the status column has value `active');
|
|
||||||
it is not available for use by the managed device, though
|
|
||||||
the agent has sufficient information to attempt to make it
|
|
||||||
so (the status column has value `notInService'); or, it is
|
|
||||||
not available for use by the managed device, and an attempt
|
|
||||||
to make it so would fail because the agent has insufficient
|
|
||||||
information (the state column has value `notReady').
|
|
||||||
|
|
||||||
NOTE WELL
|
|
||||||
|
|
||||||
This textual convention may be used for a MIB table,
|
|
||||||
irrespective of whether the values of that table's
|
|
||||||
conceptual rows are able to be modified while it is
|
|
||||||
active, or whether its conceptual rows must be taken
|
|
||||||
out of service in order to be modified. That is, it is
|
|
||||||
the responsibility of the DESCRIPTION clause of the
|
|
||||||
status column to specify whether the status column must
|
|
||||||
not be `active' in order for the value of some other
|
|
||||||
column of the same conceptual row to be modified. If
|
|
||||||
such a specification is made, affected columns may be
|
|
||||||
changed by an SNMP set PDU if the RowStatus would not
|
|
||||||
be equal to `active' either immediately before or after
|
|
||||||
processing the PDU. In other words, if the PDU also
|
|
||||||
contained a varbind that would change the RowStatus
|
|
||||||
value, the column in question may be changed if the
|
|
||||||
RowStatus was not equal to `active' as the PDU was
|
|
||||||
received, or if the varbind sets the status to a value
|
|
||||||
other than 'active'.
|
|
||||||
|
|
||||||
|
|
||||||
Also note that whenever any elements of a row exist, the
|
|
||||||
RowStatus column must also exist.
|
|
||||||
|
|
||||||
To summarize the effect of having a conceptual row with a
|
|
||||||
status column having a SYNTAX clause value of RowStatus,
|
|
||||||
consider the following state diagram:
|
|
||||||
|
|
||||||
|
|
||||||
STATE
|
|
||||||
+--------------+-----------+-------------+-------------
|
|
||||||
| A | B | C | D
|
|
||||||
| |status col.|status column|
|
|
||||||
|status column | is | is |status column
|
|
||||||
ACTION |does not exist| notReady | notInService| is active
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
set status |noError ->D|inconsist- |inconsistent-|inconsistent-
|
|
||||||
column to | or | entValue| Value| Value
|
|
||||||
createAndGo |inconsistent- | | |
|
|
||||||
| Value| | |
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
set status |noError see 1|inconsist- |inconsistent-|inconsistent-
|
|
||||||
column to | or | entValue| Value| Value
|
|
||||||
createAndWait |wrongValue | | |
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
set status |inconsistent- |inconsist- |noError |noError
|
|
||||||
column to | Value| entValue| |
|
|
||||||
active | | | |
|
|
||||||
| | or | |
|
|
||||||
| | | |
|
|
||||||
| |see 2 ->D|see 8 ->D| ->D
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
set status |inconsistent- |inconsist- |noError |noError ->C
|
|
||||||
column to | Value| entValue| |
|
|
||||||
notInService | | | |
|
|
||||||
| | or | | or
|
|
||||||
| | | |
|
|
||||||
| |see 3 ->C| ->C|see 6
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
set status |noError |noError |noError |noError ->A
|
|
||||||
column to | | | | or
|
|
||||||
destroy | ->A| ->A| ->A|see 7
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
set any other |see 4 |noError |noError |see 5
|
|
||||||
column to some| | | |
|
|
||||||
value | | see 1| ->C| ->D
|
|
||||||
--------------+--------------+-----------+-------------+-------------
|
|
||||||
|
|
||||||
(1) goto B or C, depending on information available to the
|
|
||||||
agent.
|
|
||||||
|
|
||||||
(2) if other variable bindings included in the same PDU,
|
|
||||||
provide values for all columns which are missing but
|
|
||||||
required, and all columns have acceptable values, then
|
|
||||||
return noError and goto D.
|
|
||||||
|
|
||||||
(3) if other variable bindings included in the same PDU,
|
|
||||||
provide legal values for all columns which are missing but
|
|
||||||
required, then return noError and goto C.
|
|
||||||
|
|
||||||
(4) at the discretion of the agent, the return value may be
|
|
||||||
either:
|
|
||||||
|
|
||||||
inconsistentName: because the agent does not choose to
|
|
||||||
create such an instance when the corresponding
|
|
||||||
RowStatus instance does not exist, or
|
|
||||||
|
|
||||||
inconsistentValue: if the supplied value is
|
|
||||||
inconsistent with the state of some other MIB object's
|
|
||||||
value, or
|
|
||||||
|
|
||||||
noError: because the agent chooses to create the
|
|
||||||
instance.
|
|
||||||
|
|
||||||
If noError is returned, then the instance of the status
|
|
||||||
column must also be created, and the new state is B or C,
|
|
||||||
depending on the information available to the agent. If
|
|
||||||
inconsistentName or inconsistentValue is returned, the row
|
|
||||||
remains in state A.
|
|
||||||
|
|
||||||
(5) depending on the MIB definition for the column/table,
|
|
||||||
either noError or inconsistentValue may be returned.
|
|
||||||
|
|
||||||
(6) the return value can indicate one of the following
|
|
||||||
errors:
|
|
||||||
|
|
||||||
wrongValue: because the agent does not support
|
|
||||||
notInService (e.g., an agent which does not support
|
|
||||||
createAndWait), or
|
|
||||||
|
|
||||||
inconsistentValue: because the agent is unable to take
|
|
||||||
the row out of service at this time, perhaps because it
|
|
||||||
is in use and cannot be de-activated.
|
|
||||||
|
|
||||||
(7) the return value can indicate the following error:
|
|
||||||
|
|
||||||
inconsistentValue: because the agent is unable to
|
|
||||||
remove the row at this time, perhaps because it is in
|
|
||||||
use and cannot be de-activated.
|
|
||||||
|
|
||||||
(8) the transition to D can fail, e.g., if the values of the
|
|
||||||
conceptual row are inconsistent, then the error code would
|
|
||||||
be inconsistentValue.
|
|
||||||
|
|
||||||
NOTE: Other processing of (this and other varbinds of) the
|
|
||||||
set request may result in a response other than noError
|
|
||||||
being returned, e.g., wrongValue, noCreation, etc.
|
|
||||||
|
|
||||||
|
|
||||||
Conceptual Row Creation
|
|
||||||
|
|
||||||
There are four potential interactions when creating a
|
|
||||||
conceptual row: selecting an instance-identifier which is
|
|
||||||
not in use; creating the conceptual row; initializing any
|
|
||||||
objects for which the agent does not supply a default; and,
|
|
||||||
making the conceptual row available for use by the managed
|
|
||||||
device.
|
|
||||||
|
|
||||||
Interaction 1: Selecting an Instance-Identifier
|
|
||||||
|
|
||||||
The algorithm used to select an instance-identifier varies
|
|
||||||
for each conceptual row. In some cases, the instance-
|
|
||||||
identifier is semantically significant, e.g., the
|
|
||||||
destination address of a route, and a management station
|
|
||||||
selects the instance-identifier according to the semantics.
|
|
||||||
|
|
||||||
In other cases, the instance-identifier is used solely to
|
|
||||||
distinguish conceptual rows, and a management station
|
|
||||||
without specific knowledge of the conceptual row might
|
|
||||||
examine the instances present in order to determine an
|
|
||||||
unused instance-identifier. (This approach may be used, but
|
|
||||||
it is often highly sub-optimal; however, it is also a
|
|
||||||
questionable practice for a naive management station to
|
|
||||||
attempt conceptual row creation.)
|
|
||||||
|
|
||||||
Alternately, the MIB module which defines the conceptual row
|
|
||||||
might provide one or more objects which provide assistance
|
|
||||||
in determining an unused instance-identifier. For example,
|
|
||||||
if the conceptual row is indexed by an integer-value, then
|
|
||||||
an object having an integer-valued SYNTAX clause might be
|
|
||||||
defined for such a purpose, allowing a management station to
|
|
||||||
issue a management protocol retrieval operation. In order
|
|
||||||
to avoid unnecessary collisions between competing management
|
|
||||||
stations, `adjacent' retrievals of this object should be
|
|
||||||
different.
|
|
||||||
|
|
||||||
Finally, the management station could select a pseudo-random
|
|
||||||
number to use as the index. In the event that this index
|
|
||||||
was already in use and an inconsistentValue was returned in
|
|
||||||
response to the management protocol set operation, the
|
|
||||||
management station should simply select a new pseudo-random
|
|
||||||
number and retry the operation.
|
|
||||||
|
|
||||||
A MIB designer should choose between the two latter
|
|
||||||
algorithms based on the size of the table (and therefore the
|
|
||||||
efficiency of each algorithm). For tables in which a large
|
|
||||||
number of entries are expected, it is recommended that a MIB
|
|
||||||
object be defined that returns an acceptable index for
|
|
||||||
creation. For tables with small numbers of entries, it is
|
|
||||||
recommended that the latter pseudo-random index mechanism be
|
|
||||||
used.
|
|
||||||
|
|
||||||
Interaction 2: Creating the Conceptual Row
|
|
||||||
|
|
||||||
Once an unused instance-identifier has been selected, the
|
|
||||||
management station determines if it wishes to create and
|
|
||||||
activate the conceptual row in one transaction or in a
|
|
||||||
negotiated set of interactions.
|
|
||||||
|
|
||||||
Interaction 2a: Creating and Activating the Conceptual Row
|
|
||||||
|
|
||||||
The management station must first determine the column
|
|
||||||
requirements, i.e., it must determine those columns for
|
|
||||||
which it must or must not provide values. Depending on the
|
|
||||||
complexity of the table and the management station's
|
|
||||||
knowledge of the agent's capabilities, this determination
|
|
||||||
can be made locally by the management station. Alternately,
|
|
||||||
the management station issues a management protocol get
|
|
||||||
operation to examine all columns in the conceptual row that
|
|
||||||
it wishes to create. In response, for each column, there
|
|
||||||
are three possible outcomes:
|
|
||||||
|
|
||||||
- a value is returned, indicating that some other
|
|
||||||
management station has already created this conceptual
|
|
||||||
row. We return to interaction 1.
|
|
||||||
|
|
||||||
- the exception `noSuchInstance' is returned,
|
|
||||||
indicating that the agent implements the object-type
|
|
||||||
associated with this column, and that this column in at
|
|
||||||
least one conceptual row would be accessible in the MIB
|
|
||||||
view used by the retrieval were it to exist. For those
|
|
||||||
columns to which the agent provides read-create access,
|
|
||||||
the `noSuchInstance' exception tells the management
|
|
||||||
station that it should supply a value for this column
|
|
||||||
when the conceptual row is to be created.
|
|
||||||
|
|
||||||
- the exception `noSuchObject' is returned, indicating
|
|
||||||
that the agent does not implement the object-type
|
|
||||||
associated with this column or that there is no
|
|
||||||
conceptual row for which this column would be
|
|
||||||
accessible in the MIB view used by the retrieval. As
|
|
||||||
such, the management station can not issue any
|
|
||||||
management protocol set operations to create an
|
|
||||||
instance of this column.
|
|
||||||
|
|
||||||
Once the column requirements have been determined, a
|
|
||||||
management protocol set operation is accordingly issued.
|
|
||||||
This operation also sets the new instance of the status
|
|
||||||
column to `createAndGo'.
|
|
||||||
|
|
||||||
When the agent processes the set operation, it verifies that
|
|
||||||
it has sufficient information to make the conceptual row
|
|
||||||
available for use by the managed device. The information
|
|
||||||
available to the agent is provided by two sources: the
|
|
||||||
management protocol set operation which creates the
|
|
||||||
conceptual row, and, implementation-specific defaults
|
|
||||||
supplied by the agent (note that an agent must provide
|
|
||||||
implementation-specific defaults for at least those objects
|
|
||||||
which it implements as read-only). If there is sufficient
|
|
||||||
information available, then the conceptual row is created, a
|
|
||||||
`noError' response is returned, the status column is set to
|
|
||||||
`active', and no further interactions are necessary (i.e.,
|
|
||||||
interactions 3 and 4 are skipped). If there is insufficient
|
|
||||||
information, then the conceptual row is not created, and the
|
|
||||||
set operation fails with an error of `inconsistentValue'.
|
|
||||||
On this error, the management station can issue a management
|
|
||||||
protocol retrieval operation to determine if this was
|
|
||||||
because it failed to specify a value for a required column,
|
|
||||||
or, because the selected instance of the status column
|
|
||||||
already existed. In the latter case, we return to
|
|
||||||
interaction 1. In the former case, the management station
|
|
||||||
can re-issue the set operation with the additional
|
|
||||||
information, or begin interaction 2 again using
|
|
||||||
`createAndWait' in order to negotiate creation of the
|
|
||||||
conceptual row.
|
|
||||||
|
|
||||||
NOTE WELL
|
|
||||||
|
|
||||||
Regardless of the method used to determine the column
|
|
||||||
requirements, it is possible that the management
|
|
||||||
station might deem a column necessary when, in fact,
|
|
||||||
the agent will not allow that particular columnar
|
|
||||||
instance to be created or written. In this case, the
|
|
||||||
management protocol set operation will fail with an
|
|
||||||
error such as `noCreation' or `notWritable'. In this
|
|
||||||
case, the management station decides whether it needs
|
|
||||||
to be able to set a value for that particular columnar
|
|
||||||
instance. If not, the management station re-issues the
|
|
||||||
management protocol set operation, but without setting
|
|
||||||
a value for that particular columnar instance;
|
|
||||||
otherwise, the management station aborts the row
|
|
||||||
creation algorithm.
|
|
||||||
|
|
||||||
Interaction 2b: Negotiating the Creation of the Conceptual
|
|
||||||
Row
|
|
||||||
|
|
||||||
The management station issues a management protocol set
|
|
||||||
operation which sets the desired instance of the status
|
|
||||||
column to `createAndWait'. If the agent is unwilling to
|
|
||||||
process a request of this sort, the set operation fails with
|
|
||||||
an error of `wrongValue'. (As a consequence, such an agent
|
|
||||||
must be prepared to accept a single management protocol set
|
|
||||||
operation, i.e., interaction 2a above, containing all of the
|
|
||||||
columns indicated by its column requirements.) Otherwise,
|
|
||||||
the conceptual row is created, a `noError' response is
|
|
||||||
returned, and the status column is immediately set to either
|
|
||||||
`notInService' or `notReady', depending on whether it has
|
|
||||||
sufficient information to (attempt to) make the conceptual
|
|
||||||
row available for use by the managed device. If there is
|
|
||||||
sufficient information available, then the status column is
|
|
||||||
set to `notInService'; otherwise, if there is insufficient
|
|
||||||
information, then the status column is set to `notReady'.
|
|
||||||
Regardless, we proceed to interaction 3.
|
|
||||||
|
|
||||||
Interaction 3: Initializing non-defaulted Objects
|
|
||||||
|
|
||||||
The management station must now determine the column
|
|
||||||
requirements. It issues a management protocol get operation
|
|
||||||
to examine all columns in the created conceptual row. In
|
|
||||||
the response, for each column, there are three possible
|
|
||||||
outcomes:
|
|
||||||
|
|
||||||
- a value is returned, indicating that the agent
|
|
||||||
implements the object-type associated with this column
|
|
||||||
and had sufficient information to provide a value. For
|
|
||||||
those columns to which the agent provides read-create
|
|
||||||
access (and for which the agent allows their values to
|
|
||||||
be changed after their creation), a value return tells
|
|
||||||
the management station that it may issue additional
|
|
||||||
management protocol set operations, if it desires, in
|
|
||||||
order to change the value associated with this column.
|
|
||||||
|
|
||||||
- the exception `noSuchInstance' is returned,
|
|
||||||
indicating that the agent implements the object-type
|
|
||||||
associated with this column, and that this column in at
|
|
||||||
least one conceptual row would be accessible in the MIB
|
|
||||||
view used by the retrieval were it to exist. However,
|
|
||||||
the agent does not have sufficient information to
|
|
||||||
provide a value, and until a value is provided, the
|
|
||||||
conceptual row may not be made available for use by the
|
|
||||||
managed device. For those columns to which the agent
|
|
||||||
provides read-create access, the `noSuchInstance'
|
|
||||||
exception tells the management station that it must
|
|
||||||
issue additional management protocol set operations, in
|
|
||||||
order to provide a value associated with this column.
|
|
||||||
|
|
||||||
- the exception `noSuchObject' is returned, indicating
|
|
||||||
that the agent does not implement the object-type
|
|
||||||
associated with this column or that there is no
|
|
||||||
conceptual row for which this column would be
|
|
||||||
accessible in the MIB view used by the retrieval. As
|
|
||||||
such, the management station can not issue any
|
|
||||||
management protocol set operations to create an
|
|
||||||
instance of this column.
|
|
||||||
|
|
||||||
If the value associated with the status column is
|
|
||||||
`notReady', then the management station must first deal with
|
|
||||||
all `noSuchInstance' columns, if any. Having done so, the
|
|
||||||
value of the status column becomes `notInService', and we
|
|
||||||
proceed to interaction 4.
|
|
||||||
|
|
||||||
Interaction 4: Making the Conceptual Row Available
|
|
||||||
|
|
||||||
Once the management station is satisfied with the values
|
|
||||||
associated with the columns of the conceptual row, it issues
|
|
||||||
a management protocol set operation to set the status column
|
|
||||||
to `active'. If the agent has sufficient information to
|
|
||||||
make the conceptual row available for use by the managed
|
|
||||||
device, the management protocol set operation succeeds (a
|
|
||||||
`noError' response is returned). Otherwise, the management
|
|
||||||
protocol set operation fails with an error of
|
|
||||||
`inconsistentValue'.
|
|
||||||
|
|
||||||
NOTE WELL
|
|
||||||
|
|
||||||
A conceptual row having a status column with value
|
|
||||||
`notInService' or `notReady' is unavailable to the
|
|
||||||
managed device. As such, it is possible for the
|
|
||||||
managed device to create its own instances during the
|
|
||||||
time between the management protocol set operation
|
|
||||||
which sets the status column to `createAndWait' and the
|
|
||||||
management protocol set operation which sets the status
|
|
||||||
column to `active'. In this case, when the management
|
|
||||||
protocol set operation is issued to set the status
|
|
||||||
column to `active', the values held in the agent
|
|
||||||
supersede those used by the managed device.
|
|
||||||
|
|
||||||
If the management station is prevented from setting the
|
|
||||||
status column to `active' (e.g., due to management station
|
|
||||||
or network failure) the conceptual row will be left in the
|
|
||||||
`notInService' or `notReady' state, consuming resources
|
|
||||||
indefinitely. The agent must detect conceptual rows that
|
|
||||||
have been in either state for an abnormally long period of
|
|
||||||
time and remove them. It is the responsibility of the
|
|
||||||
DESCRIPTION clause of the status column to indicate what an
|
|
||||||
abnormally long period of time would be. This period of
|
|
||||||
time should be long enough to allow for human response time
|
|
||||||
(including `think time') between the creation of the
|
|
||||||
conceptual row and the setting of the status to `active'.
|
|
||||||
In the absence of such information in the DESCRIPTION
|
|
||||||
clause, it is suggested that this period be approximately 5
|
|
||||||
minutes in length. This removal action applies not only to
|
|
||||||
newly-created rows, but also to previously active rows which
|
|
||||||
are set to, and left in, the notInService state for a
|
|
||||||
prolonged period exceeding that which is considered normal
|
|
||||||
for such a conceptual row.
|
|
||||||
|
|
||||||
Conceptual Row Suspension
|
|
||||||
|
|
||||||
When a conceptual row is `active', the management station
|
|
||||||
may issue a management protocol set operation which sets the
|
|
||||||
instance of the status column to `notInService'. If the
|
|
||||||
agent is unwilling to do so, the set operation fails with an
|
|
||||||
error of `wrongValue' or `inconsistentValue'. Otherwise,
|
|
||||||
the conceptual row is taken out of service, and a `noError'
|
|
||||||
response is returned. It is the responsibility of the
|
|
||||||
DESCRIPTION clause of the status column to indicate under
|
|
||||||
what circumstances the status column should be taken out of
|
|
||||||
service (e.g., in order for the value of some other column
|
|
||||||
of the same conceptual row to be modified).
|
|
||||||
|
|
||||||
|
|
||||||
Conceptual Row Deletion
|
|
||||||
|
|
||||||
For deletion of conceptual rows, a management protocol set
|
|
||||||
operation is issued which sets the instance of the status
|
|
||||||
column to `destroy'. This request may be made regardless of
|
|
||||||
the current value of the status column (e.g., it is possible
|
|
||||||
to delete conceptual rows which are either `notReady',
|
|
||||||
`notInService' or `active'.) If the operation succeeds,
|
|
||||||
then all instances associated with the conceptual row are
|
|
||||||
immediately removed."
|
|
||||||
SYNTAX INTEGER {
|
|
||||||
-- the following two values are states:
|
|
||||||
-- these values may be read or written
|
|
||||||
active(1),
|
|
||||||
notInService(2),
|
|
||||||
|
|
||||||
-- the following value is a state:
|
|
||||||
-- this value may be read, but not written
|
|
||||||
notReady(3),
|
|
||||||
|
|
||||||
-- the following three values are
|
|
||||||
-- actions: these values may be written,
|
|
||||||
-- but are never read
|
|
||||||
createAndGo(4),
|
|
||||||
createAndWait(5),
|
|
||||||
destroy(6)
|
|
||||||
}
|
|
||||||
|
|
||||||
TimeStamp ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The value of the sysUpTime object at which a specific
|
|
||||||
occurrence happened. The specific occurrence must be
|
|
||||||
defined in the description of any object defined using this
|
|
||||||
type.
|
|
||||||
|
|
||||||
If sysUpTime is reset to zero as a result of a re-
|
|
||||||
initialization of the network management (sub)system, then
|
|
||||||
the values of all TimeStamp objects are also reset.
|
|
||||||
However, after approximately 497 days without a re-
|
|
||||||
initialization, the sysUpTime object will reach 2^^32-1 and
|
|
||||||
then increment around to zero; in this case, existing values
|
|
||||||
of TimeStamp objects do not change. This can lead to
|
|
||||||
ambiguities in the value of TimeStamp objects."
|
|
||||||
SYNTAX TimeTicks
|
|
||||||
|
|
||||||
|
|
||||||
TimeInterval ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A period of time, measured in units of 0.01 seconds."
|
|
||||||
SYNTAX INTEGER (0..2147483647)
|
|
||||||
|
|
||||||
DateAndTime ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A date-time specification.
|
|
||||||
|
|
||||||
field octets contents range
|
|
||||||
----- ------ -------- -----
|
|
||||||
1 1-2 year* 0..65536
|
|
||||||
2 3 month 1..12
|
|
||||||
3 4 day 1..31
|
|
||||||
4 5 hour 0..23
|
|
||||||
5 6 minutes 0..59
|
|
||||||
6 7 seconds 0..60
|
|
||||||
(use 60 for leap-second)
|
|
||||||
7 8 deci-seconds 0..9
|
|
||||||
8 9 direction from UTC '+' / '-'
|
|
||||||
9 10 hours from UTC* 0..13
|
|
||||||
10 11 minutes from UTC 0..59
|
|
||||||
|
|
||||||
* Notes:
|
|
||||||
- the value of year is in network-byte order
|
|
||||||
- daylight saving time in New Zealand is +13
|
|
||||||
|
|
||||||
For example, Tuesday May 26, 1992 at 1:30:15 PM EDT would be
|
|
||||||
displayed as:
|
|
||||||
|
|
||||||
1992-5-26,13:30:15.0,-4:0
|
|
||||||
|
|
||||||
Note that if only local time is known, then timezone
|
|
||||||
information (fields 8-10) is not present."
|
|
||||||
SYNTAX OCTET STRING (SIZE (8 | 11))
|
|
||||||
|
|
||||||
|
|
||||||
StorageType ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Describes the memory realization of a conceptual row. A
|
|
||||||
row which is volatile(2) is lost upon reboot. A row which
|
|
||||||
is either nonVolatile(3), permanent(4) or readOnly(5), is
|
|
||||||
backed up by stable storage. A row which is permanent(4)
|
|
||||||
can be changed but not deleted. A row which is readOnly(5)
|
|
||||||
cannot be changed nor deleted.
|
|
||||||
|
|
||||||
If the value of an object with this syntax is either
|
|
||||||
permanent(4) or readOnly(5), it cannot be written.
|
|
||||||
Conversely, if the value is either other(1), volatile(2) or
|
|
||||||
nonVolatile(3), it cannot be modified to be permanent(4) or
|
|
||||||
readOnly(5). (All illegal modifications result in a
|
|
||||||
'wrongValue' error.)
|
|
||||||
|
|
||||||
Every usage of this textual convention is required to
|
|
||||||
specify the columnar objects which a permanent(4) row must
|
|
||||||
at a minimum allow to be writable."
|
|
||||||
SYNTAX INTEGER {
|
|
||||||
other(1), -- eh?
|
|
||||||
volatile(2), -- e.g., in RAM
|
|
||||||
nonVolatile(3), -- e.g., in NVRAM
|
|
||||||
permanent(4), -- e.g., partially in ROM
|
|
||||||
readOnly(5) -- e.g., completely in ROM
|
|
||||||
}
|
|
||||||
|
|
||||||
TDomain ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Denotes a kind of transport service.
|
|
||||||
|
|
||||||
Some possible values, such as snmpUDPDomain, are defined in
|
|
||||||
the SNMPv2-TM MIB module. Other possible values are defined
|
|
||||||
in other MIB modules."
|
|
||||||
REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
|
|
||||||
SYNTAX OBJECT IDENTIFIER
|
|
||||||
|
|
||||||
|
|
||||||
TAddress ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Denotes a transport service address.
|
|
||||||
|
|
||||||
A TAddress value is always interpreted within the context of a
|
|
||||||
TDomain value. Thus, each definition of a TDomain value must
|
|
||||||
be accompanied by a definition of a textual convention for use
|
|
||||||
with that TDomain. Some possible textual conventions, such as
|
|
||||||
SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM
|
|
||||||
MIB module. Other possible textual conventions are defined in
|
|
||||||
other MIB modules."
|
|
||||||
REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
|
|
||||||
SYNTAX OCTET STRING (SIZE (1..255))
|
|
||||||
|
|
||||||
|
|
||||||
END
|
|
||||||
@ -1,194 +0,0 @@
|
|||||||
SNMPv2-TM DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
IMPORTS
|
|
||||||
MODULE-IDENTITY, OBJECT-IDENTITY,
|
|
||||||
snmpModules, snmpDomains, snmpProxys
|
|
||||||
FROM SNMPv2-SMI
|
|
||||||
TEXTUAL-CONVENTION
|
|
||||||
FROM SNMPv2-TC;
|
|
||||||
|
|
||||||
snmpv2tm MODULE-IDENTITY
|
|
||||||
LAST-UPDATED "200210160000Z"
|
|
||||||
ORGANIZATION "IETF SNMPv3 Working Group"
|
|
||||||
CONTACT-INFO
|
|
||||||
"WG-EMail: snmpv3@lists.tislabs.com
|
|
||||||
Subscribe: snmpv3-request@lists.tislabs.com
|
|
||||||
|
|
||||||
Co-Chair: Russ Mundy
|
|
||||||
Network Associates Laboratories
|
|
||||||
postal: 15204 Omega Drive, Suite 300
|
|
||||||
Rockville, MD 20850-4601
|
|
||||||
USA
|
|
||||||
EMail: mundy@tislabs.com
|
|
||||||
phone: +1 301 947-7107
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Co-Chair: David Harrington
|
|
||||||
Enterasys Networks
|
|
||||||
postal: 35 Industrial Way
|
|
||||||
P. O. Box 5005
|
|
||||||
Rochester, NH 03866-5005
|
|
||||||
USA
|
|
||||||
EMail: dbh@enterasys.com
|
|
||||||
phone: +1 603 337-2614
|
|
||||||
|
|
||||||
Editor: Randy Presuhn
|
|
||||||
BMC Software, Inc.
|
|
||||||
postal: 2141 North First Street
|
|
||||||
San Jose, CA 95131
|
|
||||||
USA
|
|
||||||
EMail: randy_presuhn@bmc.com
|
|
||||||
phone: +1 408 546-1006"
|
|
||||||
DESCRIPTION
|
|
||||||
"The MIB module for SNMP transport mappings.
|
|
||||||
|
|
||||||
Copyright (C) The Internet Society (2002). This
|
|
||||||
version of this MIB module is part of RFC 3417;
|
|
||||||
see the RFC itself for full legal notices.
|
|
||||||
"
|
|
||||||
REVISION "200210160000Z"
|
|
||||||
DESCRIPTION
|
|
||||||
"Clarifications, published as RFC 3417."
|
|
||||||
REVISION "199601010000Z"
|
|
||||||
DESCRIPTION
|
|
||||||
"Clarifications, published as RFC 1906."
|
|
||||||
REVISION "199304010000Z"
|
|
||||||
DESCRIPTION
|
|
||||||
"The initial version, published as RFC 1449."
|
|
||||||
::= { snmpModules 19 }
|
|
||||||
|
|
||||||
-- SNMP over UDP over IPv4
|
|
||||||
|
|
||||||
snmpUDPDomain OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The SNMP over UDP over IPv4 transport domain.
|
|
||||||
The corresponding transport address is of type
|
|
||||||
SnmpUDPAddress."
|
|
||||||
::= { snmpDomains 1 }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SnmpUDPAddress ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "1d.1d.1d.1d/2d"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents a UDP over IPv4 address:
|
|
||||||
|
|
||||||
octets contents encoding
|
|
||||||
1-4 IP-address network-byte order
|
|
||||||
5-6 UDP-port network-byte order
|
|
||||||
"
|
|
||||||
SYNTAX OCTET STRING (SIZE (6))
|
|
||||||
|
|
||||||
-- SNMP over OSI
|
|
||||||
|
|
||||||
snmpCLNSDomain OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The SNMP over CLNS transport domain.
|
|
||||||
The corresponding transport address is of type
|
|
||||||
SnmpOSIAddress."
|
|
||||||
::= { snmpDomains 2 }
|
|
||||||
|
|
||||||
snmpCONSDomain OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The SNMP over CONS transport domain.
|
|
||||||
The corresponding transport address is of type
|
|
||||||
SnmpOSIAddress."
|
|
||||||
::= { snmpDomains 3 }
|
|
||||||
|
|
||||||
SnmpOSIAddress ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "*1x:/1x:"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents an OSI transport-address:
|
|
||||||
|
|
||||||
octets contents encoding
|
|
||||||
1 length of NSAP 'n' as an unsigned-integer
|
|
||||||
(either 0 or from 3 to 20)
|
|
||||||
2..(n+1) NSAP concrete binary representation
|
|
||||||
(n+2)..m TSEL string of (up to 64) octets
|
|
||||||
"
|
|
||||||
SYNTAX OCTET STRING (SIZE (1 | 4..85))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- SNMP over DDP
|
|
||||||
|
|
||||||
snmpDDPDomain OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The SNMP over DDP transport domain. The corresponding
|
|
||||||
transport address is of type SnmpNBPAddress."
|
|
||||||
::= { snmpDomains 4 }
|
|
||||||
|
|
||||||
SnmpNBPAddress ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents an NBP name:
|
|
||||||
|
|
||||||
octets contents encoding
|
|
||||||
1 length of object 'n' as an unsigned integer
|
|
||||||
2..(n+1) object string of (up to 32) octets
|
|
||||||
n+2 length of type 'p' as an unsigned integer
|
|
||||||
(n+3)..(n+2+p) type string of (up to 32) octets
|
|
||||||
n+3+p length of zone 'q' as an unsigned integer
|
|
||||||
(n+4+p)..(n+3+p+q) zone string of (up to 32) octets
|
|
||||||
|
|
||||||
For comparison purposes, strings are
|
|
||||||
case-insensitive. All strings may contain any octet
|
|
||||||
other than 255 (hex ff)."
|
|
||||||
SYNTAX OCTET STRING (SIZE (3..99))
|
|
||||||
|
|
||||||
-- SNMP over IPX
|
|
||||||
|
|
||||||
snmpIPXDomain OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The SNMP over IPX transport domain. The corresponding
|
|
||||||
transport address is of type SnmpIPXAddress."
|
|
||||||
::= { snmpDomains 5 }
|
|
||||||
|
|
||||||
SnmpIPXAddress ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"Represents an IPX address:
|
|
||||||
|
|
||||||
octets contents encoding
|
|
||||||
1-4 network-number network-byte order
|
|
||||||
5-10 physical-address network-byte order
|
|
||||||
11-12 socket-number network-byte order
|
|
||||||
"
|
|
||||||
SYNTAX OCTET STRING (SIZE (12))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- for proxy to SNMPv1 (RFC 1157)
|
|
||||||
|
|
||||||
rfc1157Proxy OBJECT IDENTIFIER ::= { snmpProxys 1 }
|
|
||||||
|
|
||||||
rfc1157Domain OBJECT-IDENTITY
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The transport domain for SNMPv1 over UDP over IPv4.
|
|
||||||
The corresponding transport address is of type
|
|
||||||
SnmpUDPAddress."
|
|
||||||
::= { rfc1157Proxy 1 }
|
|
||||||
|
|
||||||
-- ::= { rfc1157Proxy 2 } this OID is obsolete
|
|
||||||
|
|
||||||
END
|
|
||||||
@ -1,829 +0,0 @@
|
|||||||
TCP-MIB DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
IMPORTS
|
|
||||||
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32,
|
|
||||||
Gauge32, Counter32, Counter64, IpAddress, mib-2
|
|
||||||
FROM SNMPv2-SMI
|
|
||||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
|
||||||
InetAddress, InetAddressType,
|
|
||||||
InetPortNumber FROM INET-ADDRESS-MIB;
|
|
||||||
|
|
||||||
tcpMIB MODULE-IDENTITY
|
|
||||||
LAST-UPDATED "200502180000Z" -- 18 February 2005
|
|
||||||
ORGANIZATION
|
|
||||||
"IETF IPv6 MIB Revision Team
|
|
||||||
http://www.ietf.org/html.charters/ipv6-charter.html"
|
|
||||||
CONTACT-INFO
|
|
||||||
"Rajiv Raghunarayan (editor)
|
|
||||||
|
|
||||||
Cisco Systems Inc.
|
|
||||||
170 West Tasman Drive
|
|
||||||
San Jose, CA 95134
|
|
||||||
|
|
||||||
Phone: +1 408 853 9612
|
|
||||||
Email: <raraghun@cisco.com>
|
|
||||||
|
|
||||||
Send comments to <ipv6@ietf.org>"
|
|
||||||
DESCRIPTION
|
|
||||||
"The MIB module for managing TCP implementations.
|
|
||||||
|
|
||||||
Copyright (C) The Internet Society (2005). This version
|
|
||||||
of this MIB module is a part of RFC 4022; see the RFC
|
|
||||||
itself for full legal notices."
|
|
||||||
REVISION "200502180000Z" -- 18 February 2005
|
|
||||||
DESCRIPTION
|
|
||||||
"IP version neutral revision, published as RFC 4022."
|
|
||||||
REVISION "9411010000Z"
|
|
||||||
DESCRIPTION
|
|
||||||
"Initial SMIv2 version, published as RFC 2012."
|
|
||||||
REVISION "9103310000Z"
|
|
||||||
DESCRIPTION
|
|
||||||
"The initial revision of this MIB module was part of
|
|
||||||
MIB-II."
|
|
||||||
::= { mib-2 49 }
|
|
||||||
|
|
||||||
-- the TCP base variables group
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tcp OBJECT IDENTIFIER ::= { mib-2 6 }
|
|
||||||
|
|
||||||
-- Scalars
|
|
||||||
|
|
||||||
tcpRtoAlgorithm OBJECT-TYPE
|
|
||||||
SYNTAX INTEGER {
|
|
||||||
other(1), -- none of the following
|
|
||||||
constant(2), -- a constant rto
|
|
||||||
rsre(3), -- MIL-STD-1778, Appendix B
|
|
||||||
vanj(4), -- Van Jacobson's algorithm
|
|
||||||
rfc2988(5) -- RFC 2988
|
|
||||||
}
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The algorithm used to determine the timeout value used for
|
|
||||||
retransmitting unacknowledged octets."
|
|
||||||
::= { tcp 1 }
|
|
||||||
|
|
||||||
tcpRtoMin OBJECT-TYPE
|
|
||||||
SYNTAX Integer32 (0..2147483647)
|
|
||||||
UNITS "milliseconds"
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The minimum value permitted by a TCP implementation for
|
|
||||||
the retransmission timeout, measured in milliseconds.
|
|
||||||
More refined semantics for objects of this type depend
|
|
||||||
on the algorithm used to determine the retransmission
|
|
||||||
timeout; in particular, the IETF standard algorithm
|
|
||||||
rfc2988(5) provides a minimum value."
|
|
||||||
::= { tcp 2 }
|
|
||||||
|
|
||||||
tcpRtoMax OBJECT-TYPE
|
|
||||||
SYNTAX Integer32 (0..2147483647)
|
|
||||||
UNITS "milliseconds"
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The maximum value permitted by a TCP implementation for
|
|
||||||
the retransmission timeout, measured in milliseconds.
|
|
||||||
More refined semantics for objects of this type depend
|
|
||||||
on the algorithm used to determine the retransmission
|
|
||||||
timeout; in particular, the IETF standard algorithm
|
|
||||||
rfc2988(5) provides an upper bound (as part of an
|
|
||||||
adaptive backoff algorithm)."
|
|
||||||
::= { tcp 3 }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tcpMaxConn OBJECT-TYPE
|
|
||||||
SYNTAX Integer32 (-1 | 0..2147483647)
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The limit on the total number of TCP connections the entity
|
|
||||||
can support. In entities where the maximum number of
|
|
||||||
connections is dynamic, this object should contain the
|
|
||||||
value -1."
|
|
||||||
::= { tcp 4 }
|
|
||||||
|
|
||||||
tcpActiveOpens OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of times that TCP connections have made a direct
|
|
||||||
transition to the SYN-SENT state from the CLOSED state.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 5 }
|
|
||||||
|
|
||||||
tcpPassiveOpens OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of times TCP connections have made a direct
|
|
||||||
transition to the SYN-RCVD state from the LISTEN state.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 6 }
|
|
||||||
|
|
||||||
tcpAttemptFails OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of times that TCP connections have made a direct
|
|
||||||
transition to the CLOSED state from either the SYN-SENT
|
|
||||||
state or the SYN-RCVD state, plus the number of times that
|
|
||||||
TCP connections have made a direct transition to the
|
|
||||||
LISTEN state from the SYN-RCVD state.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::= { tcp 7 }
|
|
||||||
|
|
||||||
tcpEstabResets OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of times that TCP connections have made a direct
|
|
||||||
transition to the CLOSED state from either the ESTABLISHED
|
|
||||||
state or the CLOSE-WAIT state.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 8 }
|
|
||||||
|
|
||||||
tcpCurrEstab OBJECT-TYPE
|
|
||||||
SYNTAX Gauge32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of TCP connections for which the current state
|
|
||||||
is either ESTABLISHED or CLOSE-WAIT."
|
|
||||||
::= { tcp 9 }
|
|
||||||
|
|
||||||
tcpInSegs OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of segments received, including those
|
|
||||||
received in error. This count includes segments received
|
|
||||||
on currently established connections.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 10 }
|
|
||||||
|
|
||||||
tcpOutSegs OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of segments sent, including those on
|
|
||||||
current connections but excluding those containing only
|
|
||||||
retransmitted octets.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::= { tcp 11 }
|
|
||||||
|
|
||||||
tcpRetransSegs OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of segments retransmitted; that is, the
|
|
||||||
number of TCP segments transmitted containing one or more
|
|
||||||
previously transmitted octets.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 12 }
|
|
||||||
|
|
||||||
tcpInErrs OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of segments received in error (e.g., bad
|
|
||||||
TCP checksums).
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 14 }
|
|
||||||
|
|
||||||
tcpOutRsts OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of TCP segments sent containing the RST flag.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 15 }
|
|
||||||
|
|
||||||
-- { tcp 16 } was used to represent the ipv6TcpConnTable in RFC 2452,
|
|
||||||
-- which has since been obsoleted. It MUST not be used.
|
|
||||||
|
|
||||||
tcpHCInSegs OBJECT-TYPE
|
|
||||||
SYNTAX Counter64
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of segments received, including those
|
|
||||||
received in error. This count includes segments received
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
on currently established connections. This object is
|
|
||||||
the 64-bit equivalent of tcpInSegs.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 17 }
|
|
||||||
|
|
||||||
tcpHCOutSegs OBJECT-TYPE
|
|
||||||
SYNTAX Counter64
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of segments sent, including those on
|
|
||||||
current connections but excluding those containing only
|
|
||||||
retransmitted octets. This object is the 64-bit
|
|
||||||
equivalent of tcpOutSegs.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter are
|
|
||||||
indicated via discontinuities in the value of sysUpTime."
|
|
||||||
::= { tcp 18 }
|
|
||||||
|
|
||||||
|
|
||||||
-- The TCP Connection table
|
|
||||||
|
|
||||||
tcpConnectionTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF TcpConnectionEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A table containing information about existing TCP
|
|
||||||
connections. Note that unlike earlier TCP MIBs, there
|
|
||||||
is a separate table for connections in the LISTEN state."
|
|
||||||
::= { tcp 19 }
|
|
||||||
|
|
||||||
tcpConnectionEntry OBJECT-TYPE
|
|
||||||
SYNTAX TcpConnectionEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A conceptual row of the tcpConnectionTable containing
|
|
||||||
information about a particular current TCP connection.
|
|
||||||
Each row of this table is transient in that it ceases to
|
|
||||||
exist when (or soon after) the connection makes the
|
|
||||||
transition to the CLOSED state."
|
|
||||||
INDEX { tcpConnectionLocalAddressType,
|
|
||||||
tcpConnectionLocalAddress,
|
|
||||||
tcpConnectionLocalPort,
|
|
||||||
tcpConnectionRemAddressType,
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tcpConnectionRemAddress,
|
|
||||||
tcpConnectionRemPort }
|
|
||||||
::= { tcpConnectionTable 1 }
|
|
||||||
|
|
||||||
TcpConnectionEntry ::= SEQUENCE {
|
|
||||||
tcpConnectionLocalAddressType InetAddressType,
|
|
||||||
tcpConnectionLocalAddress InetAddress,
|
|
||||||
tcpConnectionLocalPort InetPortNumber,
|
|
||||||
tcpConnectionRemAddressType InetAddressType,
|
|
||||||
tcpConnectionRemAddress InetAddress,
|
|
||||||
tcpConnectionRemPort InetPortNumber,
|
|
||||||
tcpConnectionState INTEGER,
|
|
||||||
tcpConnectionProcess Unsigned32
|
|
||||||
}
|
|
||||||
|
|
||||||
tcpConnectionLocalAddressType OBJECT-TYPE
|
|
||||||
SYNTAX InetAddressType
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The address type of tcpConnectionLocalAddress."
|
|
||||||
::= { tcpConnectionEntry 1 }
|
|
||||||
|
|
||||||
tcpConnectionLocalAddress OBJECT-TYPE
|
|
||||||
SYNTAX InetAddress
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The local IP address for this TCP connection. The type
|
|
||||||
of this address is determined by the value of
|
|
||||||
tcpConnectionLocalAddressType.
|
|
||||||
|
|
||||||
As this object is used in the index for the
|
|
||||||
tcpConnectionTable, implementors should be
|
|
||||||
careful not to create entries that would result in OIDs
|
|
||||||
with more than 128 subidentifiers; otherwise the information
|
|
||||||
cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3."
|
|
||||||
::= { tcpConnectionEntry 2 }
|
|
||||||
|
|
||||||
tcpConnectionLocalPort OBJECT-TYPE
|
|
||||||
SYNTAX InetPortNumber
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The local port number for this TCP connection."
|
|
||||||
::= { tcpConnectionEntry 3 }
|
|
||||||
|
|
||||||
tcpConnectionRemAddressType OBJECT-TYPE
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SYNTAX InetAddressType
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The address type of tcpConnectionRemAddress."
|
|
||||||
::= { tcpConnectionEntry 4 }
|
|
||||||
|
|
||||||
tcpConnectionRemAddress OBJECT-TYPE
|
|
||||||
SYNTAX InetAddress
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The remote IP address for this TCP connection. The type
|
|
||||||
of this address is determined by the value of
|
|
||||||
tcpConnectionRemAddressType.
|
|
||||||
|
|
||||||
As this object is used in the index for the
|
|
||||||
tcpConnectionTable, implementors should be
|
|
||||||
careful not to create entries that would result in OIDs
|
|
||||||
with more than 128 subidentifiers; otherwise the information
|
|
||||||
cannot be accessed by using SNMPv1, SNMPv2c, or SNMPv3."
|
|
||||||
::= { tcpConnectionEntry 5 }
|
|
||||||
|
|
||||||
tcpConnectionRemPort OBJECT-TYPE
|
|
||||||
SYNTAX InetPortNumber
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The remote port number for this TCP connection."
|
|
||||||
::= { tcpConnectionEntry 6 }
|
|
||||||
|
|
||||||
tcpConnectionState OBJECT-TYPE
|
|
||||||
SYNTAX INTEGER {
|
|
||||||
closed(1),
|
|
||||||
listen(2),
|
|
||||||
synSent(3),
|
|
||||||
synReceived(4),
|
|
||||||
established(5),
|
|
||||||
finWait1(6),
|
|
||||||
finWait2(7),
|
|
||||||
closeWait(8),
|
|
||||||
lastAck(9),
|
|
||||||
closing(10),
|
|
||||||
timeWait(11),
|
|
||||||
deleteTCB(12)
|
|
||||||
}
|
|
||||||
MAX-ACCESS read-write
|
|
||||||
STATUS current
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
"The state of this TCP connection.
|
|
||||||
|
|
||||||
The value listen(2) is included only for parallelism to the
|
|
||||||
old tcpConnTable and should not be used. A connection in
|
|
||||||
LISTEN state should be present in the tcpListenerTable.
|
|
||||||
|
|
||||||
The only value that may be set by a management station is
|
|
||||||
deleteTCB(12). Accordingly, it is appropriate for an agent
|
|
||||||
to return a `badValue' response if a management station
|
|
||||||
attempts to set this object to any other value.
|
|
||||||
|
|
||||||
If a management station sets this object to the value
|
|
||||||
deleteTCB(12), then the TCB (as defined in [RFC793]) of
|
|
||||||
the corresponding connection on the managed node is
|
|
||||||
deleted, resulting in immediate termination of the
|
|
||||||
connection.
|
|
||||||
|
|
||||||
As an implementation-specific option, a RST segment may be
|
|
||||||
sent from the managed node to the other TCP endpoint (note,
|
|
||||||
however, that RST segments are not sent reliably)."
|
|
||||||
::= { tcpConnectionEntry 7 }
|
|
||||||
|
|
||||||
tcpConnectionProcess OBJECT-TYPE
|
|
||||||
SYNTAX Unsigned32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The system's process ID for the process associated with
|
|
||||||
this connection, or zero if there is no such process. This
|
|
||||||
value is expected to be the same as HOST-RESOURCES-MIB::
|
|
||||||
hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some
|
|
||||||
row in the appropriate tables."
|
|
||||||
::= { tcpConnectionEntry 8 }
|
|
||||||
|
|
||||||
-- The TCP Listener table
|
|
||||||
|
|
||||||
tcpListenerTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF TcpListenerEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A table containing information about TCP listeners. A
|
|
||||||
listening application can be represented in three
|
|
||||||
possible ways:
|
|
||||||
|
|
||||||
1. An application that is willing to accept both IPv4 and
|
|
||||||
IPv6 datagrams is represented by
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
a tcpListenerLocalAddressType of unknown (0) and
|
|
||||||
a tcpListenerLocalAddress of ''h (a zero-length
|
|
||||||
octet-string).
|
|
||||||
|
|
||||||
2. An application that is willing to accept only IPv4 or
|
|
||||||
IPv6 datagrams is represented by a
|
|
||||||
tcpListenerLocalAddressType of the appropriate address
|
|
||||||
type and a tcpListenerLocalAddress of '0.0.0.0' or '::'
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
3. An application that is listening for data destined
|
|
||||||
only to a specific IP address, but from any remote
|
|
||||||
system, is represented by a tcpListenerLocalAddressType
|
|
||||||
of an appropriate address type, with
|
|
||||||
tcpListenerLocalAddress as the specific local address.
|
|
||||||
|
|
||||||
NOTE: The address type in this table represents the
|
|
||||||
address type used for the communication, irrespective
|
|
||||||
of the higher-layer abstraction. For example, an
|
|
||||||
application using IPv6 'sockets' to communicate via
|
|
||||||
IPv4 between ::ffff:10.0.0.1 and ::ffff:10.0.0.2 would
|
|
||||||
use InetAddressType ipv4(1))."
|
|
||||||
::= { tcp 20 }
|
|
||||||
|
|
||||||
tcpListenerEntry OBJECT-TYPE
|
|
||||||
SYNTAX TcpListenerEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A conceptual row of the tcpListenerTable containing
|
|
||||||
information about a particular TCP listener."
|
|
||||||
INDEX { tcpListenerLocalAddressType,
|
|
||||||
tcpListenerLocalAddress,
|
|
||||||
tcpListenerLocalPort }
|
|
||||||
::= { tcpListenerTable 1 }
|
|
||||||
|
|
||||||
TcpListenerEntry ::= SEQUENCE {
|
|
||||||
tcpListenerLocalAddressType InetAddressType,
|
|
||||||
tcpListenerLocalAddress InetAddress,
|
|
||||||
tcpListenerLocalPort InetPortNumber,
|
|
||||||
tcpListenerProcess Unsigned32
|
|
||||||
}
|
|
||||||
|
|
||||||
tcpListenerLocalAddressType OBJECT-TYPE
|
|
||||||
SYNTAX InetAddressType
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"The address type of tcpListenerLocalAddress. The value
|
|
||||||
should be unknown (0) if connection initiations to all
|
|
||||||
local IP addresses are accepted."
|
|
||||||
::= { tcpListenerEntry 1 }
|
|
||||||
|
|
||||||
tcpListenerLocalAddress OBJECT-TYPE
|
|
||||||
SYNTAX InetAddress
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The local IP address for this TCP connection.
|
|
||||||
|
|
||||||
The value of this object can be represented in three
|
|
||||||
possible ways, depending on the characteristics of the
|
|
||||||
listening application:
|
|
||||||
|
|
||||||
1. For an application willing to accept both IPv4 and
|
|
||||||
IPv6 datagrams, the value of this object must be
|
|
||||||
''h (a zero-length octet-string), with the value
|
|
||||||
of the corresponding tcpListenerLocalAddressType
|
|
||||||
object being unknown (0).
|
|
||||||
|
|
||||||
2. For an application willing to accept only IPv4 or
|
|
||||||
IPv6 datagrams, the value of this object must be
|
|
||||||
'0.0.0.0' or '::' respectively, with
|
|
||||||
tcpListenerLocalAddressType representing the
|
|
||||||
appropriate address type.
|
|
||||||
|
|
||||||
3. For an application which is listening for data
|
|
||||||
destined only to a specific IP address, the value
|
|
||||||
of this object is the specific local address, with
|
|
||||||
tcpListenerLocalAddressType representing the
|
|
||||||
appropriate address type.
|
|
||||||
|
|
||||||
As this object is used in the index for the
|
|
||||||
tcpListenerTable, implementors should be
|
|
||||||
careful not to create entries that would result in OIDs
|
|
||||||
with more than 128 subidentifiers; otherwise the information
|
|
||||||
cannot be accessed, using SNMPv1, SNMPv2c, or SNMPv3."
|
|
||||||
::= { tcpListenerEntry 2 }
|
|
||||||
|
|
||||||
tcpListenerLocalPort OBJECT-TYPE
|
|
||||||
SYNTAX InetPortNumber
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The local port number for this TCP connection."
|
|
||||||
::= { tcpListenerEntry 3 }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tcpListenerProcess OBJECT-TYPE
|
|
||||||
SYNTAX Unsigned32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The system's process ID for the process associated with
|
|
||||||
this listener, or zero if there is no such process. This
|
|
||||||
value is expected to be the same as HOST-RESOURCES-MIB::
|
|
||||||
hrSWRunIndex or SYSAPPL-MIB::sysApplElmtRunIndex for some
|
|
||||||
row in the appropriate tables."
|
|
||||||
::= { tcpListenerEntry 4 }
|
|
||||||
|
|
||||||
|
|
||||||
-- The deprecated TCP Connection table
|
|
||||||
|
|
||||||
tcpConnTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF TcpConnEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"A table containing information about existing IPv4-specific
|
|
||||||
TCP connections or listeners. This table has been
|
|
||||||
deprecated in favor of the version neutral
|
|
||||||
tcpConnectionTable."
|
|
||||||
::= { tcp 13 }
|
|
||||||
|
|
||||||
tcpConnEntry OBJECT-TYPE
|
|
||||||
SYNTAX TcpConnEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"A conceptual row of the tcpConnTable containing information
|
|
||||||
about a particular current IPv4 TCP connection. Each row
|
|
||||||
of this table is transient in that it ceases to exist when
|
|
||||||
(or soon after) the connection makes the transition to the
|
|
||||||
CLOSED state."
|
|
||||||
INDEX { tcpConnLocalAddress,
|
|
||||||
tcpConnLocalPort,
|
|
||||||
tcpConnRemAddress,
|
|
||||||
tcpConnRemPort }
|
|
||||||
::= { tcpConnTable 1 }
|
|
||||||
|
|
||||||
TcpConnEntry ::= SEQUENCE {
|
|
||||||
tcpConnState INTEGER,
|
|
||||||
tcpConnLocalAddress IpAddress,
|
|
||||||
tcpConnLocalPort Integer32,
|
|
||||||
tcpConnRemAddress IpAddress,
|
|
||||||
tcpConnRemPort Integer32
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
tcpConnState OBJECT-TYPE
|
|
||||||
SYNTAX INTEGER {
|
|
||||||
closed(1),
|
|
||||||
listen(2),
|
|
||||||
synSent(3),
|
|
||||||
synReceived(4),
|
|
||||||
established(5),
|
|
||||||
finWait1(6),
|
|
||||||
finWait2(7),
|
|
||||||
closeWait(8),
|
|
||||||
lastAck(9),
|
|
||||||
closing(10),
|
|
||||||
timeWait(11),
|
|
||||||
deleteTCB(12)
|
|
||||||
}
|
|
||||||
MAX-ACCESS read-write
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The state of this TCP connection.
|
|
||||||
|
|
||||||
The only value that may be set by a management station is
|
|
||||||
deleteTCB(12). Accordingly, it is appropriate for an agent
|
|
||||||
to return a `badValue' response if a management station
|
|
||||||
attempts to set this object to any other value.
|
|
||||||
|
|
||||||
If a management station sets this object to the value
|
|
||||||
deleteTCB(12), then the TCB (as defined in [RFC793]) of
|
|
||||||
the corresponding connection on the managed node is
|
|
||||||
deleted, resulting in immediate termination of the
|
|
||||||
connection.
|
|
||||||
|
|
||||||
As an implementation-specific option, a RST segment may be
|
|
||||||
sent from the managed node to the other TCP endpoint (note,
|
|
||||||
however, that RST segments are not sent reliably)."
|
|
||||||
::= { tcpConnEntry 1 }
|
|
||||||
|
|
||||||
tcpConnLocalAddress OBJECT-TYPE
|
|
||||||
SYNTAX IpAddress
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The local IP address for this TCP connection. In the case
|
|
||||||
of a connection in the listen state willing to
|
|
||||||
accept connections for any IP interface associated with the
|
|
||||||
node, the value 0.0.0.0 is used."
|
|
||||||
::= { tcpConnEntry 2 }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tcpConnLocalPort OBJECT-TYPE
|
|
||||||
SYNTAX Integer32 (0..65535)
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The local port number for this TCP connection."
|
|
||||||
::= { tcpConnEntry 3 }
|
|
||||||
|
|
||||||
tcpConnRemAddress OBJECT-TYPE
|
|
||||||
SYNTAX IpAddress
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The remote IP address for this TCP connection."
|
|
||||||
::= { tcpConnEntry 4 }
|
|
||||||
|
|
||||||
tcpConnRemPort OBJECT-TYPE
|
|
||||||
SYNTAX Integer32 (0..65535)
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The remote port number for this TCP connection."
|
|
||||||
::= { tcpConnEntry 5 }
|
|
||||||
|
|
||||||
-- conformance information
|
|
||||||
|
|
||||||
tcpMIBConformance OBJECT IDENTIFIER ::= { tcpMIB 2 }
|
|
||||||
|
|
||||||
tcpMIBCompliances OBJECT IDENTIFIER ::= { tcpMIBConformance 1 }
|
|
||||||
tcpMIBGroups OBJECT IDENTIFIER ::= { tcpMIBConformance 2 }
|
|
||||||
|
|
||||||
-- compliance statements
|
|
||||||
|
|
||||||
tcpMIBCompliance2 MODULE-COMPLIANCE
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The compliance statement for systems that implement TCP.
|
|
||||||
|
|
||||||
A number of INDEX objects cannot be
|
|
||||||
represented in the form of OBJECT clauses in SMIv2 but
|
|
||||||
have the following compliance requirements,
|
|
||||||
expressed in OBJECT clause form in this description
|
|
||||||
clause:
|
|
||||||
|
|
||||||
-- OBJECT tcpConnectionLocalAddressType
|
|
||||||
-- SYNTAX InetAddressType { ipv4(1), ipv6(2) }
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- This MIB requires support for only global IPv4
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- and IPv6 address types.
|
|
||||||
--
|
|
||||||
-- OBJECT tcpConnectionRemAddressType
|
|
||||||
-- SYNTAX InetAddressType { ipv4(1), ipv6(2) }
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- This MIB requires support for only global IPv4
|
|
||||||
-- and IPv6 address types.
|
|
||||||
--
|
|
||||||
-- OBJECT tcpListenerLocalAddressType
|
|
||||||
-- SYNTAX InetAddressType { unknown(0), ipv4(1),
|
|
||||||
-- ipv6(2) }
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- This MIB requires support for only global IPv4
|
|
||||||
-- and IPv6 address types. The type unknown also
|
|
||||||
-- needs to be supported to identify a special
|
|
||||||
-- case in the listener table: a listen using
|
|
||||||
-- both IPv4 and IPv6 addresses on the device.
|
|
||||||
--
|
|
||||||
"
|
|
||||||
MODULE -- this module
|
|
||||||
MANDATORY-GROUPS { tcpBaseGroup, tcpConnectionGroup,
|
|
||||||
tcpListenerGroup }
|
|
||||||
GROUP tcpHCGroup
|
|
||||||
DESCRIPTION
|
|
||||||
"This group is mandatory for systems that are capable
|
|
||||||
of receiving or transmitting more than 1 million TCP
|
|
||||||
segments per second. 1 million segments per second will
|
|
||||||
cause a Counter32 to wrap in just over an hour."
|
|
||||||
OBJECT tcpConnectionState
|
|
||||||
SYNTAX INTEGER { closed(1), listen(2), synSent(3),
|
|
||||||
synReceived(4), established(5),
|
|
||||||
finWait1(6), finWait2(7), closeWait(8),
|
|
||||||
lastAck(9), closing(10), timeWait(11) }
|
|
||||||
MIN-ACCESS read-only
|
|
||||||
DESCRIPTION
|
|
||||||
"Write access is not required, nor is support for the value
|
|
||||||
deleteTCB (12)."
|
|
||||||
::= { tcpMIBCompliances 2 }
|
|
||||||
|
|
||||||
tcpMIBCompliance MODULE-COMPLIANCE
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The compliance statement for IPv4-only systems that
|
|
||||||
implement TCP. In order to be IP version independent, this
|
|
||||||
compliance statement is deprecated in favor of
|
|
||||||
tcpMIBCompliance2. However, agents are still encouraged
|
|
||||||
to implement these objects in order to interoperate with
|
|
||||||
the deployed base of managers."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MODULE -- this module
|
|
||||||
MANDATORY-GROUPS { tcpGroup }
|
|
||||||
OBJECT tcpConnState
|
|
||||||
MIN-ACCESS read-only
|
|
||||||
DESCRIPTION
|
|
||||||
"Write access is not required."
|
|
||||||
::= { tcpMIBCompliances 1 }
|
|
||||||
|
|
||||||
|
|
||||||
-- units of conformance
|
|
||||||
|
|
||||||
tcpGroup OBJECT-GROUP
|
|
||||||
OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax,
|
|
||||||
tcpMaxConn, tcpActiveOpens,
|
|
||||||
tcpPassiveOpens, tcpAttemptFails,
|
|
||||||
tcpEstabResets, tcpCurrEstab, tcpInSegs,
|
|
||||||
tcpOutSegs, tcpRetransSegs, tcpConnState,
|
|
||||||
tcpConnLocalAddress, tcpConnLocalPort,
|
|
||||||
tcpConnRemAddress, tcpConnRemPort,
|
|
||||||
tcpInErrs, tcpOutRsts }
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The tcp group of objects providing for management of TCP
|
|
||||||
entities."
|
|
||||||
::= { tcpMIBGroups 1 }
|
|
||||||
|
|
||||||
tcpBaseGroup OBJECT-GROUP
|
|
||||||
OBJECTS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax,
|
|
||||||
tcpMaxConn, tcpActiveOpens,
|
|
||||||
tcpPassiveOpens, tcpAttemptFails,
|
|
||||||
tcpEstabResets, tcpCurrEstab, tcpInSegs,
|
|
||||||
tcpOutSegs, tcpRetransSegs,
|
|
||||||
tcpInErrs, tcpOutRsts }
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The group of counters common to TCP entities."
|
|
||||||
::= { tcpMIBGroups 2 }
|
|
||||||
|
|
||||||
tcpConnectionGroup OBJECT-GROUP
|
|
||||||
OBJECTS { tcpConnectionState, tcpConnectionProcess }
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The group provides general information about TCP
|
|
||||||
connections."
|
|
||||||
::= { tcpMIBGroups 3 }
|
|
||||||
|
|
||||||
tcpListenerGroup OBJECT-GROUP
|
|
||||||
OBJECTS { tcpListenerProcess }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"This group has objects providing general information about
|
|
||||||
TCP listeners."
|
|
||||||
::= { tcpMIBGroups 4 }
|
|
||||||
|
|
||||||
tcpHCGroup OBJECT-GROUP
|
|
||||||
OBJECTS { tcpHCInSegs, tcpHCOutSegs }
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The group of objects providing for counters of high speed
|
|
||||||
TCP implementations."
|
|
||||||
::= { tcpMIBGroups 5 }
|
|
||||||
|
|
||||||
END
|
|
||||||
@ -1,579 +0,0 @@
|
|||||||
UDP-MIB DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
IMPORTS
|
|
||||||
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, Counter64,
|
|
||||||
Unsigned32, IpAddress, mib-2 FROM SNMPv2-SMI
|
|
||||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
|
||||||
InetAddress, InetAddressType,
|
|
||||||
InetPortNumber FROM INET-ADDRESS-MIB;
|
|
||||||
|
|
||||||
udpMIB MODULE-IDENTITY
|
|
||||||
LAST-UPDATED "200505200000Z" -- May 20, 2005
|
|
||||||
ORGANIZATION
|
|
||||||
"IETF IPv6 Working Group
|
|
||||||
http://www.ietf.org/html.charters/ipv6-charter.html"
|
|
||||||
CONTACT-INFO
|
|
||||||
"Bill Fenner (editor)
|
|
||||||
|
|
||||||
AT&T Labs -- Research
|
|
||||||
75 Willow Rd.
|
|
||||||
Menlo Park, CA 94025
|
|
||||||
|
|
||||||
Phone: +1 650 330-7893
|
|
||||||
Email: <fenner@research.att.com>
|
|
||||||
|
|
||||||
John Flick (editor)
|
|
||||||
|
|
||||||
Hewlett-Packard Company
|
|
||||||
8000 Foothills Blvd. M/S 5557
|
|
||||||
Roseville, CA 95747
|
|
||||||
|
|
||||||
Phone: +1 916 785 4018
|
|
||||||
Email: <john.flick@hp.com>
|
|
||||||
|
|
||||||
Send comments to <ipv6@ietf.org>"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
"The MIB module for managing UDP implementations.
|
|
||||||
Copyright (C) The Internet Society (2005). This
|
|
||||||
version of this MIB module is part of RFC 4113;
|
|
||||||
see the RFC itself for full legal notices."
|
|
||||||
REVISION "200505200000Z" -- May 20, 2005
|
|
||||||
DESCRIPTION
|
|
||||||
"IP version neutral revision, incorporating the
|
|
||||||
following revisions:
|
|
||||||
|
|
||||||
- Added udpHCInDatagrams and udpHCOutDatagrams in order
|
|
||||||
to provide high-capacity counters for fast networks.
|
|
||||||
- Added text to the descriptions of all counter objects
|
|
||||||
to indicate how discontinuities are detected.
|
|
||||||
- Deprecated the IPv4-specific udpTable and replaced it
|
|
||||||
with the version neutral udpEndpointTable. This
|
|
||||||
table includes support for connected UDP endpoints
|
|
||||||
and support for identification of the operating
|
|
||||||
system process associated with a UDP endpoint.
|
|
||||||
- Deprecated the udpGroup and replaced it with object
|
|
||||||
groups representing the current set of objects.
|
|
||||||
- Deprecated udpMIBCompliance and replaced it with
|
|
||||||
udpMIBCompliance2, which includes the compliance
|
|
||||||
information for the new object groups.
|
|
||||||
|
|
||||||
This version published as RFC 4113."
|
|
||||||
REVISION "199411010000Z" -- November 1, 1994
|
|
||||||
DESCRIPTION
|
|
||||||
"Initial SMIv2 version, published as RFC 2013."
|
|
||||||
REVISION "199103310000Z" -- March 31, 1991
|
|
||||||
DESCRIPTION
|
|
||||||
"The initial revision of this MIB module was part of
|
|
||||||
MIB-II, published as RFC 1213."
|
|
||||||
::= { mib-2 50 }
|
|
||||||
|
|
||||||
-- the UDP group
|
|
||||||
|
|
||||||
udp OBJECT IDENTIFIER ::= { mib-2 7 }
|
|
||||||
|
|
||||||
udpInDatagrams OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of UDP datagrams delivered to UDP
|
|
||||||
users.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter can occur
|
|
||||||
at re-initialization of the management system, and at
|
|
||||||
other times as indicated by discontinuities in the
|
|
||||||
value of sysUpTime."
|
|
||||||
::= { udp 1 }
|
|
||||||
|
|
||||||
udpNoPorts OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of received UDP datagrams for which
|
|
||||||
there was no application at the destination port.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter can occur
|
|
||||||
at re-initialization of the management system, and at
|
|
||||||
other times as indicated by discontinuities in the
|
|
||||||
value of sysUpTime."
|
|
||||||
::= { udp 2 }
|
|
||||||
|
|
||||||
udpInErrors OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The number of received UDP datagrams that could not be
|
|
||||||
delivered for reasons other than the lack of an
|
|
||||||
application at the destination port.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter can occur
|
|
||||||
at re-initialization of the management system, and at
|
|
||||||
other times as indicated by discontinuities in the
|
|
||||||
value of sysUpTime."
|
|
||||||
::= { udp 3 }
|
|
||||||
|
|
||||||
udpOutDatagrams OBJECT-TYPE
|
|
||||||
SYNTAX Counter32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of UDP datagrams sent from this
|
|
||||||
entity.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter can occur
|
|
||||||
at re-initialization of the management system, and at
|
|
||||||
other times as indicated by discontinuities in the
|
|
||||||
value of sysUpTime."
|
|
||||||
::= { udp 4 }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
udpHCInDatagrams OBJECT-TYPE
|
|
||||||
SYNTAX Counter64
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of UDP datagrams delivered to UDP
|
|
||||||
users, for devices that can receive more than 1
|
|
||||||
million UDP datagrams per second.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter can occur
|
|
||||||
at re-initialization of the management system, and at
|
|
||||||
other times as indicated by discontinuities in the
|
|
||||||
value of sysUpTime."
|
|
||||||
::= { udp 8 }
|
|
||||||
|
|
||||||
udpHCOutDatagrams OBJECT-TYPE
|
|
||||||
SYNTAX Counter64
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The total number of UDP datagrams sent from this
|
|
||||||
entity, for devices that can transmit more than 1
|
|
||||||
million UDP datagrams per second.
|
|
||||||
|
|
||||||
Discontinuities in the value of this counter can occur
|
|
||||||
at re-initialization of the management system, and at
|
|
||||||
other times as indicated by discontinuities in the
|
|
||||||
value of sysUpTime."
|
|
||||||
::= { udp 9 }
|
|
||||||
|
|
||||||
--
|
|
||||||
-- { udp 6 } was defined as the ipv6UdpTable in RFC2454's
|
|
||||||
-- IPV6-UDP-MIB. This RFC obsoletes RFC 2454, so { udp 6 } is
|
|
||||||
-- obsoleted.
|
|
||||||
--
|
|
||||||
|
|
||||||
-- The UDP "Endpoint" table.
|
|
||||||
|
|
||||||
udpEndpointTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF UdpEndpointEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"A table containing information about this entity's UDP
|
|
||||||
endpoints on which a local application is currently
|
|
||||||
accepting or sending datagrams.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The address type in this table represents the address
|
|
||||||
type used for the communication, irrespective of the
|
|
||||||
higher-layer abstraction. For example, an application
|
|
||||||
using IPv6 'sockets' to communicate via IPv4 between
|
|
||||||
::ffff:10.0.0.1 and ::ffff:10.0.0.2 would use
|
|
||||||
InetAddressType ipv4(1).
|
|
||||||
|
|
||||||
Unlike the udpTable in RFC 2013, this table also allows
|
|
||||||
the representation of an application that completely
|
|
||||||
specifies both local and remote addresses and ports. A
|
|
||||||
listening application is represented in three possible
|
|
||||||
ways:
|
|
||||||
|
|
||||||
1) An application that is willing to accept both IPv4
|
|
||||||
and IPv6 datagrams is represented by a
|
|
||||||
udpEndpointLocalAddressType of unknown(0) and a
|
|
||||||
udpEndpointLocalAddress of ''h (a zero-length
|
|
||||||
octet-string).
|
|
||||||
|
|
||||||
2) An application that is willing to accept only IPv4
|
|
||||||
or only IPv6 datagrams is represented by a
|
|
||||||
udpEndpointLocalAddressType of the appropriate
|
|
||||||
address type and a udpEndpointLocalAddress of
|
|
||||||
'0.0.0.0' or '::' respectively.
|
|
||||||
|
|
||||||
3) An application that is listening for datagrams only
|
|
||||||
for a specific IP address but from any remote
|
|
||||||
system is represented by a
|
|
||||||
udpEndpointLocalAddressType of the appropriate
|
|
||||||
address type, with udpEndpointLocalAddress
|
|
||||||
specifying the local address.
|
|
||||||
|
|
||||||
In all cases where the remote is a wildcard, the
|
|
||||||
udpEndpointRemoteAddressType is unknown(0), the
|
|
||||||
udpEndpointRemoteAddress is ''h (a zero-length
|
|
||||||
octet-string), and the udpEndpointRemotePort is 0.
|
|
||||||
|
|
||||||
If the operating system is demultiplexing UDP packets
|
|
||||||
by remote address and port, or if the application has
|
|
||||||
'connected' the socket specifying a default remote
|
|
||||||
address and port, the udpEndpointRemote* values should
|
|
||||||
be used to reflect this."
|
|
||||||
::= { udp 7 }
|
|
||||||
|
|
||||||
udpEndpointEntry OBJECT-TYPE
|
|
||||||
SYNTAX UdpEndpointEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
"Information about a particular current UDP endpoint.
|
|
||||||
|
|
||||||
Implementers need to be aware that if the total number
|
|
||||||
of elements (octets or sub-identifiers) in
|
|
||||||
udpEndpointLocalAddress and udpEndpointRemoteAddress
|
|
||||||
exceeds 111, then OIDs of column instances in this table
|
|
||||||
will have more than 128 sub-identifiers and cannot be
|
|
||||||
accessed using SNMPv1, SNMPv2c, or SNMPv3."
|
|
||||||
INDEX { udpEndpointLocalAddressType,
|
|
||||||
udpEndpointLocalAddress,
|
|
||||||
udpEndpointLocalPort,
|
|
||||||
udpEndpointRemoteAddressType,
|
|
||||||
udpEndpointRemoteAddress,
|
|
||||||
udpEndpointRemotePort,
|
|
||||||
udpEndpointInstance }
|
|
||||||
::= { udpEndpointTable 1 }
|
|
||||||
|
|
||||||
UdpEndpointEntry ::= SEQUENCE {
|
|
||||||
udpEndpointLocalAddressType InetAddressType,
|
|
||||||
udpEndpointLocalAddress InetAddress,
|
|
||||||
udpEndpointLocalPort InetPortNumber,
|
|
||||||
udpEndpointRemoteAddressType InetAddressType,
|
|
||||||
udpEndpointRemoteAddress InetAddress,
|
|
||||||
udpEndpointRemotePort InetPortNumber,
|
|
||||||
udpEndpointInstance Unsigned32,
|
|
||||||
udpEndpointProcess Unsigned32
|
|
||||||
}
|
|
||||||
|
|
||||||
udpEndpointLocalAddressType OBJECT-TYPE
|
|
||||||
SYNTAX InetAddressType
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The address type of udpEndpointLocalAddress. Only
|
|
||||||
IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or
|
|
||||||
unknown(0) if datagrams for all local IP addresses are
|
|
||||||
accepted."
|
|
||||||
::= { udpEndpointEntry 1 }
|
|
||||||
|
|
||||||
udpEndpointLocalAddress OBJECT-TYPE
|
|
||||||
SYNTAX InetAddress
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The local IP address for this UDP endpoint.
|
|
||||||
|
|
||||||
The value of this object can be represented in three
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
possible ways, depending on the characteristics of the
|
|
||||||
listening application:
|
|
||||||
|
|
||||||
1. For an application that is willing to accept both
|
|
||||||
IPv4 and IPv6 datagrams, the value of this object
|
|
||||||
must be ''h (a zero-length octet-string), with
|
|
||||||
the value of the corresponding instance of the
|
|
||||||
udpEndpointLocalAddressType object being unknown(0).
|
|
||||||
|
|
||||||
2. For an application that is willing to accept only IPv4
|
|
||||||
or only IPv6 datagrams, the value of this object
|
|
||||||
must be '0.0.0.0' or '::', respectively, while the
|
|
||||||
corresponding instance of the
|
|
||||||
udpEndpointLocalAddressType object represents the
|
|
||||||
appropriate address type.
|
|
||||||
|
|
||||||
3. For an application that is listening for data
|
|
||||||
destined only to a specific IP address, the value
|
|
||||||
of this object is the specific IP address for which
|
|
||||||
this node is receiving packets, with the
|
|
||||||
corresponding instance of the
|
|
||||||
udpEndpointLocalAddressType object representing the
|
|
||||||
appropriate address type.
|
|
||||||
|
|
||||||
As this object is used in the index for the
|
|
||||||
udpEndpointTable, implementors of this table should be
|
|
||||||
careful not to create entries that would result in OIDs
|
|
||||||
with more than 128 subidentifiers; else the information
|
|
||||||
cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3."
|
|
||||||
::= { udpEndpointEntry 2 }
|
|
||||||
|
|
||||||
udpEndpointLocalPort OBJECT-TYPE
|
|
||||||
SYNTAX InetPortNumber
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The local port number for this UDP endpoint."
|
|
||||||
::= { udpEndpointEntry 3 }
|
|
||||||
|
|
||||||
udpEndpointRemoteAddressType OBJECT-TYPE
|
|
||||||
SYNTAX InetAddressType
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The address type of udpEndpointRemoteAddress. Only
|
|
||||||
IPv4, IPv4z, IPv6, and IPv6z addresses are expected, or
|
|
||||||
unknown(0) if datagrams for all remote IP addresses are
|
|
||||||
accepted. Also, note that some combinations of
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
udpEndpointLocalAdressType and
|
|
||||||
udpEndpointRemoteAddressType are not supported. In
|
|
||||||
particular, if the value of this object is not
|
|
||||||
unknown(0), it is expected to always refer to the
|
|
||||||
same IP version as udpEndpointLocalAddressType."
|
|
||||||
::= { udpEndpointEntry 4 }
|
|
||||||
|
|
||||||
udpEndpointRemoteAddress OBJECT-TYPE
|
|
||||||
SYNTAX InetAddress
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The remote IP address for this UDP endpoint. If
|
|
||||||
datagrams from any remote system are to be accepted,
|
|
||||||
this value is ''h (a zero-length octet-string).
|
|
||||||
Otherwise, it has the type described by
|
|
||||||
udpEndpointRemoteAddressType and is the address of the
|
|
||||||
remote system from which datagrams are to be accepted
|
|
||||||
(or to which all datagrams will be sent).
|
|
||||||
|
|
||||||
As this object is used in the index for the
|
|
||||||
udpEndpointTable, implementors of this table should be
|
|
||||||
careful not to create entries that would result in OIDs
|
|
||||||
with more than 128 subidentifiers; else the information
|
|
||||||
cannot be accessed using SNMPv1, SNMPv2c, or SNMPv3."
|
|
||||||
::= { udpEndpointEntry 5 }
|
|
||||||
|
|
||||||
udpEndpointRemotePort OBJECT-TYPE
|
|
||||||
SYNTAX InetPortNumber
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The remote port number for this UDP endpoint. If
|
|
||||||
datagrams from any remote system are to be accepted,
|
|
||||||
this value is zero."
|
|
||||||
::= { udpEndpointEntry 6 }
|
|
||||||
|
|
||||||
udpEndpointInstance OBJECT-TYPE
|
|
||||||
SYNTAX Unsigned32 (1..'ffffffff'h)
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The instance of this tuple. This object is used to
|
|
||||||
distinguish among multiple processes 'connected' to
|
|
||||||
the same UDP endpoint. For example, on a system
|
|
||||||
implementing the BSD sockets interface, this would be
|
|
||||||
used to support the SO_REUSEADDR and SO_REUSEPORT
|
|
||||||
socket options."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::= { udpEndpointEntry 7 }
|
|
||||||
|
|
||||||
udpEndpointProcess OBJECT-TYPE
|
|
||||||
SYNTAX Unsigned32
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The system's process ID for the process associated with
|
|
||||||
this endpoint, or zero if there is no such process.
|
|
||||||
This value is expected to be the same as
|
|
||||||
HOST-RESOURCES-MIB::hrSWRunIndex or SYSAPPL-MIB::
|
|
||||||
sysApplElmtRunIndex for some row in the appropriate
|
|
||||||
tables."
|
|
||||||
::= { udpEndpointEntry 8 }
|
|
||||||
|
|
||||||
-- The deprecated UDP Listener table
|
|
||||||
|
|
||||||
-- The deprecated UDP listener table only contains information
|
|
||||||
-- about this entity's IPv4 UDP end-points on which a local
|
|
||||||
-- application is currently accepting datagrams. It does not
|
|
||||||
-- provide more detailed connection information, or information
|
|
||||||
-- about IPv6 endpoints.
|
|
||||||
|
|
||||||
udpTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF UdpEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"A table containing IPv4-specific UDP listener
|
|
||||||
information. It contains information about all local
|
|
||||||
IPv4 UDP end-points on which an application is
|
|
||||||
currently accepting datagrams. This table has been
|
|
||||||
deprecated in favor of the version neutral
|
|
||||||
udpEndpointTable."
|
|
||||||
::= { udp 5 }
|
|
||||||
|
|
||||||
udpEntry OBJECT-TYPE
|
|
||||||
SYNTAX UdpEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"Information about a particular current UDP listener."
|
|
||||||
INDEX { udpLocalAddress, udpLocalPort }
|
|
||||||
::= { udpTable 1 }
|
|
||||||
|
|
||||||
UdpEntry ::= SEQUENCE {
|
|
||||||
udpLocalAddress IpAddress,
|
|
||||||
udpLocalPort Integer32
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
udpLocalAddress OBJECT-TYPE
|
|
||||||
SYNTAX IpAddress
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The local IP address for this UDP listener. In the
|
|
||||||
case of a UDP listener that is willing to accept
|
|
||||||
datagrams for any IP interface associated with the
|
|
||||||
node, the value 0.0.0.0 is used."
|
|
||||||
::= { udpEntry 1 }
|
|
||||||
|
|
||||||
udpLocalPort OBJECT-TYPE
|
|
||||||
SYNTAX Integer32 (0..65535)
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The local port number for this UDP listener."
|
|
||||||
::= { udpEntry 2 }
|
|
||||||
|
|
||||||
-- conformance information
|
|
||||||
|
|
||||||
udpMIBConformance OBJECT IDENTIFIER ::= { udpMIB 2 }
|
|
||||||
udpMIBCompliances OBJECT IDENTIFIER ::= { udpMIBConformance 1 }
|
|
||||||
udpMIBGroups OBJECT IDENTIFIER ::= { udpMIBConformance 2 }
|
|
||||||
|
|
||||||
-- compliance statements
|
|
||||||
|
|
||||||
udpMIBCompliance2 MODULE-COMPLIANCE
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The compliance statement for systems that implement
|
|
||||||
UDP.
|
|
||||||
|
|
||||||
There are a number of INDEX objects that cannot be
|
|
||||||
represented in the form of OBJECT clauses in SMIv2, but
|
|
||||||
for which we have the following compliance
|
|
||||||
requirements, expressed in OBJECT clause form in this
|
|
||||||
description clause:
|
|
||||||
|
|
||||||
-- OBJECT udpEndpointLocalAddressType
|
|
||||||
-- SYNTAX InetAddressType { unknown(0), ipv4(1),
|
|
||||||
-- ipv6(2), ipv4z(3),
|
|
||||||
-- ipv6z(4) }
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- Support for dns(5) is not required.
|
|
||||||
-- OBJECT udpEndpointLocalAddress
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- SYNTAX InetAddress (SIZE(0|4|8|16|20))
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- Support is only required for zero-length
|
|
||||||
-- octet-strings, and for scoped and unscoped
|
|
||||||
-- IPv4 and IPv6 addresses.
|
|
||||||
-- OBJECT udpEndpointRemoteAddressType
|
|
||||||
-- SYNTAX InetAddressType { unknown(0), ipv4(1),
|
|
||||||
-- ipv6(2), ipv4z(3),
|
|
||||||
-- ipv6z(4) }
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- Support for dns(5) is not required.
|
|
||||||
-- OBJECT udpEndpointRemoteAddress
|
|
||||||
-- SYNTAX InetAddress (SIZE(0|4|8|16|20))
|
|
||||||
-- DESCRIPTION
|
|
||||||
-- Support is only required for zero-length
|
|
||||||
-- octet-strings, and for scoped and unscoped
|
|
||||||
-- IPv4 and IPv6 addresses.
|
|
||||||
"
|
|
||||||
MODULE -- this module
|
|
||||||
MANDATORY-GROUPS { udpBaseGroup, udpEndpointGroup }
|
|
||||||
GROUP udpHCGroup
|
|
||||||
DESCRIPTION
|
|
||||||
"This group is mandatory for systems that
|
|
||||||
are capable of receiving or transmitting more than
|
|
||||||
1 million UDP datagrams per second. 1 million
|
|
||||||
datagrams per second will cause a Counter32 to
|
|
||||||
wrap in just over an hour."
|
|
||||||
::= { udpMIBCompliances 2 }
|
|
||||||
|
|
||||||
udpMIBCompliance MODULE-COMPLIANCE
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The compliance statement for IPv4-only systems that
|
|
||||||
implement UDP. For IP version independence, this
|
|
||||||
compliance statement is deprecated in favor of
|
|
||||||
udpMIBCompliance2. However, agents are still
|
|
||||||
encouraged to implement these objects in order to
|
|
||||||
interoperate with the deployed base of managers."
|
|
||||||
MODULE -- this module
|
|
||||||
MANDATORY-GROUPS { udpGroup }
|
|
||||||
::= { udpMIBCompliances 1 }
|
|
||||||
|
|
||||||
-- units of conformance
|
|
||||||
|
|
||||||
udpGroup OBJECT-GROUP
|
|
||||||
OBJECTS { udpInDatagrams, udpNoPorts,
|
|
||||||
udpInErrors, udpOutDatagrams,
|
|
||||||
udpLocalAddress, udpLocalPort }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STATUS deprecated
|
|
||||||
DESCRIPTION
|
|
||||||
"The deprecated group of objects providing for
|
|
||||||
management of UDP over IPv4."
|
|
||||||
::= { udpMIBGroups 1 }
|
|
||||||
|
|
||||||
udpBaseGroup OBJECT-GROUP
|
|
||||||
OBJECTS { udpInDatagrams, udpNoPorts, udpInErrors,
|
|
||||||
udpOutDatagrams }
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The group of objects providing for counters of UDP
|
|
||||||
statistics."
|
|
||||||
::= { udpMIBGroups 2 }
|
|
||||||
|
|
||||||
udpHCGroup OBJECT-GROUP
|
|
||||||
OBJECTS { udpHCInDatagrams, udpHCOutDatagrams }
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The group of objects providing for counters of high
|
|
||||||
speed UDP implementations."
|
|
||||||
::= { udpMIBGroups 3 }
|
|
||||||
|
|
||||||
udpEndpointGroup OBJECT-GROUP
|
|
||||||
OBJECTS { udpEndpointProcess }
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The group of objects providing for the IP version
|
|
||||||
independent management of UDP 'endpoints'."
|
|
||||||
::= { udpMIBGroups 4 }
|
|
||||||
|
|
||||||
END
|
|
||||||
@ -1,84 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections;
|
|
||||||
|
|
||||||
namespace Lextm.SharpSnmpLib.Mib
|
|
||||||
{
|
|
||||||
public class DisplayHint
|
|
||||||
{
|
|
||||||
private enum NumType {
|
|
||||||
dec,
|
|
||||||
hex,
|
|
||||||
oct,
|
|
||||||
bin,
|
|
||||||
str
|
|
||||||
}
|
|
||||||
|
|
||||||
private string _str;
|
|
||||||
private NumType _type;
|
|
||||||
private int _decimalPoints = 0;
|
|
||||||
|
|
||||||
public DisplayHint(string str)
|
|
||||||
{
|
|
||||||
_str = str;
|
|
||||||
if (str.StartsWith("d"))
|
|
||||||
{
|
|
||||||
_type = NumType.dec;
|
|
||||||
if (str.StartsWith("d-"))
|
|
||||||
{
|
|
||||||
_decimalPoints = Convert.ToInt32(str.Substring(2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (str.StartsWith("o"))
|
|
||||||
{
|
|
||||||
_type = NumType.oct;
|
|
||||||
}
|
|
||||||
else if (str.StartsWith("h"))
|
|
||||||
{
|
|
||||||
_type = NumType.hex;
|
|
||||||
}
|
|
||||||
else if (str.StartsWith("b"))
|
|
||||||
{
|
|
||||||
_type = NumType.bin;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_type = NumType.str;
|
|
||||||
foreach (char c in str)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return _str;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal object Decode(int i)
|
|
||||||
{
|
|
||||||
switch (_type)
|
|
||||||
{
|
|
||||||
case NumType.dec:
|
|
||||||
if (_decimalPoints == 0)
|
|
||||||
{
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return i / Math.Pow(10.0, _decimalPoints);
|
|
||||||
}
|
|
||||||
case NumType.hex:
|
|
||||||
return System.Convert.ToString(i, 16);
|
|
||||||
case NumType.oct:
|
|
||||||
return System.Convert.ToString(i, 8);
|
|
||||||
case NumType.bin:
|
|
||||||
return System.Convert.ToString(i, 2);
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* Created by SharpDevelop.
|
|
||||||
* User: lextm
|
|
||||||
* Date: 2008/5/31
|
|
||||||
* Time: 13:18
|
|
||||||
*
|
|
||||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Lextm.SharpSnmpLib.Mib.Elements.Entities
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The AGENT-CAPABILITIES construct is used to specify implementation characteristics of an SNMP agent sub-system with respect to object types and events.
|
|
||||||
/// </summary>
|
|
||||||
public sealed class AgentCapabilities : EntityBase
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Creates an <see cref="AgentCapabilities"/> instance.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="module"></param>
|
|
||||||
/// <param name="header"></param>
|
|
||||||
/// <param name="lexer"></param>
|
|
||||||
public AgentCapabilities(IModule module, SymbolList preAssignSymbols, ISymbolEnumerator symbols)
|
|
||||||
: base(module, preAssignSymbols, symbols)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace Lextm.SharpSnmpLib.Mib.Elements.Entities
|
|
||||||
{
|
|
||||||
public abstract class EntityBase: IEntity
|
|
||||||
{
|
|
||||||
private readonly IModule _module;
|
|
||||||
private string _parent;
|
|
||||||
private readonly uint _value;
|
|
||||||
private readonly string _name;
|
|
||||||
|
|
||||||
public EntityBase(IModule module, SymbolList preAssignSymbols, ISymbolEnumerator symbols)
|
|
||||||
{
|
|
||||||
_module = module;
|
|
||||||
_name = preAssignSymbols[0].ToString();
|
|
||||||
|
|
||||||
Lexer.ParseOidValue(symbols, out _parent, out _value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IModule Module
|
|
||||||
{
|
|
||||||
get { return _module; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Parent
|
|
||||||
{
|
|
||||||
get { return _parent; }
|
|
||||||
set { _parent = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint Value
|
|
||||||
{
|
|
||||||
get { return _value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return _name; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual string Description
|
|
||||||
{
|
|
||||||
get { return string.Empty; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user