OSDN Git Service

ソースツリー再構成中(ほぼOK?)
[ultramonkey-l7/ultramonkey-l7-v3.git] / snmpagent / store_mibdata.h
1 //
2 //!     @file   store_mibdata.h
3 //!     @brief  net-snmp mibdata stored header
4 //
5 //      copyright(c) sdy corporation.2008
6 //      mail: h.okada at sdy.co.jp
7 //      Copyright (c) 2008 norihisa nakai (n dot nakai at sdy dot co do jp)
8 //
9 //      Distributed under the Boost Software License, Version 1.0. (See accompanying
10 //      file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11 //
12
13 #ifndef STORE_MIBDATA_H
14 #define STORE_MIBDATA_H
15
16 #include <string>
17 #include <map>
18 #include <vector>
19 #include <netinet/in.h>
20 #include <sys/socket.h>
21 #include <arpa/inet.h>
22 #include "message.h"
23 #include "netsnmp_bridge.h"
24 #include "logger_enum.h"
25 #include "MessengerClient.h"
26
27 #define DISPLAYSTRING_LEN           (256)     // RFC2579
28 #define L7VS_IPADDR_LEN                         (128)
29
30 struct vsdata {
31     unsigned short      index;
32     unsigned char       protocol;
33     char                ipAddress[L7VS_IPADDR_LEN];
34     unsigned short      portNumber;
35     char                scheduleModule[L7VS_MODNAME_LEN];
36     char                protocolModule[L7VS_MODNAME_LEN];
37     char                protocolModuleOption[L7VS_PROTOMOD_OPT_LEN];
38     unsigned char       reschedule;
39     char                sorryIpAddress[L7VS_IPADDR_LEN];
40     unsigned short      sorryPortNumber;
41     unsigned int        sorryThreshold;
42     unsigned char       sorryForceFlag;
43     unsigned long long  QoSThresholdUp;
44     unsigned long long  QoSThresholdDown;
45     unsigned long long  throughputUp;
46     unsigned long long  throughputDown;
47 };
48
49 struct rsdata {
50     unsigned short  index;
51     unsigned short  virtualServiceIndex;
52     char            ipAddress[L7VS_IPADDR_LEN];
53     unsigned short  portNumber;
54     unsigned short  forwardMode;
55     unsigned int    weight;
56     unsigned int    activeConn;
57     unsigned int    inactiveConn;
58 };
59
60 struct l7vsd_log_level {
61     l7vs::LOG_LEVEL_TAG   network;
62     l7vs::LOG_LEVEL_TAG   networkBandwidth;
63     l7vs::LOG_LEVEL_TAG   networkNumConnection;
64     l7vs::LOG_LEVEL_TAG   networkQoS;
65     l7vs::LOG_LEVEL_TAG   virtualService;
66     l7vs::LOG_LEVEL_TAG   realServer;
67     l7vs::LOG_LEVEL_TAG   realServerBalancing;
68     l7vs::LOG_LEVEL_TAG   sorryServer;
69     l7vs::LOG_LEVEL_TAG   replication;
70     l7vs::LOG_LEVEL_TAG   startStop;
71     l7vs::LOG_LEVEL_TAG   system;
72     l7vs::LOG_LEVEL_TAG   systemMemory;
73     l7vs::LOG_LEVEL_TAG   systemSocket;
74     l7vs::LOG_LEVEL_TAG   systemSignal;
75     l7vs::LOG_LEVEL_TAG   environment;
76     l7vs::LOG_LEVEL_TAG   environmentParameter;
77     l7vs::LOG_LEVEL_TAG   logger;
78     l7vs::LOG_LEVEL_TAG   parameter;
79     l7vs::LOG_LEVEL_TAG   event;
80     l7vs::LOG_LEVEL_TAG   schedule;
81     l7vs::LOG_LEVEL_TAG   program;
82     l7vs::LOG_LEVEL_TAG   protocol;
83     l7vs::LOG_LEVEL_TAG   module;
84 };
85
86 struct l7vsadm_log_level {
87     l7vs::LOG_LEVEL_TAG   parse;
88     l7vs::LOG_LEVEL_TAG   operate;
89     l7vs::LOG_LEVEL_TAG   communicate;
90     l7vs::LOG_LEVEL_TAG   configResult;
91     l7vs::LOG_LEVEL_TAG   common;
92     l7vs::LOG_LEVEL_TAG   logger;
93     l7vs::LOG_LEVEL_TAG   parameter;
94     l7vs::LOG_LEVEL_TAG   protocol;
95     l7vs::LOG_LEVEL_TAG   module;
96 };
97
98 struct l7snmpagent_log_level {
99     l7vs::LOG_LEVEL_TAG   startStop;
100     l7vs::LOG_LEVEL_TAG   managerReceive;
101     l7vs::LOG_LEVEL_TAG   managerSend;
102     l7vs::LOG_LEVEL_TAG   l7vsdReceive;
103     l7vs::LOG_LEVEL_TAG   l7vsdSend;
104     l7vs::LOG_LEVEL_TAG   logger;
105     l7vs::LOG_LEVEL_TAG   parameter;
106 };
107
108 struct l7_status {
109     char                    message[DISPLAYSTRING_LEN];
110     IPC_STATUS_TAG          snmpAgent;
111 //    REPLICATION_MODE_TAG    replication;
112 };
113
114 class l7ag_store_mibdata
115 {
116 protected:
117     std::vector<vsdata>     vsdatalist;
118     std::vector<rsdata>     rsdatalist;
119     l7vsd_log_level         vsd_log;
120     l7vsadm_log_level       adm_log;
121     l7snmpagent_log_level   snmp_log;
122     l7_status               status;
123     netsnmp_table_data_set* vs_table_set;
124     netsnmp_table_data_set* rs_table_set;
125 private:
126     l7ag_store_mibdata(){};
127     l7ag_store_mibdata( const l7ag_store_mibdata& ){};
128     l7ag_store_mibdata& operator=( const l7ag_store_mibdata& in_data ){
129         vsdatalist = in_data.vsdatalist;
130         rsdatalist = in_data.rsdatalist;
131         return *this;
132     };
133 public:
134     static l7ag_store_mibdata& getInstance(){
135         static l7ag_store_mibdata instance;
136         return instance;
137     }
138
139     vsdata* getVS_first_data_point();
140     rsdata* getRS_first_data_point();
141     vsdata* getVS_data_point( std::vector<vsdata>::iterator );
142     rsdata* getRS_data_point( std::vector<rsdata>::iterator );
143     std::vector<vsdata>::iterator   getVS_first_data_iterator();
144     std::vector<rsdata>::iterator   getRS_first_data_iterator();
145
146     vsdata*                 getVSmibdata( std::size_t );
147     rsdata*                 getRSmibdata( std::size_t );
148     l7vsd_log_level*        getVsdLogmibdata();
149     l7vsadm_log_level*      getVsadmLogmibdata();
150     l7snmpagent_log_level*  getAgentLogmibdata();
151     l7_status*              getStatmibdata();
152
153     std::size_t getVSdatacount();
154     std::size_t getRSdatacount();
155
156     bool        addVSmibdata( struct l7ag_mibdata_payload_vs* );
157     bool        addRSmibdata( struct l7ag_mibdata_payload_rs* );
158     vsdata*     updateVSmibdata( std::size_t, l7ag_mibdata_payload_vs* );
159     rsdata*     updateRSmibdata( std::size_t, l7ag_mibdata_payload_rs* );
160
161     void    clearVSmibdata();
162     void    clearRSmibdata();
163     void    clearVsdLogmibdata();
164     void    clearVsadmLogmibdata();
165     void    clearAgentLogmibdata();
166     void    clearStatmibdata();
167     void    setVsdLogmibdata(l7vsd_log_level);
168     void    setVsadmLogmibdata(l7vsadm_log_level);
169     void    setAgentLogmibdata(l7snmpagent_log_level);
170     void    setStatmibdata(l7_status);
171     void    setVsTableSet(netsnmp_table_data_set*);
172     void    setRsTableSet(netsnmp_table_data_set*);
173 };
174
175 #endif //__STORE_MIBDATA_H__