76#include <sys/socket.h>
79#include <netinet/in.h>
125#define ASN_PARSE_ERROR(x) { return(x); }
137 u_char * Community,
int CommLen,
142 u_char *PDUHeaderPtr, *VARHeaderPtr;
143 u_char *PDUDataStart, *VARDataStart;
147 snmplib_debug(4,
"Buffer=%p BufLenP=%p, buflen=%d\n", Buffer, BufLenP,
155 snmplib_debug(4,
"snmp_msg_Encode:Error encoding SNMP Message Header (Header)!\n");
167 snmplib_debug(4,
"snmp_msg_Encode:Error encoding SNMP Message Header (Version)!\n");
170 snmplib_debug(8,
"snmp_msg_Encode: Encoding community (%s) (%d)\n", Community, CommLen);
179 snmplib_debug(4,
"snmp_msg_Encode:Error encoding SNMP Message Header (Community)!\n");
187 snmplib_debug(8,
"snmp_msg_Encode:Encoding PDU Header at 0x%p (fake len %d) (%d bytes so far)\n",
188 bufp, *BufLenP, *BufLenP);
218 snmplib_debug(9,
"Msg: Vars returned 0x%x. PDU Started at 0x%x\n",
220 snmplib_debug(9,
"MSG: Entire PDU length is %d (0x%x - 0x%x)\n",
221 (
int) (bufp - PDUDataStart), PDUHeaderPtr, bufp);
225 (
int) (bufp - PDUDataStart));
231 snmplib_debug(9,
"MSG: Entire message length is %d (0x%x - 0x%x)\n",
232 (
int) (bufp - MsgPtr), MsgPtr, bufp);
244 (bufp - VARDataStart));
248 *BufLenP = (bufp - Buffer);
249 return (u_char *) bufp;
256 u_char * Community,
int *CommLenP,
264 snmplib_debug(4,
"snmp_msg_Decode:Error decoding SNMP Message Header (Header)!\n");
268 snmplib_debug(4,
"snmp_msg_Decode:Error decoding SNMP Message Header (Header)!\n");
275 snmplib_debug(4,
"snmp_msg_Decode:Error decoding SNMP Message Header (Version)!\n");
278 int communityBufferLimit = *CommLenP;
282 snmplib_debug(4,
"snmp_msg_Decode:Error decoding SNMP Message Header (Community)!\n");
286 if (*CommLenP == communityBufferLimit) {
287 snmplib_debug(4,
"snmp_msg_Decode:Cannot zero-terminate a %d byte-long Community value\n", *CommLenP);
291 assert(*CommLenP < communityBufferLimit);
292 Community[*CommLenP] =
'\0';
294 if (memchr(Community,
'\0', (
size_t)*CommLenP)) {
295 snmplib_debug(4,
"snmp_msg_Decode:Community contained an unsupported ASCII nul character\n");
319 return (u_char *) bufp;
u_char * asn_build_header(u_char *, int *, u_char, int)
u_char * asn_parse_int(u_char *, int *, u_char *, int *, int)
u_char * asn_parse_string(u_char *, int *, u_char *, u_char *, int *)
u_char * asn_build_int(u_char *, int *, u_char, int *, int)
u_char * asn_parse_header(u_char *, int *, u_char *)
u_char * asn_build_string(u_char *, int *, u_char, u_char *, int)
SQUIDCEXTERN void snmplib_debug(int, const char *,...) PRINTF_FORMAT_ARG2
u_char * snmp_msg_Decode(u_char *Packet, int *PacketLenP, u_char *Community, int *CommLenP, int *Version, struct snmp_pdu *PDU)
#define ASN_PARSE_ERROR(x)
u_char * snmp_msg_Encode(u_char *Buffer, int *BufLenP, u_char *Community, int CommLen, int Version, struct snmp_pdu *PDU)
u_char * snmp_pdu_encode(u_char *, int *, struct snmp_pdu *)
u_char * snmp_pdu_decode(u_char *, int *, struct snmp_pdu *)
u_char * snmp_var_EncodeVarBind(u_char *, int *, struct variable_list *, int)
u_char * snmp_var_DecodeVarBind(u_char *, int *, struct variable_list **, int)
struct variable_list * variables