1 #ifndef AGENTX_PROTOCOL_H
2 #define AGENTX_PROTOCOL_H
3 
config_belongs_in(agent_module)4 config_belongs_in(agent_module)
5 
6 #ifdef __cplusplus
7 extern          "C" {
8 #endif
9     /*
10      *  Definitions for Agent Extensibility Protocol (RFC 2257)
11      *
12      */
13 
14 #define AGENTX_PORT	705
15 #ifndef NETSNMP_AGENTX_SOCKET
16 #define NETSNMP_AGENTX_SOCKET	"/var/agentx/master"
17 #endif
18 
19     /*
20      * AgentX versions
21      */
22     /*
23      * Use values distinct from those used to represent SNMP versions
24      */
25 
26 #define AGENTX_VERSION_BASE	192     /* Binary: 11xxxxxx */
27 #define AGENTX_VERSION_1	(AGENTX_VERSION_BASE | 0x1)
28 
29 #define IS_AGENTX_VERSION(v)	(((v)&AGENTX_VERSION_BASE) == AGENTX_VERSION_BASE)
30 
31 
32     /*
33      * PDU types in AgentX
34      */
35 #define AGENTX_MSG_OPEN       ((u_char)1)
36 #define AGENTX_MSG_CLOSE      ((u_char)2)
37 #define AGENTX_MSG_REGISTER   ((u_char)3)
38 #define AGENTX_MSG_UNREGISTER ((u_char)4)
39 #define AGENTX_MSG_GET        ((u_char)5)
40 #define AGENTX_MSG_GETNEXT    ((u_char)6)
41 #define AGENTX_MSG_GETBULK    ((u_char)7)
42 #define AGENTX_MSG_TESTSET    ((u_char)8)
43 #define AGENTX_MSG_COMMITSET  ((u_char)9)
44 #define AGENTX_MSG_UNDOSET    ((u_char)10)
45 #define AGENTX_MSG_CLEANUPSET ((u_char)11)
46 #define AGENTX_MSG_NOTIFY     ((u_char)12)
47 #define AGENTX_MSG_PING       ((u_char)13)
48 #define AGENTX_MSG_INDEX_ALLOCATE    ((u_char)14)
49 #define AGENTX_MSG_INDEX_DEALLOCATE  ((u_char)15)
50 #define AGENTX_MSG_ADD_AGENT_CAPS    ((u_char)16)
51 #define AGENTX_MSG_REMOVE_AGENT_CAPS ((u_char)17)
52 #define AGENTX_MSG_RESPONSE    ((u_char)18)
53 
54 
55     /*
56      * Error codes from RFC 2257
57      */
58 #define AGENTX_ERR_OPEN_FAILED          (256)
59 #define AGENTX_ERR_NOT_OPEN             (257)
60 #define AGENTX_ERR_INDEX_WRONG_TYPE     (258)
61 #define AGENTX_ERR_INDEX_ALREADY_ALLOCATED (259)
62 #define AGENTX_ERR_INDEX_NONE_AVAILABLE (260)
63 #define AGENTX_ERR_INDEX_NOT_ALLOCATED  (261)
64 #define AGENTX_ERR_UNSUPPORTED_CONTEXT  (262)
65 #define AGENTX_ERR_DUPLICATE_REGISTRATION (263)
66 #define AGENTX_ERR_UNKNOWN_REGISTRATION (264)
67 #define AGENTX_ERR_UNKNOWN_AGENTCAPS    (265)
68 
69     /*
70      * added in 1999 revision
71      */
72 #define AGENTX_ERR_NOERROR		SNMP_ERR_NOERROR
73 #define AGENTX_ERR_PARSE_FAILED         (266)
74 #define AGENTX_ERR_REQUEST_DENIED       (267)
75 #define AGENTX_ERR_PROCESSING_ERROR     (268)
76 
77     /*
78      * Message processing models
79      */
80 #define AGENTX_MP_MODEL_AGENTXv1        (257)
81 
82 
83     /*
84      * PDU Flags - see also 'UCD_MSG_FLAG_xxx' in snmp.h
85      */
86 #define AGENTX_MSG_FLAG_INSTANCE_REGISTER     0x01
87 #define AGENTX_MSG_FLAG_NEW_INSTANCE          0x02
88 #define AGENTX_MSG_FLAG_ANY_INSTANCE          0x04
89 #define AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT   0x08
90 #define AGENTX_MSG_FLAG_NETWORK_BYTE_ORDER    0x10
91 
92 #define AGENTX_MSG_FLAGS_MASK                 0xff
93 
94     /*
95      * Session Flags - see also 'UCD_FLAGS_xxx' in snmp.h
96      */
97 #define AGENTX_FLAGS_NETWORK_BYTE_ORDER       AGENTX_MSG_FLAG_NETWORK_BYTE_ORDER
98 
99 
100 
101     int             agentx_realloc_build(netsnmp_session * session,
102                                          netsnmp_pdu *pdu, u_char ** buf,
103                                          size_t * buf_len,
104                                          size_t * out_len);
105     int             agentx_parse(netsnmp_session *, netsnmp_pdu *,
106                                  u_char *, size_t);
107     int             agentx_check_packet(u_char *, size_t);
108 
109 #ifdef __cplusplus
110 }
111 #endif
112 #endif                          /* AGENTX_PROTOCOL_H */
113