pkg tunnel, func TunnelClient(string) TunnelClientStub
pkg tunnel, func TunnelServer(TunnelServerMethods) TunnelServerStub
pkg tunnel, method (*TunnelForwardServerCallStub) Init(rpc.StreamServerCall)
pkg tunnel, method (*TunnelForwardServerCallStub) RecvStream() interface {  Advance() bool; Value() []byte; Err() error;}
pkg tunnel, method (*TunnelForwardServerCallStub) SendStream() interface {  Send(item []byte) error;}
pkg tunnel, method (*TunnelShellServerCallStub) Init(rpc.StreamServerCall)
pkg tunnel, method (*TunnelShellServerCallStub) RecvStream() interface {  Advance() bool; Value() ClientShellPacket; Err() error;}
pkg tunnel, method (*TunnelShellServerCallStub) SendStream() interface {  Send(item ServerShellPacket) error;}
pkg tunnel, method (ClientShellPacketEndOfFile) Index() int
pkg tunnel, method (ClientShellPacketEndOfFile) Interface() interface{}
pkg tunnel, method (ClientShellPacketEndOfFile) Name() string
pkg tunnel, method (ClientShellPacketStdin) Index() int
pkg tunnel, method (ClientShellPacketStdin) Interface() interface{}
pkg tunnel, method (ClientShellPacketStdin) Name() string
pkg tunnel, method (ClientShellPacketWinSize) Index() int
pkg tunnel, method (ClientShellPacketWinSize) Interface() interface{}
pkg tunnel, method (ClientShellPacketWinSize) Name() string
pkg tunnel, method (ServerShellPacketStderr) Index() int
pkg tunnel, method (ServerShellPacketStderr) Interface() interface{}
pkg tunnel, method (ServerShellPacketStderr) Name() string
pkg tunnel, method (ServerShellPacketStdout) Index() int
pkg tunnel, method (ServerShellPacketStdout) Interface() interface{}
pkg tunnel, method (ServerShellPacketStdout) Name() string
pkg tunnel, type ClientShellPacket interface, Index() int
pkg tunnel, type ClientShellPacket interface, Interface() interface{}
pkg tunnel, type ClientShellPacket interface, Name() string
pkg tunnel, type ClientShellPacket interface, unexported methods
pkg tunnel, type ClientShellPacketEndOfFile struct
pkg tunnel, type ClientShellPacketEndOfFile struct, Value unused
pkg tunnel, type ClientShellPacketStdin struct
pkg tunnel, type ClientShellPacketStdin struct, Value []byte
pkg tunnel, type ClientShellPacketWinSize struct
pkg tunnel, type ClientShellPacketWinSize struct, Value WindowSize
pkg tunnel, type ServerShellPacket interface, Index() int
pkg tunnel, type ServerShellPacket interface, Interface() interface{}
pkg tunnel, type ServerShellPacket interface, Name() string
pkg tunnel, type ServerShellPacket interface, unexported methods
pkg tunnel, type ServerShellPacketStderr struct
pkg tunnel, type ServerShellPacketStderr struct, Value []byte
pkg tunnel, type ServerShellPacketStdout struct
pkg tunnel, type ServerShellPacketStdout struct, Value []byte
pkg tunnel, type ShellOpts struct
pkg tunnel, type ShellOpts struct, Environment []string
pkg tunnel, type ShellOpts struct, UsePty bool
pkg tunnel, type ShellOpts struct, WinSize WindowSize
pkg tunnel, type TunnelClientMethods interface { Forward, Shell }
pkg tunnel, type TunnelClientMethods interface, Forward(*context.T, string, string, ...rpc.CallOpt) (TunnelForwardClientCall, error)
pkg tunnel, type TunnelClientMethods interface, Shell(*context.T, string, ShellOpts, ...rpc.CallOpt) (TunnelShellClientCall, error)
pkg tunnel, type TunnelClientStub interface { Forward, Shell }
pkg tunnel, type TunnelClientStub interface, Forward(*context.T, string, string, ...rpc.CallOpt) (TunnelForwardClientCall, error)
pkg tunnel, type TunnelClientStub interface, Shell(*context.T, string, ShellOpts, ...rpc.CallOpt) (TunnelShellClientCall, error)
pkg tunnel, type TunnelForwardClientCall interface { Finish, RecvStream, SendStream }
pkg tunnel, type TunnelForwardClientCall interface, Finish() error
pkg tunnel, type TunnelForwardClientCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg tunnel, type TunnelForwardClientCall interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
pkg tunnel, type TunnelForwardClientStream interface { RecvStream, SendStream }
pkg tunnel, type TunnelForwardClientStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg tunnel, type TunnelForwardClientStream interface, SendStream() interface {  Send(item []byte) error;; Close() error;}
pkg tunnel, type TunnelForwardServerCall interface { GrantedBlessings, LocalEndpoint, RecvStream, RemoteEndpoint, Security, SendStream, Server, Suffix }
pkg tunnel, type TunnelForwardServerCall interface, GrantedBlessings() security.Blessings
pkg tunnel, type TunnelForwardServerCall interface, LocalEndpoint() naming.Endpoint
pkg tunnel, type TunnelForwardServerCall interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg tunnel, type TunnelForwardServerCall interface, RemoteEndpoint() naming.Endpoint
pkg tunnel, type TunnelForwardServerCall interface, Security() security.Call
pkg tunnel, type TunnelForwardServerCall interface, SendStream() interface {  Send(item []byte) error;}
pkg tunnel, type TunnelForwardServerCall interface, Server() Server
pkg tunnel, type TunnelForwardServerCall interface, Suffix() string
pkg tunnel, type TunnelForwardServerCallStub struct
pkg tunnel, type TunnelForwardServerCallStub struct, embedded rpc.StreamServerCall
pkg tunnel, type TunnelForwardServerStream interface { RecvStream, SendStream }
pkg tunnel, type TunnelForwardServerStream interface, RecvStream() interface {  Advance() bool;; Value() []byte;; Err() error;}
pkg tunnel, type TunnelForwardServerStream interface, SendStream() interface {  Send(item []byte) error;}
pkg tunnel, type TunnelServerMethods interface { Forward, Shell }
pkg tunnel, type TunnelServerMethods interface, Forward(*context.T, TunnelForwardServerCall, string, string) error
pkg tunnel, type TunnelServerMethods interface, Shell(*context.T, TunnelShellServerCall, string, ShellOpts) (int32, error)
pkg tunnel, type TunnelServerStub interface { Describe__, Forward, Shell }
pkg tunnel, type TunnelServerStub interface, Describe__() []rpc.InterfaceDesc
pkg tunnel, type TunnelServerStub interface, Forward(*context.T, *TunnelForwardServerCallStub, string, string) error
pkg tunnel, type TunnelServerStub interface, Shell(*context.T, *TunnelShellServerCallStub, string, ShellOpts) (int32, error)
pkg tunnel, type TunnelServerStubMethods interface { Forward, Shell }
pkg tunnel, type TunnelServerStubMethods interface, Forward(*context.T, *TunnelForwardServerCallStub, string, string) error
pkg tunnel, type TunnelServerStubMethods interface, Shell(*context.T, *TunnelShellServerCallStub, string, ShellOpts) (int32, error)
pkg tunnel, type TunnelShellClientCall interface { Finish, RecvStream, SendStream }
pkg tunnel, type TunnelShellClientCall interface, Finish() (int32, error)
pkg tunnel, type TunnelShellClientCall interface, RecvStream() interface {  Advance() bool;; Value() ServerShellPacket;; Err() error;}
pkg tunnel, type TunnelShellClientCall interface, SendStream() interface {  Send(item ClientShellPacket) error;; Close() error;}
pkg tunnel, type TunnelShellClientStream interface { RecvStream, SendStream }
pkg tunnel, type TunnelShellClientStream interface, RecvStream() interface {  Advance() bool;; Value() ServerShellPacket;; Err() error;}
pkg tunnel, type TunnelShellClientStream interface, SendStream() interface {  Send(item ClientShellPacket) error;; Close() error;}
pkg tunnel, type TunnelShellServerCall interface { GrantedBlessings, LocalEndpoint, RecvStream, RemoteEndpoint, Security, SendStream, Server, Suffix }
pkg tunnel, type TunnelShellServerCall interface, GrantedBlessings() security.Blessings
pkg tunnel, type TunnelShellServerCall interface, LocalEndpoint() naming.Endpoint
pkg tunnel, type TunnelShellServerCall interface, RecvStream() interface {  Advance() bool;; Value() ClientShellPacket;; Err() error;}
pkg tunnel, type TunnelShellServerCall interface, RemoteEndpoint() naming.Endpoint
pkg tunnel, type TunnelShellServerCall interface, Security() security.Call
pkg tunnel, type TunnelShellServerCall interface, SendStream() interface {  Send(item ServerShellPacket) error;}
pkg tunnel, type TunnelShellServerCall interface, Server() Server
pkg tunnel, type TunnelShellServerCall interface, Suffix() string
pkg tunnel, type TunnelShellServerCallStub struct
pkg tunnel, type TunnelShellServerCallStub struct, embedded rpc.StreamServerCall
pkg tunnel, type TunnelShellServerStream interface { RecvStream, SendStream }
pkg tunnel, type TunnelShellServerStream interface, RecvStream() interface {  Advance() bool;; Value() ClientShellPacket;; Err() error;}
pkg tunnel, type TunnelShellServerStream interface, SendStream() interface {  Send(item ServerShellPacket) error;}
pkg tunnel, type WindowSize struct
pkg tunnel, type WindowSize struct, Cols uint16
pkg tunnel, type WindowSize struct, Rows uint16
pkg tunnel, var TunnelDesc rpc.InterfaceDesc
