AGENT++  4.0.3
proxy_forwarder.h
Go to the documentation of this file.
1 /*_############################################################################
2  _##
3  _## AGENT++ 4.0 - proxy_forwarder.h
4  _##
5  _## Copyright (C) 2000-2013 Frank Fock and Jochen Katz (agentpp.com)
6  _##
7  _## Licensed under the Apache License, Version 2.0 (the "License");
8  _## you may not use this file except in compliance with the License.
9  _## You may obtain a copy of the License at
10  _##
11  _## http://www.apache.org/licenses/LICENSE-2.0
12  _##
13  _## Unless required by applicable law or agreed to in writing, software
14  _## distributed under the License is distributed on an "AS IS" BASIS,
15  _## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  _## See the License for the specific language governing permissions and
17  _## limitations under the License.
18  _##
19  _##########################################################################*/
20 
21 
22 #ifndef _proxy_forwarder_h_
23 #define _proxy_forwarder_h_
24 
25 #include <agent_pp/agent++.h>
26 #include <agent_pp/List.h>
27 #include <agent_pp/request.h>
28 #include <agent_pp/snmp_request.h>
29 
30 #ifdef _SNMPv3
31 #ifdef _PROXY_FORWARDER
32 
33 #ifdef AGENTPP_NAMESPACE
34 namespace Agentpp {
35 #endif
36 
37 class MibTableRow;
38 
47 class AGENTPP_DECL ProxyForwarder
48 {
49  public:
50  typedef enum { ALL, WRITE, READ, NOTIFY, INFORM } pdu_type;
51 
62  ProxyForwarder(const NS_SNMP OctetStr&, pdu_type);
63 
64  ~ProxyForwarder();
65 
77  bool process_request(Request*);
78 
87  OidxPtr key() { return &regKey; }
88 
89 
90 
91  protected:
92 
97  void initialize();
98 
99  OidList<MibTableRow>* get_matches(Request*);
100  bool match_target_params(Request*, const NS_SNMP OctetStr&);
101  bool process_single(Pdux&, Request*);
102  bool process_multiple(Pdux&, Request*);
103  void check_references();
104  void transform_pdu(const Pdux&, Pdux&);
105 
106 
107  Oidx regKey;
108  SnmpRequestV3* snmp;
109 };
110 
111 #ifdef AGENTPP_NAMESPACE
112 }
113 #endif
114 
115 #endif
116 #endif
117 
118 #endif