SYMBOL INDEX (195 symbols across 23 files) FILE: block/block.go constant TypeConnect (line 11) | TypeConnect = iota constant TypeDisconnect (line 12) | TypeDisconnect constant TypeData (line 13) | TypeData constant ShutdownRead (line 15) | ShutdownRead = iota constant ShutdownWrite (line 16) | ShutdownWrite constant ShutdownBoth (line 17) | ShutdownBoth constant HeaderSize (line 19) | HeaderSize = 1 + 4 + 4 + 4 constant DataSize (line 20) | DataSize = 16*1024 - 13 constant MaxSize (line 21) | MaxSize = HeaderSize + DataSize type Block (line 24) | type Block struct method Pack (line 33) | func (block *Block) Pack() []byte { function NewBlockFromReader (line 46) | func NewBlockFromReader(reader io.Reader) (*Block, error) { function NewConnectBlock (line 67) | func NewConnectBlock(connectID uint32, blockID uint32, address string) B... function newDataBlock (line 78) | func newDataBlock(connectID uint32, blockID uint32, data []byte) Block { function NewDataBlocks (line 91) | func NewDataBlocks(connectID uint32, blockID *atomic.Uint32, data []byte... function NewDisconnectBlock (line 104) | func NewDisconnectBlock(connectID uint32, blockID uint32, shutdownType u... FILE: client/client.go type Client (line 15) | type Client struct method Dial (line 27) | func (c *Client) Dial(address string) connection.HalfOpenConn { method ServeForward (line 31) | func (c *Client) ServeForward(listen, dest string) error { function NewClient (line 20) | func NewClient(tunnelNum int, endpoint string, cipher tunnel.Cipher) Cli... function biRelay (line 50) | func biRelay(left, right connection.HalfOpenConn, logger *logger.Logger) { function relay (line 62) | func relay(dst, src connection.HalfOpenConn, wg *sync.WaitGroup, logger ... FILE: cmd/rabbit.go constant ClientMode (line 16) | ClientMode = iota constant ServerMode (line 17) | ServerMode constant DefaultPassword (line 18) | DefaultPassword = "PASSWORD" function parseFlags (line 21) | func parseFlags() (pass bool, mode int, password string, addr string, li... function main (line 86) | func main() { FILE: connection/block_processor.go type blockProcessor (line 14) | type blockProcessor struct method OrderedRelay (line 36) | func (x *blockProcessor) OrderedRelay(connection Connection) { method packData (line 85) | func (x *blockProcessor) packData(data []byte, connectionID uint32) []... method packConnect (line 89) | func (x *blockProcessor) packConnect(address string, connectionID uint... method packDisconnect (line 93) | func (x *blockProcessor) packDisconnect(connectionID uint32, shutdownT... function newBlockProcessor (line 25) | func newBlockProcessor(ctx context.Context, removeFromPool context.Cance... FILE: connection/connection.go type HalfOpenConn (line 11) | type HalfOpenConn interface type CloseWrite (line 17) | type CloseWrite interface type CloseRead (line 21) | type CloseRead interface type Connection (line 25) | type Connection interface type baseConnection (line 40) | type baseConnection struct method Stop (line 50) | func (bc *baseConnection) Stop() { method OrderedRelay (line 55) | func (bc *baseConnection) OrderedRelay(connection Connection) { method GetConnectionID (line 59) | func (bc *baseConnection) GetConnectionID() uint32 { method getRecvQueue (line 63) | func (bc *baseConnection) getRecvQueue() chan block.Block { method getOrderedRecvQueue (line 67) | func (bc *baseConnection) getOrderedRecvQueue() chan block.Block { method RecvBlock (line 71) | func (bc *baseConnection) RecvBlock(blk block.Block) { method SendConnect (line 75) | func (bc *baseConnection) SendConnect(address string) { method SendDisconnect (line 81) | func (bc *baseConnection) SendDisconnect(shutdownType uint8) { method sendData (line 90) | func (bc *baseConnection) sendData(data []byte) { FILE: connection/const.go constant OrderedRecvQueueSize (line 4) | OrderedRecvQueueSize = 24 constant RecvQueueSize (line 5) | RecvQueueSize = 24 constant OutboundRecvBuffer (line 6) | OutboundRecvBuffer = 16 * 1024 constant OutboundBlockTimeoutSec (line 7) | OutboundBlockTimeoutSec = 3 constant PacketWaitTimeoutSec (line 8) | PacketWaitTimeoutSec = 7 FILE: connection/inbound_connection.go type InboundConnection (line 17) | type InboundConnection struct method Read (line 50) | func (c *InboundConnection) Read(b []byte) (n int, err error) { method readBlock (line 125) | func (c *InboundConnection) readBlock(blk *block.Block, readN *int, b ... method Write (line 153) | func (c *InboundConnection) Write(b []byte) (n int, err error) { method Close (line 163) | func (c *InboundConnection) Close() error { method CloseRead (line 171) | func (c *InboundConnection) CloseRead() error { method CloseWrite (line 176) | func (c *InboundConnection) CloseWrite() error { method LocalAddr (line 181) | func (c *InboundConnection) LocalAddr() net.Addr { method RemoteAddr (line 186) | func (c *InboundConnection) RemoteAddr() net.Addr { method SetDeadline (line 191) | func (c *InboundConnection) SetDeadline(t time.Time) error { method SetReadDeadline (line 197) | func (c *InboundConnection) SetReadDeadline(t time.Time) error { method SetWriteDeadline (line 202) | func (c *InboundConnection) SetWriteDeadline(t time.Time) error { function NewInboundConnection (line 28) | func NewInboundConnection(sendQueue chan<- block.Block, ctx context.Cont... FILE: connection/outbound_connection.go type OutboundConnection (line 15) | type OutboundConnection struct method closeThenCancelWithOnceSend (line 40) | func (oc *OutboundConnection) closeThenCancelWithOnceSend() { method closeThenCancel (line 48) | func (oc *OutboundConnection) closeThenCancel() { method RecvRelay (line 54) | func (oc *OutboundConnection) RecvRelay() { method SendRelay (line 94) | func (oc *OutboundConnection) SendRelay() { method RecvBlock (line 131) | func (oc *OutboundConnection) RecvBlock(blk block.Block) { method connect (line 139) | func (oc *OutboundConnection) connect(address string) { function NewOutboundConnection (line 22) | func NewOutboundConnection(connectionID uint32, sendQueue chan<- block.B... FILE: connection/ring_buffer.go type ByteRingBuffer (line 3) | type ByteRingBuffer struct method OverWrite (line 16) | func (rb *ByteRingBuffer) OverWrite(data []byte) { method Read (line 25) | func (rb *ByteRingBuffer) Read(data []byte) int { method Empty (line 35) | func (rb *ByteRingBuffer) Empty() bool { function NewByteRingBuffer (line 9) | func NewByteRingBuffer(size uint32) ByteRingBuffer { FILE: connection_pool/pool.go constant SendQueueSize (line 13) | SendQueueSize = 48 type ConnectionPool (line 16) | type ConnectionPool struct method NewPooledInboundConnection (line 46) | func (cp *ConnectionPool) NewPooledInboundConnection() connection.Conn... method NewPooledOutboundConnection (line 58) | func (cp *ConnectionPool) NewPooledOutboundConnection(connectionID uin... method addConnection (line 69) | func (cp *ConnectionPool) addConnection(conn connection.Connection) { method removeConnection (line 77) | func (cp *ConnectionPool) removeConnection(conn connection.Connection) { method recvRelay (line 87) | func (cp *ConnectionPool) recvRelay() { method sendRelay (line 118) | func (cp *ConnectionPool) sendRelay() { method stopRelay (line 132) | func (cp *ConnectionPool) stopRelay() { function NewConnectionPool (line 28) | func NewConnectionPool(pool *tunnel_pool.TunnelPool, acceptNewConnection... FILE: logger/logger.go constant LogLevelOff (line 9) | LogLevelOff = iota constant LogLevelFatal (line 10) | LogLevelFatal constant LogLevelError (line 11) | LogLevelError constant LogLevelWarn (line 12) | LogLevelWarn constant LogLevelInfo (line 13) | LogLevelInfo constant LogLevelDebug (line 14) | LogLevelDebug type Logger (line 19) | type Logger struct method Debugln (line 31) | func (l *Logger) Debugln(v string) { method Debugf (line 37) | func (l *Logger) Debugf(format string, v ...interface{}) { method Infoln (line 43) | func (l *Logger) Infoln(v string) { method Infof (line 49) | func (l *Logger) Infof(format string, v ...interface{}) { method Warnln (line 55) | func (l *Logger) Warnln(v string) { method Warnf (line 61) | func (l *Logger) Warnf(format string, v ...interface{}) { method Errorln (line 67) | func (l *Logger) Errorln(v string) { method Errorf (line 73) | func (l *Logger) Errorf(format string, v ...interface{}) { method Fatalln (line 79) | func (l *Logger) Fatalln(v string) { method Fatalf (line 85) | func (l *Logger) Fatalf(format string, v ...interface{}) { function NewLogger (line 24) | func NewLogger(prefix string) *Logger { FILE: peer/client.go type ClientPeer (line 12) | type ClientPeer struct method Dial (line 42) | func (cp *ClientPeer) Dial(address string) connection.Connection { function NewClientPeer (line 16) | func NewClientPeer(tunnelNum int, endpoint string, cipher tunnel.Cipher)... function newClientPeerWithID (line 24) | func newClientPeerWithID(peerID uint32, tunnelNum int, endpoint string, ... FILE: peer/peer.go type Peer (line 13) | type Peer struct method Stop (line 21) | func (p *Peer) Stop() { function initRand (line 25) | func initRand() error { FILE: peer/peer_group.go type PeerGroup (line 12) | type PeerGroup struct method AddTunnel (line 31) | func (pg *PeerGroup) AddTunnel(tunnel *tunnel_pool.Tunnel) error { method AddTunnelFromConn (line 56) | func (pg *PeerGroup) AddTunnelFromConn(conn net.Conn) error { method RemovePeer (line 65) | func (pg *PeerGroup) RemovePeer(peerID uint32) { function NewPeerGroup (line 19) | func NewPeerGroup(cipher tunnel.Cipher) PeerGroup { FILE: peer/server.go type ServerPeer (line 9) | type ServerPeer struct function NewServerPeerWithID (line 13) | func NewServerPeerWithID(peerID uint32, peerContext context.Context, rem... FILE: server/server.go type Server (line 10) | type Server struct method Serve (line 22) | func (s *Server) Serve(address string) error { function NewServer (line 15) | func NewServer(cipher tunnel.Cipher) Server { FILE: tunnel/aead.go constant aeadAes128Gcm (line 14) | aeadAes128Gcm = "AEAD_AES_128_GCM" constant aeadAes192Gcm (line 15) | aeadAes192Gcm = "AEAD_AES_192_GCM" constant aeadAes256Gcm (line 16) | aeadAes256Gcm = "AEAD_AES_256_GCM" constant aeadChacha20Poly1305 (line 17) | aeadChacha20Poly1305 = "AEAD_CHACHA20_POLY1305" function makeAESGCM (line 31) | func makeAESGCM(key []byte) (cipher.AEAD, error) { function aesGCM (line 41) | func aesGCM(psk []byte) (Cipher, error) { function chacha20Poly1305 (line 52) | func chacha20Poly1305(psk []byte) (Cipher, error) { function NewAEADCipher (line 59) | func NewAEADCipher(name string, key []byte, password string) (Cipher, er... FILE: tunnel/cipher.go type Cipher (line 12) | type Cipher interface type KeySizeError (line 19) | type KeySizeError method Error (line 21) | func (e KeySizeError) Error() string { function hkdfSHA1 (line 25) | func hkdfSHA1(secret, salt, info, outkey []byte) { type metaCipher (line 32) | type metaCipher struct method KeySize (line 37) | func (a *metaCipher) KeySize() int { return len(a.psk) } method SaltSize (line 38) | func (a *metaCipher) SaltSize() int { method Encrypter (line 44) | func (a *metaCipher) Encrypter(salt []byte) (cipher.AEAD, error) { method Decrypter (line 49) | func (a *metaCipher) Decrypter(salt []byte) (cipher.AEAD, error) { function kdf (line 55) | func kdf(password string, keyLen int) []byte { FILE: tunnel/tunnel.go constant payloadSizeMask (line 12) | payloadSizeMask = 0x3FFF type writer (line 14) | type writer struct method Write (line 34) | func (w *writer) Write(b []byte) (int, error) { method ReadFrom (line 42) | func (w *writer) ReadFrom(r io.Reader) (n int64, err error) { function NewWriter (line 22) | func NewWriter(w io.Writer, aead cipher.AEAD) io.Writer { return newWrit... function newWriter (line 24) | func newWriter(w io.Writer, aead cipher.AEAD) *writer { type reader (line 77) | type reader struct method read (line 98) | func (r *reader) read() (int, error) { method Read (line 131) | func (r *reader) Read(b []byte) (int, error) { method WriteTo (line 150) | func (r *reader) WriteTo(w io.Writer) (n int64, err error) { function NewReader (line 86) | func NewReader(r io.Reader, aead cipher.AEAD) io.Reader { return newRead... function newReader (line 88) | func newReader(r io.Reader, aead cipher.AEAD) *reader { function increment (line 185) | func increment(b []byte) { type streamConn (line 194) | type streamConn struct method initReader (line 201) | func (c *streamConn) initReader() error { method Read (line 216) | func (c *streamConn) Read(b []byte) (int, error) { method WriteTo (line 225) | func (c *streamConn) WriteTo(w io.Writer) (int64, error) { method initWriter (line 234) | func (c *streamConn) initWriter() error { method Write (line 251) | func (c *streamConn) Write(b []byte) (int, error) { method ReadFrom (line 260) | func (c *streamConn) ReadFrom(r io.Reader) (int64, error) { function NewEncryptedConn (line 270) | func NewEncryptedConn(c net.Conn, ciph Cipher) net.Conn { FILE: tunnel_pool/const.go constant ErrorWaitSec (line 4) | ErrorWaitSec = 3 constant TunnelBlockTimeoutSec (line 5) | TunnelBlockTimeoutSec = 8 constant EmptyPoolDestroySec (line 6) | EmptyPoolDestroySec = 60 constant SendQueueSize (line 7) | SendQueueSize = 48 constant RecvQueueSize (line 8) | RecvQueueSize = 48 FILE: tunnel_pool/manager.go type Manager (line 13) | type Manager interface type ClientManager (line 18) | type ClientManager struct method DecreaseNotify (line 38) | func (cm *ClientManager) DecreaseNotify(pool *TunnelPool) { method Notify (line 70) | func (cm *ClientManager) Notify(pool *TunnelPool) {} function NewClientManager (line 27) | func NewClientManager(tunnelNum int, endpoint string, peerID uint32, cip... type ServerManager (line 72) | type ServerManager struct method Notify (line 88) | func (sm *ServerManager) Notify(pool *TunnelPool) { method DecreaseNotify (line 110) | func (sm *ServerManager) DecreaseNotify(pool *TunnelPool) {} function NewServerManager (line 80) | func NewServerManager(removePeerFunc context.CancelFunc) ServerManager { FILE: tunnel_pool/pool.go type TunnelPool (line 10) | type TunnelPool struct method AddTunnel (line 42) | func (tp *TunnelPool) AddTunnel(tunnel *Tunnel) { method RemoveTunnel (line 61) | func (tp *TunnelPool) RemoveTunnel(tunnel *Tunnel) { method GetSendQueue (line 72) | func (tp *TunnelPool) GetSendQueue() chan block.Block { method GetRecvQueue (line 76) | func (tp *TunnelPool) GetRecvQueue() chan block.Block { function NewTunnelPool (line 23) | func NewTunnelPool(peerID uint32, manager Manager, peerContext context.C... FILE: tunnel_pool/tunnel.go type Tunnel (line 18) | type Tunnel struct method activeExchangePeerID (line 51) | func (tunnel *Tunnel) activeExchangePeerID() (err error) { method passiveExchangePeerID (line 70) | func (tunnel *Tunnel) passiveExchangePeerID() (err error) { method sendPeerID (line 86) | func (tunnel *Tunnel) sendPeerID(peerID uint32) error { method recvPeerID (line 98) | func (tunnel *Tunnel) recvPeerID() (uint32, error) { method OutboundRelay (line 111) | func (tunnel *Tunnel) OutboundRelay(normalQueue, retryQueue chan block... method packThenSend (line 140) | func (tunnel *Tunnel) packThenSend(blk block.Block, retryQueue chan bl... method InboundRelay (line 161) | func (tunnel *Tunnel) InboundRelay(output chan<- block.Block) { method GetPeerID (line 194) | func (tunnel *Tunnel) GetPeerID() uint32 { method closeThenCancel (line 198) | func (tunnel *Tunnel) closeThenCancel() { function NewActiveTunnel (line 28) | func NewActiveTunnel(conn net.Conn, ciph tunnel.Cipher, peerID uint32) (... function NewPassiveTunnel (line 33) | func NewPassiveTunnel(conn net.Conn, ciph tunnel.Cipher) (Tunnel, error) { function newTunnelWithID (line 39) | func newTunnelWithID(conn net.Conn, ciph tunnel.Cipher, peerID uint32) T...