Documentation ¶
Index ¶
- Constants
- Variables
- func Check(err error)
- func Partition(currentPosition, partitionSize, sliceLength int) bool
- func ToBigInt(value interface{}) *big.Int
- type Asn1BER
- type BitStringValue
- type GoSNMP
- func (x *GoSNMP) BulkWalk(rootOid string, walkFn WalkFunc) error
- func (x *GoSNMP) BulkWalkAll(rootOid string) (results []SnmpPDU, err error)
- func (x *GoSNMP) Check(err error)
- func (x *GoSNMP) Connect() error
- func (x *GoSNMP) ConnectIPv4() error
- func (x *GoSNMP) ConnectIPv6() error
- func (x *GoSNMP) Get(oids []string) (result *SnmpPacket, err error)
- func (x *GoSNMP) GetBulk(oids []string, nonRepeaters uint8, maxRepetitions uint32) (result *SnmpPacket, err error)
- func (x *GoSNMP) GetNext(oids []string) (result *SnmpPacket, err error)
- func (x *GoSNMP) SendTrap(trap SnmpTrap) (result *SnmpPacket, err error)
- func (x *GoSNMP) Set(pdus []SnmpPDU) (result *SnmpPacket, err error)
- func (x *GoSNMP) SetMsgID(msgID uint32)
- func (x *GoSNMP) SetRequestID(reqID uint32)
- func (x *GoSNMP) SnmpDecodePacket(resp []byte) (*SnmpPacket, error)
- func (x *GoSNMP) SnmpEncodePacket(pdutype PDUType, pdus []SnmpPDU, nonRepeaters uint8, maxRepetitions uint32) ([]byte, error)
- func (x *GoSNMP) UnmarshalTrap(trap []byte, useResponseSecurityParameters bool) (result *SnmpPacket, err error)
- func (x *GoSNMP) Walk(rootOid string, walkFn WalkFunc) error
- func (x *GoSNMP) WalkAll(rootOid string) (results []SnmpPDU, err error)
- type Handler
- type Logger
- type LoggerInterface
- type PDUType
- type SNMPError
- type SnmpPDU
- type SnmpPacket
- type SnmpTrap
- type SnmpV3AuthProtocol
- type SnmpV3MsgFlags
- type SnmpV3PrivProtocol
- type SnmpV3SecurityModel
- type SnmpV3SecurityParameters
- type SnmpVersion
- type TrapHandlerFunc
- type TrapListener
- type UsmSecurityParameters
- type VarBind
- type WalkFunc
Constants ¶
const ( // MaxOids is the maximum number of OIDs permitted in a single call, // otherwise error. MaxOids too high can cause remote devices to fail // strangely. 60 seems to be a common value that works, but you will want // to change this in the GoSNMP struct MaxOids = 60 // Max oid sub-identifier value // https://tools.ietf.org/html/rfc2578#section-7.1.3 MaxObjectSubIdentifierValue = 4294967295 )
const AsnContext = 0x80
const AsnExtensionID = 0x1F
const AsnExtensionTag = (AsnContext | AsnExtensionID) // 0x9F
Variables ¶
var ( ErrBase128IntegerTooLarge = errors.New("base 128 integer too large") ErrBase128IntegerTruncated = errors.New("base 128 integer truncated") ErrFloatTooLarge = errors.New("float too large") ErrIntegerTooLarge = errors.New("integer too large") ErrInvalidOidLength = errors.New("invalid OID length") ErrInvalidPacketLength = errors.New("invalid packet length") ErrZeroByteBuffer = errors.New("zero byte buffer") ErrZeroLenInteger = errors.New("zero length integer") )
helper error modes
var ( ErrDecryption = errors.New("decryption error") ErrInvalidMsgs = errors.New("invalid messages") ErrNotInTimeWindow = errors.New("not in time window") ErrUnknownEngineID = errors.New("unknown engine id") ErrUnknownPDUHandlers = errors.New("unknown pdu handlers") ErrUnknownReportPDU = errors.New("unknown report pdu") ErrUnknownSecurityLevel = errors.New("unknown security level") ErrUnknownSecurityModels = errors.New("unknown security models") ErrUnknownUsername = errors.New("unknown username") ErrWrongDigest = errors.New("wrong digest") )
var Default = &GoSNMP{ Port: 161, Transport: udp, Community: "public", Version: Version2c, Timeout: time.Duration(2) * time.Second, Retries: 3, ExponentialTimeout: true, MaxOids: MaxOids, }
Default connection settings
Functions ¶
func Check ¶ added in v1.10.0
func Check(err error)
Check makes checking errors easy, so they actually get a minimal check
func Partition ¶ added in v1.2.0
Partition - returns true when dividing a slice into partitionSize lengths, including last partition which may be smaller than partitionSize. This is useful when you have a large array of OIDs to run Get() on. See the tests for example usage.
For example for a slice of 8 items to be broken into partitions of length 3, Partition returns true for the currentPosition having the following values:
0 1 2 3 4 5 6 7
T T T
func ToBigInt ¶
ToBigInt converts SnmpPDU.Value to big.Int, or returns a zero big.Int for non int-like types (eg strings).
This is a convenience function to make working with SnmpPDU's easier - it reduces the need for type assertions. A big.Int is convenient, as SNMP can return int32, uint32, and uint64.
Types ¶
type Asn1BER ¶
type Asn1BER byte
Asn1BER is the type of the SNMP PDU
const ( EndOfContents Asn1BER = 0x00 UnknownType Asn1BER = 0x00 Boolean Asn1BER = 0x01 Integer Asn1BER = 0x02 BitString Asn1BER = 0x03 OctetString Asn1BER = 0x04 Null Asn1BER = 0x05 ObjectIdentifier Asn1BER = 0x06 ObjectDescription Asn1BER = 0x07 IPAddress Asn1BER = 0x40 Counter32 Asn1BER = 0x41 Gauge32 Asn1BER = 0x42 TimeTicks Asn1BER = 0x43 Opaque Asn1BER = 0x44 NsapAddress Asn1BER = 0x45 Counter64 Asn1BER = 0x46 Uinteger32 Asn1BER = 0x47 OpaqueFloat Asn1BER = 0x78 OpaqueDouble Asn1BER = 0x79 NoSuchObject Asn1BER = 0x80 NoSuchInstance Asn1BER = 0x81 EndOfMibView Asn1BER = 0x82 )
Asn1BER's - http://www.ietf.org/rfc/rfc1442.txt
type BitStringValue ¶
type BitStringValue struct { Bytes []byte // bits packed into bytes. BitLength int // length in bits. }
BitStringValue is the structure to use when you want an ASN.1 BIT STRING type. A bit string is padded up to the nearest byte in memory and the number of valid bits is recorded. Padding bits will be zero.
func (BitStringValue) At ¶
func (b BitStringValue) At(i int) int
At returns the bit at the given index. If the index is out of range it returns false.
func (BitStringValue) RightAlign ¶
func (b BitStringValue) RightAlign() []byte
RightAlign returns a slice where the padding bits are at the beginning. The slice may share memory with the BitString.
type GoSNMP ¶
type GoSNMP struct { // Conn is net connection to use, typically established using GoSNMP.Connect(). Conn net.Conn // Target is an ipv4 address. Target string // Port is a port. Port uint16 // Transport is the transport protocol to use ("udp" or "tcp"); if unset "udp" will be used. Transport string // Community is an SNMP Community string. Community string // Version is an SNMP Version. Version SnmpVersion // Context allows for overall deadlines and cancellation. Context context.Context // Timeout is the timeout for one SNMP request/response. Timeout time.Duration // Set the number of retries to attempt. Retries int // Double timeout in each retry. ExponentialTimeout bool // Logger is the GoSNMP.Logger to use for debugging. // For verbose logging to stdout: // x.Logger = NewLogger(log.New(os.Stdout, "", 0)) // For Release builds, you can turn off logging entirely by using the go build tag "gosnmp_nodebug" even if the logger was installed. Logger Logger // Message hook methods allow passing in a functions at various points in the packet handling. // For example, this can be used to collect packet timing, add metrics, or implement tracing. /* */ // PreSend is called before a packet is sent. PreSend func(*GoSNMP) // OnSent is called when a packet is sent. OnSent func(*GoSNMP) // OnRecv is called when a packet is received. OnRecv func(*GoSNMP) // OnRetry is called when a retry attempt is done. OnRetry func(*GoSNMP) // OnFinish is called when the request completed. OnFinish func(*GoSNMP) // MaxOids is the maximum number of oids allowed in a Get(). // (default: MaxOids) MaxOids int // MaxRepetitions sets the GETBULK max-repetitions used by BulkWalk* // Unless MaxRepetitions is specified it will use defaultMaxRepetitions (50) // This may cause issues with some devices, if so set MaxRepetitions lower. // See comments in https://github.com/gosnmp/gosnmp/issues/100 MaxRepetitions uint32 // NonRepeaters sets the GETBULK max-repeaters used by BulkWalk*. // (default: 0 as per RFC 1905) NonRepeaters int // UseUnconnectedUDPSocket if set, changes net.Conn to be unconnected UDP socket. // Some multi-homed network gear isn't smart enough to send SNMP responses // from the address it received the requests on. To work around that, // we open unconnected UDP socket and use sendto/recvfrom. UseUnconnectedUDPSocket bool // If Control is not nil, it is called after creating the network // connection but before actually dialing. // // Can be used when UseUnconnectedUDPSocket is set to false or when using TCP // in scenario where specific options on the underlying socket are nedded. // Refer to https://pkg.go.dev/net#Dialer Control func(network, address string, c syscall.RawConn) error // LocalAddr is the local address in the format "address:port" to use when connecting an Target address. // If the port parameter is empty or "0", as in // "127.0.0.1:" or "[::1]:0", a port number is automatically (random) chosen. LocalAddr string // netsnmp has '-C APPOPTS - set various application specific behaviours' // // - 'c: do not check returned OIDs are increasing' - use AppOpts = map[string]interface{"c":true} with // Walk() or BulkWalk(). The library user needs to implement their own policy for terminating walks. // - 'p,i,I,t,E' -> pull requests welcome AppOpts map[string]interface{} // MsgFlags is an SNMPV3 MsgFlags. MsgFlags SnmpV3MsgFlags // SecurityModel is an SNMPV3 Security Model. SecurityModel SnmpV3SecurityModel // SecurityParameters is an SNMPV3 Security Model parameters struct. SecurityParameters SnmpV3SecurityParameters // ContextEngineID is SNMPV3 ContextEngineID in ScopedPDU. ContextEngineID string // ContextName is SNMPV3 ContextName in ScopedPDU ContextName string // contains filtered or unexported fields }
GoSNMP represents GoSNMP library state.
func (*GoSNMP) BulkWalk ¶ added in v1.3.0
BulkWalk retrieves a subtree of values using GETBULK. As the tree is walked walkFn is called for each new value. The function immediately returns an error if either there is an underlaying SNMP error (e.g. GetBulk fails), or if walkFn returns an error.
func (*GoSNMP) BulkWalkAll ¶ added in v1.3.0
BulkWalkAll is similar to BulkWalk but returns a filled array of all values rather than using a callback function to stream results. Caution: if you have set x.AppOpts to 'c', BulkWalkAll may loop indefinitely and cause an Out Of Memory - use BulkWalk instead.
func (*GoSNMP) Check ¶ added in v1.10.0
Check makes checking errors easy, so they actually get a minimal check
func (*GoSNMP) Connect ¶ added in v1.2.0
Connect creates and opens a socket. Because UDP is a connectionless protocol, you won't know if the remote host is responding until you send packets. Neither will you know if the host is regularly disappearing and reappearing.
For historical reasons (ie this is part of the public API), the method won't be renamed to Dial().
func (*GoSNMP) ConnectIPv4 ¶ added in v1.11.0
ConnectIPv4 forces an IPv4-only connection
func (*GoSNMP) ConnectIPv6 ¶ added in v1.11.0
ConnectIPv6 forces an IPv6-only connection
func (*GoSNMP) Get ¶
func (x *GoSNMP) Get(oids []string) (result *SnmpPacket, err error)
Get sends an SNMP GET request
func (*GoSNMP) GetBulk ¶ added in v1.2.0
func (x *GoSNMP) GetBulk(oids []string, nonRepeaters uint8, maxRepetitions uint32) (result *SnmpPacket, err error)
GetBulk sends an SNMP GETBULK request
For maxRepetitions greater than 255, use BulkWalk() or BulkWalkAll()
func (*GoSNMP) GetNext ¶ added in v1.2.0
func (x *GoSNMP) GetNext(oids []string) (result *SnmpPacket, err error)
GetNext sends an SNMP GETNEXT request
func (*GoSNMP) SendTrap ¶ added in v1.10.0
func (x *GoSNMP) SendTrap(trap SnmpTrap) (result *SnmpPacket, err error)
SendTrap sends a SNMP Trap
pdus[0] can a pdu of Type TimeTicks (with the desired uint32 epoch time). Otherwise a TimeTicks pdu will be prepended, with time set to now. This mirrors the behaviour of the Net-SNMP command-line tools.
SendTrap doesn't wait for a return packet from the NMS (Network Management Station).
See also Listen() and examples for creating an NMS.
NOTE: the trap code is currently unreliable when working with snmpv3 - pull requests welcome
func (*GoSNMP) Set ¶ added in v1.2.0
func (x *GoSNMP) Set(pdus []SnmpPDU) (result *SnmpPacket, err error)
Set sends an SNMP SET request
func (*GoSNMP) SetRequestID ¶ added in v1.14.0
SetRequestID sets the base ID value for future requests
func (*GoSNMP) SnmpDecodePacket ¶ added in v1.13.0
func (x *GoSNMP) SnmpDecodePacket(resp []byte) (*SnmpPacket, error)
SnmpDecodePacket exposes SNMP packet parsing to external callers. This is useful for processing traffic from other sources and building test harnesses.
func (*GoSNMP) SnmpEncodePacket ¶ added in v1.13.0
func (x *GoSNMP) SnmpEncodePacket(pdutype PDUType, pdus []SnmpPDU, nonRepeaters uint8, maxRepetitions uint32) ([]byte, error)
SnmpEncodePacket exposes SNMP packet generation to external callers. This is useful for generating traffic for use over separate transport stacks and creating traffic samples for test purposes.
func (*GoSNMP) UnmarshalTrap ¶ added in v1.10.0
func (x *GoSNMP) UnmarshalTrap(trap []byte, useResponseSecurityParameters bool) (result *SnmpPacket, err error)
UnmarshalTrap unpacks the SNMP Trap.
NOTE: the trap code is currently unreliable when working with snmpv3 - pull requests welcome
func (*GoSNMP) Walk ¶
Walk retrieves a subtree of values using GETNEXT - a request is made for each value, unlike BulkWalk which does this operation in batches. As the tree is walked walkFn is called for each new value. The function immediately returns an error if either there is an underlaying SNMP error (e.g. GetNext fails), or if walkFn returns an error.
type Handler ¶ added in v1.12.0
type Handler interface { // Connect creates and opens a socket. Because UDP is a connectionless // protocol, you won't know if the remote host is responding until you send // packets. And if the host is regularly disappearing and reappearing, you won't // know if you've only done a Connect(). // // For historical reasons (ie this is part of the public API), the method won't // be renamed. Connect() error // ConnectIPv4 connects using IPv4 ConnectIPv4() error // ConnectIPv6 connects using IPv6 ConnectIPv6() error // Get sends an SNMP GET request Get(oids []string) (result *SnmpPacket, err error) // GetBulk sends an SNMP GETBULK request GetBulk(oids []string, nonRepeaters uint8, maxRepetitions uint32) (result *SnmpPacket, err error) // GetNext sends an SNMP GETNEXT request GetNext(oids []string) (result *SnmpPacket, err error) // Walk retrieves a subtree of values using GETNEXT - a request is made for each // value, unlike BulkWalk which does this operation in batches. As the tree is // walked walkFn is called for each new value. The function immediately returns // an error if either there is an underlaying SNMP error (e.g. GetNext fails), // or if walkFn returns an error. Walk(rootOid string, walkFn WalkFunc) error // WalkAll is similar to Walk but returns a filled array of all values rather // than using a callback function to stream results. WalkAll(rootOid string) (results []SnmpPDU, err error) // BulkWalk retrieves a subtree of values using GETBULK. As the tree is // walked walkFn is called for each new value. The function immediately returns // an error if either there is an underlaying SNMP error (e.g. GetBulk fails), // or if walkFn returns an error. BulkWalk(rootOid string, walkFn WalkFunc) error // BulkWalkAll is similar to BulkWalk but returns a filled array of all values // rather than using a callback function to stream results. BulkWalkAll(rootOid string) (results []SnmpPDU, err error) // SendTrap sends a SNMP Trap (v2c/v3 only) // // pdus[0] can a pdu of Type TimeTicks (with the desired uint32 epoch // time). Otherwise a TimeTicks pdu will be prepended, with time set to // now. This mirrors the behaviour of the Net-SNMP command-line tools. // // SendTrap doesn't wait for a return packet from the NMS (Network // Management Station). // // See also Listen() and examples for creating an NMS. SendTrap(trap SnmpTrap) (result *SnmpPacket, err error) // UnmarshalTrap unpacks the SNMP Trap. UnmarshalTrap(trap []byte, useResponseSecurityParameters bool) (result *SnmpPacket, err error) // Set sends an SNMP SET request Set(pdus []SnmpPDU) (result *SnmpPacket, err error) // Check makes checking errors easy, so they actually get a minimal check Check(err error) // Close closes the connection Close() error // Target gets the Target Target() string // SetTarget sets the Target SetTarget(target string) // Port gets the Port Port() uint16 // SetPort sets the Port SetPort(port uint16) // Community gets the Community Community() string // SetCommunity sets the Community SetCommunity(community string) // Version gets the Version Version() SnmpVersion // SetVersion sets the Version SetVersion(version SnmpVersion) // Timeout gets the Timeout Timeout() time.Duration // SetTimeout sets the Timeout SetTimeout(timeout time.Duration) // Retries gets the Retries Retries() int // SetRetries sets the Retries SetRetries(retries int) // GetExponentialTimeout gets the ExponentialTimeout GetExponentialTimeout() bool // SetExponentialTimeout sets the ExponentialTimeout SetExponentialTimeout(value bool) // Logger gets the Logger Logger() Logger // SetLogger sets the Logger SetLogger(logger Logger) // MaxOids gets the MaxOids MaxOids() int // SetMaxOids sets the MaxOids SetMaxOids(maxOids int) // MaxRepetitions gets the maxRepetitions MaxRepetitions() uint32 // SetMaxRepetitions sets the maxRepetitions SetMaxRepetitions(maxRepetitions uint32) // NonRepeaters gets the nonRepeaters NonRepeaters() int // SetNonRepeaters sets the nonRepeaters SetNonRepeaters(nonRepeaters int) // MsgFlags gets the MsgFlags MsgFlags() SnmpV3MsgFlags // SetMsgFlags sets the MsgFlags SetMsgFlags(msgFlags SnmpV3MsgFlags) // SecurityModel gets the SecurityModel SecurityModel() SnmpV3SecurityModel // SetSecurityModel sets the SecurityModel SetSecurityModel(securityModel SnmpV3SecurityModel) // SecurityParameters gets the SecurityParameters SecurityParameters() SnmpV3SecurityParameters // SetSecurityParameters sets the SecurityParameters SetSecurityParameters(securityParameters SnmpV3SecurityParameters) // ContextEngineID gets the ContextEngineID ContextEngineID() string // SetContextEngineID sets the ContextEngineID SetContextEngineID(contextEngineID string) // ContextName gets the ContextName ContextName() string // SetContextName sets the ContextName SetContextName(contextName string) }
Handler is a GoSNMP interface
Handler is provided to assist with testing using mocks
func NewHandler ¶ added in v1.12.0
func NewHandler() Handler
NewHandler creates a new Handler using gosnmp
type Logger ¶ added in v1.2.0
type Logger struct {
// contains filtered or unexported fields
}
func NewLogger ¶ added in v1.35.2
func NewLogger(logger LoggerInterface) Logger
type LoggerInterface ¶ added in v1.35.2
type LoggerInterface interface { Print(v ...interface{}) Printf(format string, v ...interface{}) }
Logger For verbose logging to stdout: gosnmp_logger = NewLogger(log.New(os.Stdout, "", 0))
type PDUType ¶ added in v1.2.0
type PDUType byte
PDUType describes which SNMP Protocol Data Unit is being sent.
const ( Sequence PDUType = 0x30 GetRequest PDUType = 0xa0 GetNextRequest PDUType = 0xa1 GetResponse PDUType = 0xa2 SetRequest PDUType = 0xa3 Trap PDUType = 0xa4 // v1 GetBulkRequest PDUType = 0xa5 InformRequest PDUType = 0xa6 SNMPv2Trap PDUType = 0xa7 // v2c, v3 Report PDUType = 0xa8 // v3 )
The currently supported PDUType's
type SNMPError ¶ added in v1.10.0
type SNMPError uint8
SNMPError is the type for standard SNMP errors.
const ( NoError SNMPError = iota // No error occurred. This code is also used in all request PDUs, since they have no error status to report. TooBig // The size of the Response-PDU would be too large to transport. NoSuchName // The name of a requested object was not found. BadValue // A value in the request didn't match the structure that the recipient of the request had for the object. For example, an object in the request was specified with an incorrect length or type. ReadOnly // An attempt was made to set a variable that has an Access value indicating that it is read-only. GenErr // An error occurred other than one indicated by a more specific error code in this table. NoAccess // Access was denied to the object for security reasons. WrongType // The object type in a variable binding is incorrect for the object. WrongLength // A variable binding specifies a length incorrect for the object. WrongEncoding // A variable binding specifies an encoding incorrect for the object. WrongValue // The value given in a variable binding is not possible for the object. NoCreation // A specified variable does not exist and cannot be created. InconsistentValue // A variable binding specifies a value that could be held by the variable but cannot be assigned to it at this time. CommitFailed // An attempt to set a particular variable failed. UndoFailed // An attempt to set a particular variable as part of a group of variables failed, and the attempt to then undo the setting of other variables was not successful. AuthorizationError // A problem occurred in authorization. NotWritable // The variable cannot be written or created. InconsistentName // The name in a variable binding specifies a variable that does not exist. )
SNMP Errors
type SnmpPDU ¶
type SnmpPDU struct { // The value to be set by the SNMP set, or the value when // sending a trap Value interface{} // Name is an oid in string format eg ".1.3.6.1.4.9.27" Name string // The type of the value eg Integer Type Asn1BER }
SnmpPDU will be used when doing SNMP Set's
type SnmpPacket ¶
type SnmpPacket struct { Version SnmpVersion MsgFlags SnmpV3MsgFlags SecurityModel SnmpV3SecurityModel SecurityParameters SnmpV3SecurityParameters // interface ContextEngineID string ContextName string Community string PDUType PDUType MsgID uint32 RequestID uint32 MsgMaxSize uint32 Error SNMPError ErrorIndex uint8 NonRepeaters uint8 MaxRepetitions uint32 Variables []SnmpPDU Logger Logger // v1 traps have a very different format from v2c and v3 traps. // // These fields are set via the SnmpTrap parameter to SendTrap(). SnmpTrap }
SnmpPacket struct represents the entire SNMP Message or Sequence at the application layer.
func (*SnmpPacket) Check ¶ added in v1.10.0
func (packet *SnmpPacket) Check(err error)
Check makes checking errors easy, so they actually get a minimal check
func (*SnmpPacket) MarshalMsg ¶ added in v1.10.0
func (packet *SnmpPacket) MarshalMsg() ([]byte, error)
MarshalMsg marshalls a snmp packet, ready for sending across the wire
func (*SnmpPacket) SafeString ¶ added in v1.35.3
func (packet *SnmpPacket) SafeString() string
type SnmpTrap ¶ added in v1.10.0
type SnmpTrap struct { Variables []SnmpPDU // If true, the trap is an InformRequest, not a trap. This has no effect on // v1 traps, as Inform is not part of the v1 protocol. IsInform bool // These fields are required for SNMPV1 Trap Headers Enterprise string AgentAddress string GenericTrap int SpecificTrap int Timestamp uint }
SnmpTrap is used to define a SNMP trap, and is passed into SendTrap
type SnmpV3AuthProtocol ¶ added in v1.10.0
type SnmpV3AuthProtocol uint8
SnmpV3AuthProtocol describes the authentication protocol in use by an authenticated SnmpV3 connection.
const ( NoAuth SnmpV3AuthProtocol = 1 MD5 SnmpV3AuthProtocol = 2 SHA SnmpV3AuthProtocol = 3 SHA224 SnmpV3AuthProtocol = 4 SHA256 SnmpV3AuthProtocol = 5 SHA384 SnmpV3AuthProtocol = 6 SHA512 SnmpV3AuthProtocol = 7 )
NoAuth, MD5, and SHA are implemented
func (SnmpV3AuthProtocol) HashType ¶ added in v1.35.2
func (authProtocol SnmpV3AuthProtocol) HashType() crypto.Hash
HashType maps the AuthProtocol's hash type to an actual crypto.Hash object.
func (SnmpV3AuthProtocol) String ¶ added in v1.35.2
func (i SnmpV3AuthProtocol) String() string
type SnmpV3MsgFlags ¶ added in v1.10.0
type SnmpV3MsgFlags uint8
SnmpV3MsgFlags contains various message flags to describe Authentication, Privacy, and whether a report PDU must be sent.
const ( NoAuthNoPriv SnmpV3MsgFlags = 0x0 // No authentication, and no privacy AuthNoPriv SnmpV3MsgFlags = 0x1 // Authentication and no privacy AuthPriv SnmpV3MsgFlags = 0x3 // Authentication and privacy Reportable SnmpV3MsgFlags = 0x4 // Report PDU must be sent. )
Possible values of SnmpV3MsgFlags
func (SnmpV3MsgFlags) String ¶ added in v1.35.3
func (i SnmpV3MsgFlags) String() string
type SnmpV3PrivProtocol ¶ added in v1.10.0
type SnmpV3PrivProtocol uint8
SnmpV3PrivProtocol is the privacy protocol in use by an private SnmpV3 connection.
const ( NoPriv SnmpV3PrivProtocol = 1 DES SnmpV3PrivProtocol = 2 AES SnmpV3PrivProtocol = 3 AES192 SnmpV3PrivProtocol = 4 // Blumenthal-AES192 AES256 SnmpV3PrivProtocol = 5 // Blumenthal-AES256 AES192C SnmpV3PrivProtocol = 6 // Reeder-AES192 AES256C SnmpV3PrivProtocol = 7 // Reeder-AES256 )
NoPriv, DES implemented, AES planned Changed: AES192, AES256, AES192C, AES256C added
func (SnmpV3PrivProtocol) String ¶ added in v1.35.2
func (i SnmpV3PrivProtocol) String() string
type SnmpV3SecurityModel ¶ added in v1.10.0
type SnmpV3SecurityModel uint8
SnmpV3SecurityModel describes the security model used by a SnmpV3 connection
const (
UserSecurityModel SnmpV3SecurityModel = 3
)
UserSecurityModel is the only SnmpV3SecurityModel currently implemented.
func (SnmpV3SecurityModel) String ¶ added in v1.35.3
func (i SnmpV3SecurityModel) String() string
type SnmpV3SecurityParameters ¶ added in v1.10.0
type SnmpV3SecurityParameters interface { Log() Copy() SnmpV3SecurityParameters Description() string SafeString() string // contains filtered or unexported methods }
SnmpV3SecurityParameters is a generic interface type to contain various implementations of SnmpV3SecurityParameters
type SnmpVersion ¶
type SnmpVersion uint8
SnmpVersion 1, 2c and 3 implemented
const ( Version1 SnmpVersion = 0x0 Version2c SnmpVersion = 0x1 Version3 SnmpVersion = 0x3 )
SnmpVersion 1, 2c and 3 implemented
func (SnmpVersion) String ¶
func (s SnmpVersion) String() string
type TrapHandlerFunc ¶ added in v1.35.2
type TrapHandlerFunc func(s *SnmpPacket, u *net.UDPAddr)
TrapHandlerFunc is a callback function type which receives SNMP Trap and Inform packets when they are received. If this callback is null, Trap and Inform PDUs will not be received (Inform responses will still be sent, however). This callback should not modify the contents of the SnmpPacket nor the UDPAddr passed to it, and it should copy out any values it wishes to use instead of retaining references in order to avoid memory fragmentation.
The general effect of received Trap and Inform packets do not differ for the receiver, and the response is handled by the caller of the handler, so there is no need for the application to handle Informs any different than Traps. Nonetheless, the packet's Type field can be examined to determine what type of event this is for e.g. statistics gathering functions, etc.
type TrapListener ¶ added in v1.10.0
type TrapListener struct { sync.Mutex // Params is a reference to the TrapListener's "parent" GoSNMP instance. Params *GoSNMP // OnNewTrap handles incoming Trap and Inform PDUs. OnNewTrap TrapHandlerFunc // contains filtered or unexported fields }
A TrapListener defines parameters for running a SNMP Trap receiver. nil values will be replaced by default values.
func NewTrapListener ¶ added in v1.10.0
func NewTrapListener() *TrapListener
NewTrapListener returns an initialized TrapListener.
NOTE: the trap code is currently unreliable when working with snmpv3 - pull requests welcome
func (*TrapListener) Close ¶ added in v1.10.0
func (t *TrapListener) Close()
Close terminates the listening on TrapListener socket
NOTE: the trap code is currently unreliable when working with snmpv3 - pull requests welcome
func (*TrapListener) Listen ¶ added in v1.10.0
func (t *TrapListener) Listen(addr string) error
Listen listens on the UDP address addr and calls the OnNewTrap function specified in *TrapListener for every trap received.
NOTE: the trap code is currently unreliable when working with snmpv3 - pull requests welcome
func (*TrapListener) Listening ¶ added in v1.10.0
func (t *TrapListener) Listening() <-chan bool
Listening returns a sentinel channel on which one can block until the listener is ready to receive requests.
NOTE: the trap code is currently unreliable when working with snmpv3 - pull requests welcome
func (*TrapListener) SendUDP ¶ added in v1.35.2
func (t *TrapListener) SendUDP(packet *SnmpPacket, addr *net.UDPAddr) error
SendUDP sends a given SnmpPacket to the provided address using the currently opened connection.
type UsmSecurityParameters ¶ added in v1.10.0
type UsmSecurityParameters struct { AuthoritativeEngineID string AuthoritativeEngineBoots uint32 AuthoritativeEngineTime uint32 UserName string AuthenticationParameters string PrivacyParameters []byte AuthenticationProtocol SnmpV3AuthProtocol PrivacyProtocol SnmpV3PrivProtocol AuthenticationPassphrase string PrivacyPassphrase string SecretKey []byte PrivacyKey []byte Logger Logger // contains filtered or unexported fields }
UsmSecurityParameters is an implementation of SnmpV3SecurityParameters for the UserSecurityModel
func (*UsmSecurityParameters) Copy ¶ added in v1.10.0
func (sp *UsmSecurityParameters) Copy() SnmpV3SecurityParameters
Copy method for UsmSecurityParameters used to copy a SnmpV3SecurityParameters without knowing it's implementation
func (*UsmSecurityParameters) Description ¶ added in v1.35.2
func (sp *UsmSecurityParameters) Description() string
Description logs authentication paramater information to the provided GoSNMP Logger
func (*UsmSecurityParameters) Log ¶ added in v1.10.0
func (sp *UsmSecurityParameters) Log()
Log logs security paramater information to the provided GoSNMP Logger
func (*UsmSecurityParameters) SafeString ¶ added in v1.35.3
func (sp *UsmSecurityParameters) SafeString() string
SafeString returns a logging safe (no secrets) string of the UsmSecurityParameters
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
logger
building this code with the gosnmp_nodebug tag will completely disable compiler-level logging.
|
building this code with the gosnmp_nodebug tag will completely disable compiler-level logging. |
walkexample
This program demonstrates BulkWalk.
|
This program demonstrates BulkWalk. |
walktcpexample
This program demonstrates BulkWalk.
|
This program demonstrates BulkWalk. |
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |