init ems server code
This commit is contained in:
87
plat/snmp/src/include/heartbeat.h
Normal file
87
plat/snmp/src/include/heartbeat.h
Normal file
@@ -0,0 +1,87 @@
|
||||
/*************************************************/
|
||||
/*Title: heartbeat.h */
|
||||
/*Descr: heartbeat processor(Head File) */
|
||||
/*Author: Liang Hanxi */
|
||||
/*Create: 2002-4-5 */
|
||||
/*Modify: 2002-6-25 */
|
||||
/*************************************************/
|
||||
#ifndef __HEART_BEAT__H
|
||||
#define __HEART_BEAT__H
|
||||
|
||||
#include "snmp.h"
|
||||
#include "time.h"
|
||||
#include "sysctrl.h"
|
||||
|
||||
|
||||
#define HEARTBEAT_SHM_KEY 0x01112233
|
||||
#define HEARTBEAT_SHM_PERM 0666
|
||||
#define COMPONENT_NUM 10
|
||||
#define ALARM_COMPONENT_NUM 1024
|
||||
#define LED_NUM 16
|
||||
|
||||
#define FLATFORM_HB_OID {1,3,6,1,4,1,1373,2,3,2,0}
|
||||
#define FLATFORM_HB_OIDLEN 11
|
||||
|
||||
#define HB_PORT 4957
|
||||
#define HB_IP "172.18.255.255"
|
||||
#define INFO_LEN 1024
|
||||
|
||||
#define MasterSubSysID 0
|
||||
#define MasterSysID 0
|
||||
|
||||
// by simon at 23/9/25
|
||||
//DWORD ExistIP[64];
|
||||
//DWORD ExistIPNum;
|
||||
|
||||
typedef struct component_buf{
|
||||
BOOL flag;
|
||||
BYTE alarm_code;
|
||||
BYTE status_len;
|
||||
BYTE status[256];
|
||||
}component_buf;
|
||||
|
||||
typedef struct alarm_buf{
|
||||
BOOL flag;
|
||||
BYTE alarm_code;
|
||||
}alarm_buf;
|
||||
|
||||
typedef struct heartbeat_msg{
|
||||
BYTE sys_id;
|
||||
BYTE subsys_id;
|
||||
BYTE timestamp[4];
|
||||
BYTE led_color[8];
|
||||
#if _CDMA_SNMP
|
||||
BYTE component_id[2];
|
||||
#else
|
||||
BYTE component_id;
|
||||
#endif
|
||||
BYTE alarm_code;
|
||||
#if _CDMA_SNMP
|
||||
BYTE length[2];
|
||||
#else
|
||||
BYTE reserved;
|
||||
BYTE length;
|
||||
#endif
|
||||
BYTE info[INFO_LEN];
|
||||
}heartbeat_msg;
|
||||
|
||||
typedef struct heartbeat_shm{
|
||||
BYTE sys_id;
|
||||
BYTE subsys_id;
|
||||
BYTE led[LED_NUM];
|
||||
component_buf component[COMPONENT_NUM];
|
||||
alarm_buf alarm[ALARM_COMPONENT_NUM];
|
||||
BYTE alarm_num;
|
||||
heartbeat_msg msg;
|
||||
}heartbeat_shm;
|
||||
|
||||
void set_led(BYTE nled,BYTE ncolor);
|
||||
void set_alarm(WORD component_id,BYTE alarm_code);
|
||||
void set_status(BYTE component_id,BYTE info_len,BYTE *info);
|
||||
void heartbeat_init(u_short sys_id);
|
||||
void heartbeat_timer();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
100
plat/snmp/src/include/macro.h
Normal file
100
plat/snmp/src/include/macro.h
Normal file
@@ -0,0 +1,100 @@
|
||||
#ifndef _SNMP_MACRO_H
|
||||
#define _SNMP_MACRO_H
|
||||
|
||||
#define SyntaxInteger 0x02
|
||||
#define SyntaxOctetString 0x04
|
||||
#define SyntaxIpAddress 0x40
|
||||
#define SyntaxCounter 0x41
|
||||
#define SyntaxTimeTicks 0x43
|
||||
#define SyntaxOpaque 0x44
|
||||
|
||||
#define Create_Object_Cloumn 1
|
||||
#define Create_Sub_Object_Command 1
|
||||
|
||||
#define GET_NULL() do { \
|
||||
*pdata = 0; \
|
||||
*vartype = SyntaxInteger; \
|
||||
datalen = 1; \
|
||||
} while(0)
|
||||
|
||||
#define GET_INTEGER(integer) do { \
|
||||
*((int *)pdata) = htonl(integer); \
|
||||
*vartype = SyntaxInteger; \
|
||||
datalen = 4; \
|
||||
} while(0)
|
||||
|
||||
#define SET_INTEGER(integer) do { \
|
||||
int i; \
|
||||
if(datalen > 4) \
|
||||
return -1; \
|
||||
for(i = 0, integer = 0; i < datalen; i++) \
|
||||
{ \
|
||||
integer = integer << 8; \
|
||||
integer += pdata[i]; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define RETURN_INTEGER(integer) do { \
|
||||
int i; \
|
||||
if(datalen > 4) \
|
||||
datalen = 4; \
|
||||
for(i = 0; i < datalen; i++) \
|
||||
{ \
|
||||
pdata[datalen-i-1] = ((u8 *)&integer)[i]; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#undef GET_U8 /* undefine the "public" macro */
|
||||
#define GET_U8(byte) do { \
|
||||
*pdata = byte; \
|
||||
*vartype = SyntaxInteger; \
|
||||
datalen = 1; \
|
||||
} while(0)
|
||||
|
||||
#define SET_U8(byte) do { \
|
||||
byte = pdata[datalen-1]; \
|
||||
} while(0)
|
||||
|
||||
#define GET_STRING(string) do { \
|
||||
strcpy(pdata, string); \
|
||||
*vartype = SyntaxOctetString; \
|
||||
datalen = strlen(string); \
|
||||
} while(0)
|
||||
|
||||
#define SET_STRING(string) do { \
|
||||
memcpy(string, pdata, datalen); \
|
||||
string[datalen] = 0; \
|
||||
} while(0)
|
||||
|
||||
#define GET_OCTETSTRING(octets, count) do { \
|
||||
memcpy(pdata, octets, count); \
|
||||
*vartype = SyntaxOctetString; \
|
||||
datalen = count; \
|
||||
} while(0)
|
||||
|
||||
#define SET_OCTETSTRING(octets, count) do { \
|
||||
memcpy(octets, pdata, count); \
|
||||
} while(0)
|
||||
|
||||
#define GET_OPAQUE(octets, count) do { \
|
||||
memcpy(pdata, octets, count); \
|
||||
*vartype = SyntaxOpaque; \
|
||||
datalen = count; \
|
||||
} while(0)
|
||||
|
||||
#define SET_OPAQUE(octets, count) do { \
|
||||
memcpy(octets, pdata, count); \
|
||||
} while(0)
|
||||
|
||||
#define GET_IP(ip) do { \
|
||||
memcpy(pdata, ip, 4); \
|
||||
*vartype = SyntaxIpAddress; \
|
||||
datalen = 4; \
|
||||
} while(0)
|
||||
|
||||
#define SET_IP(ip) do { \
|
||||
memcpy(ip, pdata, 4); \
|
||||
} while(0)
|
||||
|
||||
#endif
|
||||
|
||||
330
plat/snmp/src/include/snmp.h
Normal file
330
plat/snmp/src/include/snmp.h
Normal file
@@ -0,0 +1,330 @@
|
||||
/*************************************************/
|
||||
/*Title: snmp.h */
|
||||
/*Descr: SNMP Agent(Head File) */
|
||||
/*Author: Liang Hanxi */
|
||||
/*Create: 2002-4-1 */
|
||||
/*Modify: 2002-6-25 */
|
||||
/*************************************************/
|
||||
|
||||
#ifndef _SNMP_HEAD_FILE
|
||||
#define _SNMP_HEAD_FILE
|
||||
#include "../../../debug/src/include/debug.h"
|
||||
#include "../../../iptrans/src/include/iptrans.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#define SNMP_DEBUG_MASK 0
|
||||
#define SNMP_DEBUG_LOG 0
|
||||
|
||||
#define SNMP_VERSION {9, 0, 1}
|
||||
#define SNMP_V1 0
|
||||
#define SNMP_V2 1
|
||||
#define COMMUNITY "public"
|
||||
#define SNMP_ANY_COMMUNITY 0 //Should be set to 1 if snmp module is invoked in OMC
|
||||
#define BIND_MAX 50
|
||||
#define OID_MAXLEN 32
|
||||
//#define FIX_OID {0x2b,0x06,0x01,0x04,0x01,0x8a,0x5d,0x01,0x01}
|
||||
#define FIX_OID {1,3,6,1,4,1,1373,1,3}
|
||||
//{iso(1).org(3).dod(6).internet(1).private(4).enterprises(1).interWAVE(1373).1.1}
|
||||
#define FIX_OIDLEN 8
|
||||
#define SNMP_OID {1,3,6,1,4,1,1373,1,3,2,3,3}
|
||||
#define SNMP_OIDLEN 12
|
||||
|
||||
#define HEAP_SIZE 500*1024
|
||||
#define SNMP_PORT 4957
|
||||
#define SNMP_VAR_MAX 1600
|
||||
//PDU
|
||||
#define PDU_GET 0
|
||||
#define PDU_GETNEXT 1
|
||||
#define PDU_RSP 2
|
||||
#define PDU_SET 3
|
||||
#define PDU_GETBULK 5
|
||||
#define PDU_INFORM 6
|
||||
#define PDU_TRAP 7
|
||||
#define PDU_REPORT 8
|
||||
//variable type
|
||||
#define NoSuchObject 0x80
|
||||
#define NosuchInstance 0x81
|
||||
#define EndOfMibView 0x82
|
||||
|
||||
//Debug
|
||||
#define SNMPDB_IN 0x00
|
||||
#define SNMPDB_OUT 0x01
|
||||
#define SNMPDB_ERR 0x02
|
||||
#define SNMPDB_NOREG 0x04
|
||||
#define SNMPDB_VALUE 0x10
|
||||
#define SNMPDB_ALARM 0x20
|
||||
#define SNMPDB_MIB 0x40
|
||||
#define SNMPDB_SYS 0x80
|
||||
|
||||
#ifndef _T_BYTE
|
||||
#define _T_BYTE
|
||||
typedef unsigned char BYTE;
|
||||
#endif
|
||||
|
||||
#ifndef _T_BOOL
|
||||
#define _T_BOOL
|
||||
typedef unsigned char BOOL;
|
||||
#endif
|
||||
|
||||
#ifndef _T_DWORD
|
||||
#define _T_DWORD
|
||||
typedef unsigned int DWORD;
|
||||
#endif
|
||||
|
||||
#ifndef _T_WORD
|
||||
#define _T_WORD
|
||||
typedef unsigned short WORD;
|
||||
#endif
|
||||
|
||||
// by simon at 23/9/25
|
||||
//char SnmpVer[16];
|
||||
|
||||
typedef struct var_list{
|
||||
DWORD oid[OID_MAXLEN];
|
||||
BYTE oidlen;
|
||||
BYTE vartype;
|
||||
short msglen;
|
||||
BYTE msg[SNMP_VAR_MAX];
|
||||
}var_list;
|
||||
|
||||
typedef struct snmp_pdu //protocol data unit
|
||||
{
|
||||
BYTE pdu_type; //0-get request 2-get(set) respond 3-set request 7-trap
|
||||
DWORD request_id;
|
||||
char community[16];
|
||||
BYTE var_num;
|
||||
var_list var[BIND_MAX];
|
||||
BYTE error_status; //0:no error 1:too big 2:nosuchname 3:badvalue 4:readonly 5:generr
|
||||
BYTE error_index;
|
||||
//add by yizane start
|
||||
DWORD non_repeaters; //in getbulk replace error_status
|
||||
DWORD max_repetitions; //in getbulk replace error_index
|
||||
//add by yizane end
|
||||
} snmp_pdu;
|
||||
|
||||
typedef struct snmp_addr
|
||||
{
|
||||
unsigned int remote_ip; //DWORD remote_ip;
|
||||
unsigned int local_ip; //DWORD local_ip;
|
||||
WORD remote_port;
|
||||
WORD local_port;
|
||||
BYTE broadcast;
|
||||
} snmp_addr;
|
||||
|
||||
typedef struct snmp_msg
|
||||
{
|
||||
snmp_addr addr;
|
||||
message_list msglist;
|
||||
}snmp_msg;
|
||||
|
||||
typedef struct snmp_buf
|
||||
{
|
||||
snmp_msg msgout[256];
|
||||
BYTE readsub, writesub;
|
||||
}snmp_buf;
|
||||
|
||||
//snmp_buf snmp_outbuf;
|
||||
|
||||
typedef struct snmp_filter
|
||||
{
|
||||
BYTE flag;
|
||||
BYTE type;
|
||||
BYTE oidlen;
|
||||
DWORD ip;
|
||||
DWORD oid[OID_MAXLEN];
|
||||
short local_port;
|
||||
short remote_port;
|
||||
|
||||
|
||||
}snmp_filter;
|
||||
|
||||
#define MAX_SNMP_RECORD 32
|
||||
#define SNMP_SHM_KEY 0x60000001
|
||||
#define SNMP_SHM_PERM 0666
|
||||
|
||||
typedef struct snmp_log_info
|
||||
{
|
||||
BYTE currentNo; /*from 0-MAX_SNMP_RECORD-1 */
|
||||
char log_info[MAX_SNMP_RECORD][512];
|
||||
}snmp_log_info;
|
||||
|
||||
|
||||
/*---------------------------------------*/
|
||||
typedef void (*trapcall)(BYTE oidlen, DWORD *oid, BYTE *pdata,WORD len,snmp_addr *addr);
|
||||
typedef int (*setcall)(BYTE oidlen, DWORD *oid, BYTE *pdata,WORD len);
|
||||
typedef int (*getcall)(BYTE oidlen, DWORD *oid, BYTE *pdata,BYTE *vartype);
|
||||
//add by yizane start
|
||||
typedef int (*getnextcall)(BYTE in_oidlen, DWORD *in_oid, BYTE *oidlen, DWORD *oid, BYTE *pdata,BYTE *vartype);
|
||||
//add by yizane end
|
||||
typedef void (*rspcall)(snmp_pdu *pdu,snmp_addr *addr);
|
||||
typedef int (*snmpcall)(snmp_pdu *pdu,snmp_addr *addr);
|
||||
|
||||
typedef struct mib_nod{
|
||||
DWORD id;
|
||||
trapcall trap_proc;
|
||||
setcall set_proc;
|
||||
getcall get_proc;
|
||||
//add by yizane start
|
||||
getnextcall getnext_proc;
|
||||
//add by yizane end
|
||||
rspcall rsp_proc;
|
||||
snmpcall snmp_proc;
|
||||
struct mib_nod *pnext;
|
||||
struct mib_nod *psub;
|
||||
}mib_nod;
|
||||
|
||||
typedef struct snmp_csta{
|
||||
DWORD timestamp;
|
||||
DWORD trap_in;
|
||||
DWORD trap_out;
|
||||
DWORD set_in;
|
||||
DWORD set_out;
|
||||
DWORD get_in;
|
||||
DWORD get_out;
|
||||
//add by yizane start
|
||||
DWORD getnext_in;
|
||||
DWORD getnext_out;
|
||||
DWORD getbulk_in;
|
||||
DWORD getbulk_out;
|
||||
//add by yizane end
|
||||
DWORD rsp_in;
|
||||
DWORD rsp_out;
|
||||
DWORD fail_parse;
|
||||
DWORD not_register;
|
||||
DWORD fail_build;
|
||||
}snmp_csta;
|
||||
|
||||
typedef struct snmp_mib{
|
||||
BYTE sysid[2];
|
||||
BYTE setpasswd[10];
|
||||
BYTE getpasswd[10];
|
||||
DWORD set_oid[64][20];
|
||||
DWORD get_oid[64][20];
|
||||
DWORD trap_oid[64][20];
|
||||
DWORD rsp_oid[64][20];
|
||||
}snmp_mib;
|
||||
|
||||
/********************************************************************/
|
||||
/* Macros For ASN.1 Encoding */
|
||||
/********************************************************************/
|
||||
#define insert_length(buf,pos,len) {\
|
||||
if(len<0)\
|
||||
{\
|
||||
snmp_debug(SNMPDB_ERR,"length should be larger than zero.");\
|
||||
return 0;\
|
||||
}\
|
||||
else if(len<0x80)\
|
||||
*(buf+pos--)=len;\
|
||||
else if(len<0x100)\
|
||||
{\
|
||||
*(buf+pos--)=len;\
|
||||
*(buf+pos--)=0x81;\
|
||||
}\
|
||||
else if(len<1600)\
|
||||
{\
|
||||
*(buf+pos--)=len & 0xFF;\
|
||||
*(buf+pos--)=len >>8;\
|
||||
*(buf+pos--)=0x82;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
snmp_debug(SNMPDB_ERR,"Length(%d) exceed limit.varindex=%d",len,var_num);\
|
||||
return 0;\
|
||||
}\
|
||||
}
|
||||
|
||||
#define enc_integer(buf,pos,val) {\
|
||||
if(val<0)\
|
||||
{\
|
||||
snmp_debug(SNMPDB_ERR,"integer should larger than zero.val=%d",val);\
|
||||
return -1;\
|
||||
}\
|
||||
else if(val<0x80)\
|
||||
{\
|
||||
*(buf+pos--)=(BYTE)val;\
|
||||
*(buf+pos--)=1;\
|
||||
}\
|
||||
else if(val<0x8000)\
|
||||
{\
|
||||
*(buf+pos--)=val & 0xFF;\
|
||||
*(buf+pos--)=val>>8;\
|
||||
*(buf+pos--)=2;\
|
||||
}\
|
||||
else if(val<0x800000)\
|
||||
{\
|
||||
*(buf+pos--)= val & 0xFF;\
|
||||
*(buf+pos--)=(val & 0xFFFF)>>8;\
|
||||
*(buf+pos--)=val>>16;\
|
||||
*(buf+pos--)=3;\
|
||||
}\
|
||||
else if(val<0x80000000)\
|
||||
{\
|
||||
*(buf+pos--)= val & 0xFF;\
|
||||
*(buf+pos--)=(val & 0xFFFF)>>8;\
|
||||
*(buf+pos--)=(val & 0xFFFFFF)>>16;\
|
||||
*(buf+pos--)=val>>24;\
|
||||
*(buf+pos--)=4;\
|
||||
}\
|
||||
else if(val<0xFFFFFFFF)\
|
||||
{\
|
||||
*(buf+pos--)= val & 0xFF;\
|
||||
*(buf+pos--)=(val & 0xFFFF)>>8;\
|
||||
*(buf+pos--)=(val & 0xFFFFFF)>>16;\
|
||||
*(buf+pos--)=val>>24;\
|
||||
*(buf+pos--)=0;\
|
||||
*(buf+pos--)=5;\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
snmp_debug(SNMPDB_ERR,"Integer's value exceed limit.val=%d",val);\
|
||||
return -1;\
|
||||
}\
|
||||
}
|
||||
|
||||
void snmp_init(WORD nport);
|
||||
void snmpmib_init();
|
||||
void snmp_timer();
|
||||
int snmp_send(snmp_pdu *msgbuf,snmp_addr *addr);
|
||||
int snmp_plat_send(snmp_pdu *msgbuf,snmp_addr *addr);
|
||||
int snmp_receive(snmp_pdu *msgbuf,snmp_addr *addr);
|
||||
int get_response(BYTE oidlen, DWORD *oid, BYTE *pdata,BYTE *vartype);
|
||||
int set_response(BYTE oidlen, DWORD *oid, BYTE *pdata,WORD datalen);
|
||||
//add by yizane start
|
||||
int getnext_response(BYTE pr_oidlen, DWORD *pre_oid, BYTE *oidlen, DWORD *oid, BYTE *pdata,BYTE *vartype);
|
||||
//add by yizane end
|
||||
void inquire_trapmsg(trapcall trap_proc);
|
||||
void inquire_setmsg(BYTE oidlen,DWORD *oid,setcall set_proc);
|
||||
void inquire_getmsg(BYTE oidlen,DWORD *oid,getcall get_proc);
|
||||
void inquire_rspmsg(BYTE oidlen,DWORD *oid,rspcall rsp_proc);
|
||||
void inquire_snmpmsg(BYTE oidlen,DWORD *oid,snmpcall snmp_proc);
|
||||
//add by yizane start
|
||||
void inquire_getnextmsg(BYTE oidlen,DWORD *oid,getnextcall getnext_proc);
|
||||
//add by yizane end
|
||||
void rob_trapmsg(BYTE oidlen,DWORD *oid,trapcall trap_proc);
|
||||
BYTE encode_integer(BYTE *buf,DWORD val);
|
||||
DWORD decode_integer(BYTE *buf,BYTE len);
|
||||
void snmp_log(char *info);
|
||||
void snmp_debug(DWORD mask, const char *fmt,...);
|
||||
void snmp_showbuf(DWORD mask, BYTE *buf, int len);
|
||||
void snmp_logmsg(DWORD mask, snmp_pdu *pdu, snmp_addr *addr);
|
||||
void snmp_debug_setup();
|
||||
void snmp_debug_timer();
|
||||
void snmp_debug_csta(BYTE npage,int instance);
|
||||
void snmp_debug_hb(BYTE npage);
|
||||
void snmp_init_serial_number(BYTE *Serial);
|
||||
void snmp_set_timenosync();//call of this function will tell snmp module do not sync the omc time
|
||||
|
||||
#include "table.h"
|
||||
|
||||
/********************************************************************/
|
||||
#endif
|
||||
|
||||
61
plat/snmp/src/include/sysctrl.h
Normal file
61
plat/snmp/src/include/sysctrl.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/*************************************************/
|
||||
/*Title: sysctrl.h */
|
||||
/*Descr: */
|
||||
/*Author: Liang Hanxi */
|
||||
/*Create: 2002-4-5 */
|
||||
/*Modify: 2002-6-25 */
|
||||
/*************************************************/
|
||||
|
||||
#ifndef __SYSCTRL__H
|
||||
#define __SYSCTRL__H
|
||||
|
||||
#include "time.h"
|
||||
#include <sys/vfs.h>
|
||||
#include <errno.h>
|
||||
#include <mntent.h>
|
||||
#include <sys/sysinfo.h>
|
||||
#include "heartbeat.h"
|
||||
|
||||
#define SYS_T_report 50*60*1 //1min
|
||||
|
||||
|
||||
/* fj added 2018-01-03 omcMain <20>ϱ<EFBFBD><CFB1>豸<EFBFBD><E8B1B8>Ϣ */
|
||||
#pragma pack(1)
|
||||
#define MAX_PARTITION_NUM 16
|
||||
typedef struct partition
|
||||
{
|
||||
BYTE num; // ·<><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BYTE pos; // ·<><C2B7>ֵ<EFBFBD><D6B5>
|
||||
// char mountpoint_path[16];
|
||||
DWORD used_space;
|
||||
DWORD total_space;
|
||||
}partition;
|
||||
typedef struct hb_sysinfo3{
|
||||
DWORD up_time;
|
||||
BYTE idle_cpu_rate;
|
||||
DWORD ram_total_used;
|
||||
DWORD ram_total;
|
||||
DWORD ram_swap_used;
|
||||
DWORD ram_swap_total;
|
||||
DWORD ram_buffers;
|
||||
DWORD ram_cached;
|
||||
BYTE pt_count;
|
||||
partition pt[MAX_PARTITION_NUM];
|
||||
}hb_sysinfo3;
|
||||
#pragma pack()
|
||||
|
||||
typedef struct mnt_list
|
||||
{
|
||||
char mnt_fsname[50];
|
||||
char mnt_dir[50];
|
||||
DWORD total;
|
||||
DWORD free;
|
||||
DWORD limit;
|
||||
}mnt_list;
|
||||
|
||||
void sysctrl_init();
|
||||
void system_report();
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
42
plat/snmp/src/include/table.h
Normal file
42
plat/snmp/src/include/table.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef _SNMP_TABLE_H
|
||||
#define _SNMP_TABLE_H
|
||||
|
||||
#define MAX_COLUMNAR_OF_TABLE 48
|
||||
|
||||
typedef struct table_index {
|
||||
u8 len;
|
||||
u32 oid[32];
|
||||
} table_index;
|
||||
|
||||
/* Get an exist instance from the inclusive one pointed to by address 'instance' */
|
||||
typedef int (*table_get_instance)(u32 *instance);
|
||||
typedef int (*table_get_resp)(u32 column, u32 *instance, u8 *pdata, u8 *vartype);
|
||||
typedef int (*table_set_resp)(u32 column, u32 *instance, u8 *pdata, u16 datalen);
|
||||
|
||||
struct snmp_table_profile {
|
||||
char name[32];
|
||||
table_index index; /* oid of table with entry exclusive */
|
||||
u32 column[MAX_COLUMNAR_OF_TABLE]; /* define all columns of a table, use '0' indicating the end */
|
||||
u8 level; /* level of instance in order to identify a row */
|
||||
table_get_instance get_instance;
|
||||
table_get_resp get_resp;
|
||||
table_set_resp set_resp;
|
||||
};
|
||||
|
||||
struct snmp_register {
|
||||
char name[32];
|
||||
u8 prefix_len; /* Module prefix len */
|
||||
u32 prefix_oid[32]; /* Module prefix oid */
|
||||
u8 num_of_table; /* how many tables being registered, such tables is pointed to by address 'table' */
|
||||
struct snmp_table_profile *table;
|
||||
|
||||
/* In case no table is matched, default callback function is invoked if it is not NULL. Hence,
|
||||
you can implement get/set in much the same way before, i.e. traveling all branches of MIB */
|
||||
getcall default_get_resp;
|
||||
setcall default_set_resp;
|
||||
};
|
||||
|
||||
extern int register_snmp_table(struct snmp_register *reg);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user