snmpagent.h (124861) | snmpagent.h (128237) |
---|---|
1/* 2 * Copyright (c) 2001-2003 3 * Fraunhofer Institute for Open Communication Systems (FhG Fokus). 4 * All rights reserved. 5 * 6 * Author: Harti Brandt <harti@freebsd.org> 7 * 8 * Redistribution of this software and documentation and use in source and --- 16 unchanged lines hidden (view full) --- 25 * FRAUNHOFER FOKUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 28 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 31 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * | 1/* 2 * Copyright (c) 2001-2003 3 * Fraunhofer Institute for Open Communication Systems (FhG Fokus). 4 * All rights reserved. 5 * 6 * Author: Harti Brandt <harti@freebsd.org> 7 * 8 * Redistribution of this software and documentation and use in source and --- 16 unchanged lines hidden (view full) --- 25 * FRAUNHOFER FOKUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 28 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 31 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * |
33 * $Begemot: bsnmp/lib/snmpagent.h,v 1.10 2003/12/03 09:55:58 hbb Exp $ | 33 * $Begemot: bsnmp/lib/snmpagent.h,v 1.12 2004/04/13 15:18:15 novo Exp $ |
34 * 35 * Header file for SNMP functions. This requires snmp.h to be included. 36 */ 37#ifndef snmp_agent_h_ 38#define snmp_agent_h_ 39 40struct snmp_dependency; 41 | 34 * 35 * Header file for SNMP functions. This requires snmp.h to be included. 36 */ 37#ifndef snmp_agent_h_ 38#define snmp_agent_h_ 39 40struct snmp_dependency; 41 |
42enum snmp_ret { 43 /* OK, generate a response */ 44 SNMP_RET_OK = 0, 45 /* Error, ignore packet (no response) */ 46 SNMP_RET_IGN = 1, 47 /* Error, generate response from original packet */ 48 SNMP_RET_ERR = 2 49}; 50 |
|
42/* Semi-Opaque object for SET operations */ 43struct snmp_context { 44 u_int var_index; 45 struct snmp_scratch *scratch; 46 struct snmp_dependency *dep; 47 void *data; /* user data */ | 51/* Semi-Opaque object for SET operations */ 52struct snmp_context { 53 u_int var_index; 54 struct snmp_scratch *scratch; 55 struct snmp_dependency *dep; 56 void *data; /* user data */ |
57 enum snmp_ret code; /* return code */ |
|
48}; 49 50struct snmp_scratch { 51 void *ptr1; 52 void *ptr2; 53 u_int32_t int1; 54 u_int32_t int2; 55}; 56 57enum snmp_depop { 58 SNMP_DEPOP_COMMIT, | 58}; 59 60struct snmp_scratch { 61 void *ptr1; 62 void *ptr2; 63 u_int32_t int1; 64 u_int32_t int2; 65}; 66 67enum snmp_depop { 68 SNMP_DEPOP_COMMIT, |
59 SNMP_DEPOP_ROLLBACK | 69 SNMP_DEPOP_ROLLBACK, 70 SNMP_DEPOP_FINISH |
60}; 61 62typedef int (*snmp_depop_t)(struct snmp_context *, struct snmp_dependency *, 63 enum snmp_depop); 64 65struct snmp_dependency { 66 struct asn_oid obj; 67 struct asn_oid idx; 68}; 69 70/* | 71}; 72 73typedef int (*snmp_depop_t)(struct snmp_context *, struct snmp_dependency *, 74 enum snmp_depop); 75 76struct snmp_dependency { 77 struct asn_oid obj; 78 struct asn_oid idx; 79}; 80 81/* |
71 * Functions to be called at the end of a SET operation. 72 */ 73typedef void (*snmp_set_finish_t)(struct snmp_context *, int fail, void *); 74 75/* | |
76 * The TREE 77 */ 78enum snmp_node_type { 79 SNMP_NODE_LEAF = 1, 80 SNMP_NODE_COLUMN 81}; 82 83enum snmp_op { 84 SNMP_OP_GET = 1, 85 SNMP_OP_GETNEXT, 86 SNMP_OP_SET, 87 SNMP_OP_COMMIT, 88 SNMP_OP_ROLLBACK, 89}; 90 | 82 * The TREE 83 */ 84enum snmp_node_type { 85 SNMP_NODE_LEAF = 1, 86 SNMP_NODE_COLUMN 87}; 88 89enum snmp_op { 90 SNMP_OP_GET = 1, 91 SNMP_OP_GETNEXT, 92 SNMP_OP_SET, 93 SNMP_OP_COMMIT, 94 SNMP_OP_ROLLBACK, 95}; 96 |
91enum snmp_ret { 92 /* OK, generate a response */ 93 SNMP_RET_OK = 0, 94 /* Error, ignore packet (no response) */ 95 SNMP_RET_IGN = 1, 96 /* Error, generate response from original packet */ 97 SNMP_RET_ERR = 2 98}; 99 | |
100typedef int (*snmp_op_t)(struct snmp_context *, struct snmp_value *, 101 u_int, u_int, enum snmp_op); 102 103struct snmp_node { 104 struct asn_oid oid; 105 const char *name; /* name of the leaf */ 106 enum snmp_node_type type; /* type of this node */ 107 enum snmp_syntax syntax; 108 snmp_op_t op; 109 u_int flags; 110 u_int32_t index; /* index data */ 111 void *data; /* application data */ | 97typedef int (*snmp_op_t)(struct snmp_context *, struct snmp_value *, 98 u_int, u_int, enum snmp_op); 99 100struct snmp_node { 101 struct asn_oid oid; 102 const char *name; /* name of the leaf */ 103 enum snmp_node_type type; /* type of this node */ 104 enum snmp_syntax syntax; 105 snmp_op_t op; 106 u_int flags; 107 u_int32_t index; /* index data */ 108 void *data; /* application data */ |
109 void *tree_data; /* application data */ |
|
112}; 113extern struct snmp_node *tree; 114extern u_int tree_size; 115 116#define SNMP_NODE_CANSET 0x0001 /* SET allowed */ 117 118#define SNMP_INDEXES_MAX 7 119#define SNMP_INDEX_SHIFT 4 --- 25 unchanged lines hidden (view full) --- 145 struct snmp_pdu *resp, void *); 146 147enum snmp_ret snmp_make_errresp(const struct snmp_pdu *, struct asn_buf *, 148 struct asn_buf *); 149 150struct snmp_dependency *snmp_dep_lookup(struct snmp_context *, 151 const struct asn_oid *, const struct asn_oid *, size_t, snmp_depop_t); 152 | 110}; 111extern struct snmp_node *tree; 112extern u_int tree_size; 113 114#define SNMP_NODE_CANSET 0x0001 /* SET allowed */ 115 116#define SNMP_INDEXES_MAX 7 117#define SNMP_INDEX_SHIFT 4 --- 25 unchanged lines hidden (view full) --- 143 struct snmp_pdu *resp, void *); 144 145enum snmp_ret snmp_make_errresp(const struct snmp_pdu *, struct asn_buf *, 146 struct asn_buf *); 147 148struct snmp_dependency *snmp_dep_lookup(struct snmp_context *, 149 const struct asn_oid *, const struct asn_oid *, size_t, snmp_depop_t); 150 |
153int snmp_set_atfinish(struct snmp_context *, snmp_set_finish_t func, void *arg); 154 | |
155struct snmp_context *snmp_init_context(void); 156int snmp_dep_commit(struct snmp_context *); 157int snmp_dep_rollback(struct snmp_context *); | 151struct snmp_context *snmp_init_context(void); 152int snmp_dep_commit(struct snmp_context *); 153int snmp_dep_rollback(struct snmp_context *); |
154void snmp_dep_finish(struct snmp_context *); |
|
158 159#endif | 155 156#endif |