Documentation ¶
Index ¶
- Variables
- func SSHConfigPassword(user string, pass string) *ssh.ClientConfig
- func SSHConfigPubKeyAgent(user string) (*ssh.ClientConfig, error)
- func SSHConfigPubKeyFile(user string, file string, passphrase string) (*ssh.ClientConfig, error)
- func SetLog(l Logger)
- type HelloMessage
- type LogLevel
- type Logger
- type NoopLog
- func (l NoopLog) Debugf(format string, v ...interface{})
- func (l NoopLog) Errorf(format string, v ...interface{})
- func (l NoopLog) Fatalf(format string, v ...interface{})
- func (l NoopLog) Infof(format string, v ...interface{})
- func (l NoopLog) Panicf(format string, v ...interface{})
- func (l NoopLog) Warnf(format string, v ...interface{})
- type RPCError
- type RPCMessage
- type RPCMethod
- type RPCReply
- type RawMethod
- type ReadWriteCloser
- type Session
- func DialSSH(target string, config *ssh.ClientConfig) (*Session, error)
- func DialSSHTimeout(target string, config *ssh.ClientConfig, timeout time.Duration) (*Session, error)
- func DialTelnet(target string, username string, password string, vendor VendorIOProc) (*Session, error)
- func NewSSHSession(conn net.Conn, config *ssh.ClientConfig) (*Session, error)
- func NewSession(t Transport) *Session
- type StdLog
- func (l *StdLog) Debugf(format string, v ...interface{})
- func (l *StdLog) Errorf(format string, v ...interface{})
- func (l *StdLog) Fatalf(format string, v ...interface{})
- func (l *StdLog) Infof(format string, v ...interface{})
- func (l *StdLog) Panicf(format string, v ...interface{})
- func (l *StdLog) Warnf(format string, v ...interface{})
- type Transport
- type TransportSSH
- func (t *TransportSSH) Close() error
- func (t *TransportSSH) Dial(target string, config *ssh.ClientConfig) error
- func (t *TransportSSH) Receive() ([]byte, error)
- func (t *TransportSSH) ReceiveHello() (*HelloMessage, error)
- func (t *TransportSSH) Send(data []byte) error
- func (t *TransportSSH) SendHello(hello *HelloMessage) error
- func (t *TransportSSH) WaitForBytes(b []byte) ([]byte, error)
- func (t *TransportSSH) WaitForFunc(f func([]byte) (int, error)) ([]byte, error)
- func (t *TransportSSH) WaitForRegexp(re *regexp.Regexp) ([]byte, [][]byte, error)
- func (t *TransportSSH) WaitForString(s string) (string, error)
- func (t *TransportSSH) Writeln(b []byte) (int, error)
- type TransportTelnet
- func (t *TransportTelnet) Dial(target string, username string, password string, vendor VendorIOProc) error
- func (t *TransportTelnet) Receive() ([]byte, error)
- func (t *TransportTelnet) ReceiveHello() (*HelloMessage, error)
- func (t *TransportTelnet) Send(data []byte) error
- func (t *TransportTelnet) SendHello(hello *HelloMessage) error
- func (t *TransportTelnet) WaitForBytes(b []byte) ([]byte, error)
- func (t *TransportTelnet) WaitForFunc(f func([]byte) (int, error)) ([]byte, error)
- func (t *TransportTelnet) WaitForRegexp(re *regexp.Regexp) ([]byte, [][]byte, error)
- func (t *TransportTelnet) WaitForString(s string) (string, error)
- func (t *TransportTelnet) Writeln(b []byte) (int, error)
- type VendorIOProc
Constants ¶
This section is empty.
Variables ¶
var DefaultCapabilities = []string{
"urn:ietf:params:netconf:base:1.0",
}
DefaultCapabilities sets the default capabilities of the client library
Functions ¶
func SSHConfigPassword ¶
func SSHConfigPassword(user string, pass string) *ssh.ClientConfig
SSHConfigPassword is a convenience function that takes a username and password and returns a new ssh.ClientConfig setup to pass that username and password. Convenience means that HostKey checks are disabled so it's probably less secure
func SSHConfigPubKeyAgent ¶
func SSHConfigPubKeyAgent(user string) (*ssh.ClientConfig, error)
SSHConfigPubKeyAgent is a convience function that takes a username and returns a new ssh.Clientconfig setup to pass credentials received from an ssh agent
func SSHConfigPubKeyFile ¶
SSHConfigPubKeyFile is a convenience function that takes a username, private key and passphrase and returns a new ssh.ClientConfig setup to pass credentials to DialSSH
Types ¶
type HelloMessage ¶
type HelloMessage struct { XMLName xml.Name `xml:"urn:ietf:params:xml:ns:netconf:base:1.0 hello"` Capabilities []string `xml:"capabilities>capability"` SessionID int `xml:"session-id,omitempty"` }
HelloMessage is used when bringing up a NETCONF session
type Logger ¶
type Logger interface { Debugf(string, ...interface{}) Infof(string, ...interface{}) Warnf(string, ...interface{}) Errorf(string, ...interface{}) Fatalf(string, ...interface{}) Panicf(string, ...interface{}) }
Logger defines different logging levels for use by a logger
type NoopLog ¶
type NoopLog struct{}
NoopLog is for use when you don't want to actually log out
type RPCError ¶
type RPCError struct { Type string `xml:"error-type"` Tag string `xml:"error-tag"` Severity string `xml:"error-severity"` Path string `xml:"error-path"` Message string `xml:"error-message"` Info string `xml:",innerxml"` }
RPCError defines an error reply to a RPC request
type RPCMessage ¶
RPCMessage represents an RPC Message to be sent.
func NewRPCMessage ¶
func NewRPCMessage(methods []RPCMethod) *RPCMessage
NewRPCMessage generates a new RPC Message structure with the provided methods
func (*RPCMessage) MarshalXML ¶
func (m *RPCMessage) MarshalXML(e *xml.Encoder, start xml.StartElement) error
MarshalXML marshals the NETCONF XML data
type RPCMethod ¶
type RPCMethod interface {
MarshalMethod() string
}
RPCMethod defines the interface for creating an RPC method.
type RPCReply ¶
type RPCReply struct { XMLName xml.Name `xml:"rpc-reply"` Errors []RPCError `xml:"rpc-error,omitempty"` Data string `xml:",innerxml"` Ok bool `xml:",omitempty"` RawReply string `xml:"-"` }
RPCReply defines a reply to a RPC request
type RawMethod ¶
type RawMethod string
RawMethod defines how a raw text request will be responded to
func MethodGetConfig ¶
MethodGetConfig files a NETCONF get-config source request with the remote host
func MethodLock ¶
MethodLock files a NETCONF lock target request with the remote host
func MethodUnlock ¶
MethodUnlock files a NETCONF unlock target request with the remote host
func (RawMethod) MarshalMethod ¶
MarshalMethod converts the method's output into a string
type ReadWriteCloser ¶
type ReadWriteCloser struct { io.Reader io.WriteCloser }
ReadWriteCloser represents a combined IO Reader and WriteCloser
func NewReadWriteCloser ¶
func NewReadWriteCloser(r io.Reader, w io.WriteCloser) *ReadWriteCloser
NewReadWriteCloser creates a new combined IO Reader and Write Closer from the provided objects
type Session ¶
type Session struct { Transport Transport SessionID int ServerCapabilities []string ErrOnWarning bool }
Session defines the necessary components for a NETCONF session
func DialSSH ¶
func DialSSH(target string, config *ssh.ClientConfig) (*Session, error)
DialSSH creates a new NETCONF session using a SSH Transport. See TransportSSH.Dial for arguments.
func DialSSHTimeout ¶
func DialSSHTimeout(target string, config *ssh.ClientConfig, timeout time.Duration) (*Session, error)
DialSSHTimeout creates a new NETCONF session using a SSH Transport with timeout. See TransportSSH.Dial for arguments. The timeout value is used for both connection establishment and Read/Write operations.
func DialTelnet ¶
func DialTelnet(target string, username string, password string, vendor VendorIOProc) (*Session, error)
DialTelnet dials and returns the usable telnet session.
func NewSSHSession ¶
NewSSHSession creates a new NETCONF session using an existing net.Conn.
func NewSession ¶
NewSession creates a new NETCONF session using the provided transport layer.
type StdLog ¶
StdLog represents the log level and logger for use in logging
type Transport ¶
type Transport interface { Send([]byte) error Receive() ([]byte, error) Close() error ReceiveHello() (*HelloMessage, error) SendHello(*HelloMessage) error }
Transport interface defines what characterisitics make up a NETCONF transport layer object.
type TransportSSH ¶
type TransportSSH struct {
// contains filtered or unexported fields
}
TransportSSH maintains the information necessary to communicate with the remote device over SSH
func (*TransportSSH) Close ¶
func (t *TransportSSH) Close() error
Close closes an existing SSH session and socket if they exist.
func (*TransportSSH) Dial ¶
func (t *TransportSSH) Dial(target string, config *ssh.ClientConfig) error
Dial connects and establishes SSH sessions
target can be an IP address (e.g.) 172.16.1.1 which utlizes the default NETCONF over SSH port of 830. Target can also specify a port with the following format <host>:<port (e.g 172.16.1.1:22)
config takes a ssh.ClientConfig connection. See documentation for go.crypto/ssh for documenation. There is a helper function SSHConfigPassword thar returns a ssh.ClientConfig for simple username/password authentication
func (*TransportSSH) ReceiveHello ¶
func (t *TransportSSH) ReceiveHello() (*HelloMessage, error)
func (*TransportSSH) Send ¶
Sends a well formated NETCONF rpc message as a slice of bytes adding on the nessisary framining messages.
func (*TransportSSH) SendHello ¶
func (t *TransportSSH) SendHello(hello *HelloMessage) error
func (*TransportSSH) WaitForBytes ¶
func (*TransportSSH) WaitForFunc ¶
func (*TransportSSH) WaitForRegexp ¶
func (*TransportSSH) WaitForString ¶
type TransportTelnet ¶
type TransportTelnet struct {
// contains filtered or unexported fields
}
TransportTelnet is used to define what makes up a Telnet Transport layer for NETCONF
func (*TransportTelnet) Dial ¶
func (t *TransportTelnet) Dial(target string, username string, password string, vendor VendorIOProc) error
Dial is used to create a TCP Telnet connection to the remote host returning only an error if it is unable to dial the remote host.
func (*TransportTelnet) ReceiveHello ¶
func (t *TransportTelnet) ReceiveHello() (*HelloMessage, error)
func (*TransportTelnet) Send ¶
Sends a well formated NETCONF rpc message as a slice of bytes adding on the nessisary framining messages.
func (*TransportTelnet) SendHello ¶
func (t *TransportTelnet) SendHello(hello *HelloMessage) error
func (*TransportTelnet) WaitForBytes ¶
func (*TransportTelnet) WaitForFunc ¶
func (*TransportTelnet) WaitForRegexp ¶
func (*TransportTelnet) WaitForString ¶
type VendorIOProc ¶
type VendorIOProc interface { Login(*TransportTelnet, string, string) error StartNetconf(*TransportTelnet) error }
VendorIOProc is the interface used when establishing a telnet NETCONF session