Documentation
¶
Index ¶
- Constants
- func EncodePacketClients(pkt PacketClients) []byte
- func EncodePacketFarPing(pkt PacketFarPing) []byte
- func EncodePacketIPv4(pkt PacketIPv4) []byte
- func IPToUint32(ip net.IP) uint32
- func ReadPacket(pkt *Packet, conn *Conn, client *Client) error
- func Uint32ToIP(intIP uint32) net.IP
- func WritePacket(pkt *Packet, conn *Conn, client *Client) error
- func WriteRawPacket(typ uint8, content []byte, conn *Conn, client *Client) error
- type Client
- func (client *Client) CheckClients()
- func (client *Client) CheckConn()
- func (client *Client) HandleConn(rawConn net.Conn, connInfo string) error
- func (client *Client) HandleFinalIPv4(pkt PacketIPv4) error
- func (client *Client) HandlePacketFarPing(pkt PacketFarPing) error
- func (client *Client) HandlePacketIPv4(pkt PacketIPv4) error
- func (client *Client) HandleTunIPv4(data []byte, pkt *packet.IPv4) error
- func (client *Client) Start() error
- func (client *Client) Stop()
- type ClientConfig
- type Config
- type Conn
- type LatencyPair
- type ListenInfo
- type OtherClient
- type OtherClientInfo
- type OtherClients
- func (c *OtherClients) ClearClients(viaId uint32)
- func (c *OtherClients) IPv4ToId(ipv4 uint32) uint32
- func (c *OtherClients) Init(checkInterval int)
- func (c *OtherClients) UpdateClient(id, ipv4, viaId, latency, latencyAdd uint32)
- func (c *OtherClients) UpdateClientConnInfo(id uint32, connInfo string)
- func (c *OtherClients) UpdateClients(pkt PacketClients, viaId, addLatency uint32)
- func (c *OtherClients) UpdateLatencyAdd(viaId, addLatency uint32)
- type OtherClientsInfo
- type Packet
- type PacketClients
- type PacketClientsOkTypeArr
- type PacketClientsString
- type PacketClientsStringArr
- type PacketClientsUint32
- type PacketClientsUint32Arr
- type PacketFarPing
- type PacketIPv4
- type Peer
- type QueuedPacket
- type TmpKey
- type TmpKeySet
- type Writer
Constants ¶
View Source
const ( FarPingRequest uint32 = 0 FarPingReply uint32 = 1 FarPingCircuit uint32 = 2 )
View Source
const ( GrassPacketIPv4 uint8 = 0 GrassPacketPing uint8 = 1 GrassPacketInfo uint8 = 2 GrassPacketPong uint8 = 3 GrassPacketClients uint8 = 4 GrassPacketFarPing uint8 = 5 GrassPacketExpired uint8 = 255 )
View Source
const MAX_PEER_CONNS = 8
View Source
const PacketMagicNumber uint8 = 114514 % 256
Variables ¶
This section is empty.
Functions ¶
func EncodePacketClients ¶
func EncodePacketClients(pkt PacketClients) []byte
func EncodePacketFarPing ¶
func EncodePacketFarPing(pkt PacketFarPing) []byte
func EncodePacketIPv4 ¶
func EncodePacketIPv4(pkt PacketIPv4) []byte
func IPToUint32 ¶
func Uint32ToIP ¶
Types ¶
type Client ¶
type Client struct { Id uint32 IPv4 uint32 Key []byte Peers map[uint32]*Peer PeerMutex *sync.RWMutex OClients OtherClients LastCheckClients OtherClientsInfo Tun *network.TunHandler Config ClientConfig ConnInfo string KnownConnInfo map[string]uint32 KnownConnInfoMutex *sync.Mutex // contains filtered or unexported fields }
func (*Client) CheckClients ¶
func (client *Client) CheckClients()
func (*Client) HandleConn ¶
func (*Client) HandleFinalIPv4 ¶
func (client *Client) HandleFinalIPv4(pkt PacketIPv4) error
func (*Client) HandlePacketFarPing ¶
func (client *Client) HandlePacketFarPing(pkt PacketFarPing) error
func (*Client) HandlePacketIPv4 ¶
func (client *Client) HandlePacketIPv4(pkt PacketIPv4) error
func (*Client) HandleTunIPv4 ¶
type ClientConfig ¶
type ClientConfig struct { Id uint32 Key []byte InterfaceName string MTU int IPv4 uint32 IPv4Gateway uint32 IPv4Mask uint32 IPv4DNS []uint32 Listen []ListenInfo BootstrapNodes []string CheckClientsInterval int PingInterval int CheckConnInterval int Debug bool ConnectNewPeer bool StartTun bool }
func UnmarshalConfig ¶
func UnmarshalConfig(s []byte) (ClientConfig, error)
type LatencyPair ¶
type ListenInfo ¶
type OtherClient ¶
type OtherClient struct { Id uint32 IPv4 uint32 Latency map[uint32]uint32 // connId->latency LatencyAdd map[uint32]uint32 LatencySorted []LatencyPair LatencyMutex *sync.RWMutex ConnInfo []string ConnInfoStr string }
func (*OtherClient) GetLatency ¶
func (oc *OtherClient) GetLatency() uint32
func (*OtherClient) SortLatency ¶
func (oc *OtherClient) SortLatency()
type OtherClientInfo ¶
type OtherClients ¶
type OtherClients struct { C map[uint32]*OtherClient M *sync.RWMutex IPv4Map map[uint32]uint32 BannedClients *TmpKeySet }
func (*OtherClients) ClearClients ¶
func (c *OtherClients) ClearClients(viaId uint32)
func (*OtherClients) IPv4ToId ¶
func (c *OtherClients) IPv4ToId(ipv4 uint32) uint32
func (*OtherClients) Init ¶
func (c *OtherClients) Init(checkInterval int)
func (*OtherClients) UpdateClient ¶
func (c *OtherClients) UpdateClient(id, ipv4, viaId, latency, latencyAdd uint32)
func (*OtherClients) UpdateClientConnInfo ¶
func (c *OtherClients) UpdateClientConnInfo(id uint32, connInfo string)
func (*OtherClients) UpdateClients ¶
func (c *OtherClients) UpdateClients(pkt PacketClients, viaId, addLatency uint32)
func (*OtherClients) UpdateLatencyAdd ¶
func (c *OtherClients) UpdateLatencyAdd(viaId, addLatency uint32)
type OtherClientsInfo ¶
type OtherClientsInfo map[uint32]OtherClientInfo
type PacketClients ¶
type PacketClients struct { Count uint64 Ids []uint32 ConnInfo PacketClientsStringArr IPv4 PacketClientsUint32Arr Latency PacketClientsUint32Arr }
func DecodePacketClients ¶
func DecodePacketClients(buf []byte) (PacketClients, error)
func GenDiffPacketClients ¶
func GenDiffPacketClients(cur, old OtherClientsInfo) (PacketClients, bool)
type PacketClientsOkTypeArr ¶
type PacketClientsString ¶
type PacketClientsStringArr ¶
type PacketClientsStringArr []PacketClientsString
func (PacketClientsStringArr) GetOk ¶
func (a PacketClientsStringArr) GetOk(n int) bool
func (PacketClientsStringArr) SetOk ¶
func (a PacketClientsStringArr) SetOk(n int)
type PacketClientsUint32 ¶
type PacketClientsUint32Arr ¶
type PacketClientsUint32Arr []PacketClientsUint32
func (PacketClientsUint32Arr) GetOk ¶
func (a PacketClientsUint32Arr) GetOk(n int) bool
func (PacketClientsUint32Arr) SetOk ¶
func (a PacketClientsUint32Arr) SetOk(n int)
type PacketFarPing ¶
func DecodePacketFarPing ¶
func DecodePacketFarPing(buf []byte) (PacketFarPing, error)
type PacketIPv4 ¶
type PacketIPv4 struct { TargetNode uint32 TTL uint8 HistoryNodes []uint32 Data []byte IPPacket *packet.IPv4 }
func DecodePacketIPv4 ¶
func DecodePacketIPv4(buf []byte) (PacketIPv4, error)
type Peer ¶
type Peer struct { Id uint32 Conns []*Conn ConnInfo []string ConnsMutex *sync.RWMutex LastSendClients OtherClientsInfo }
func (*Peer) AvgLatency ¶
type QueuedPacket ¶
type TmpKeySet ¶
func NewTmpKeySet ¶
Source Files
¶
Click to show internal directories.
Click to hide internal directories.