]>
git.ipfire.org Git - thirdparty/squid.git/blob - include/snmp_pdu.h
2 * Copyright (C) 1996-2014 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 #ifndef SQUID_SNMP_PDU_H
10 #define SQUID_SNMP_PDU_H
12 /* required for oid typedef */
16 #include <netinet/in.h>
19 /**********************************************************************
21 * Copyright 1997 by Carnegie Mellon University
25 * Permission to use, copy, modify, and distribute this software and its
26 * documentation for any purpose and without fee is hereby granted,
27 * provided that the above copyright notice appear in all copies and that
28 * both that copyright notice and this permission notice appear in
29 * supporting documentation, and that the name of CMU not be
30 * used in advertising or publicity pertaining to distribution of the
31 * software without specific, written prior permission.
33 * CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
34 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
35 * CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
36 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
37 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
38 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
41 * Author: Ryan Troll <ryan+@andrew.cmu.edu>
43 **********************************************************************/
51 int command
; /* Type of this PDU */
52 struct sockaddr_in address
; /* Address of peer */
54 int reqid
; /* Integer32: Request id */
55 int errstat
; /* INTEGER: Error status */
56 int errindex
; /* INTEGER: Error index */
58 /* SNMPv2 Bulk Request */
59 int non_repeaters
; /* INTEGER: */
60 int max_repetitions
; /* INTEGER: */
62 struct variable_list
*variables
; /* Variable Bindings */
64 /* Trap information */
65 oid
*enterprise
; /* System OID */
66 int enterprise_length
;
67 struct sockaddr_in agent_addr
; /* address of object generating trap */
68 int trap_type
; /* generic trap type */
69 int specific_type
; /* specific type */
70 u_int time
; /* Uptime */
73 struct snmp_pdu
*snmp_pdu_create(int);
74 struct snmp_pdu
*snmp_pdu_clone(struct snmp_pdu
*);
75 struct snmp_pdu
*snmp_pdu_fix(struct snmp_pdu
*, int);
76 struct snmp_pdu
*snmp_fix_pdu(struct snmp_pdu
*, int);
77 void snmp_free_pdu(struct snmp_pdu
*);
78 void snmp_pdu_free(struct snmp_pdu
*);
80 u_char
*snmp_pdu_encode(u_char
*, int *, struct snmp_pdu
*);
81 u_char
*snmp_pdu_decode(u_char
*, int *, struct snmp_pdu
*);
83 /* Add a NULL Variable to a PDU */
84 void snmp_add_null_var(struct snmp_pdu
*, oid
*, int);
86 /* RFC 1905: Protocol Operations for SNMPv2
88 * RFC 1157: A Simple Network Management Protocol (SNMP)
92 #define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0)
93 #define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1)
94 #define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2)
96 #define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3)
97 #define TRP_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4) /*Obsolete */
99 #define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
101 #define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
102 #define SNMP_PDU_V2TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7)
103 #define SNMP_PDU_REPORT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8)
105 #define MAX_BINDINGS 2147483647 /* PDU Defaults */
106 #define SNMP_DEFAULT_ERRSTAT -1
107 #define SNMP_DEFAULT_ERRINDEX -1
108 #define SNMP_DEFAULT_ADDRESS 0
109 #define SNMP_DEFAULT_REQID 0
111 /* RFC 1907: Management Information Base for SNMPv2
113 * RFC 1157: A Simple Network Management Protocol (SNMP)
118 #define SNMP_TRAP_COLDSTART (0x0)
119 #define SNMP_TRAP_WARMSTART (0x1)
120 #define SNMP_TRAP_LINKDOWN (0x2)
121 #define SNMP_TRAP_LINKUP (0x3)
122 #define SNMP_TRAP_AUTHENTICATIONFAILURE (0x4)
123 #define SNMP_TRAP_EGPNEIGHBORLOSS (0x5)
124 #define SNMP_TRAP_ENTERPRISESPECIFIC (0x6)
131 #endif /* SQUID_SNMP_PDU_H */