OSDN Git Service

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