Documentation
¶
Index ¶
Constants ¶
View Source
const ( // ChangeIpPort 6 ChangeIpPort = 6 // ChangeIp 4 ChangeIp = 4 // ChangePort 2 ChangePort = 2 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BehaviorType ¶
type BehaviorType int
BehaviorType nat Behavior Type
const ( // BehaviorTypeUnknown 0 BehaviorTypeUnknown BehaviorType = iota // BehaviorTypeEndpoint 1 BehaviorTypeEndpoint // BehaviorTypeAddr 2 BehaviorTypeAddr // BehaviorTypeAddrAndPort 3 BehaviorTypeAddrAndPort )
type ChangeNotifyParam ¶
ChangeNotifyParam one public addr
type ChangeParam ¶
type ChangeParam struct {
OtherAddr ma.Multiaddr
OtherMasterListenAddr ma.Multiaddr
OtherSlaveListenAddr ma.Multiaddr
OtherMasterNetwork network.Network
OtherSlaveNetwork network.Network
}
ChangeParam two public addr
type Client ¶
type Client interface {
//SetNetwork: save a network use to dial or listen
SetNetwork(network.Network) error
//CheckNatType: send msg to server and recv response to check nat type
CheckNatType(peerId string, clientListenAddr, stunServerAddr ma.Multiaddr) (NATDeviceType, error)
//CheckNatTypeByDomain: send msg to server support domain and recv response to check nat type
CheckNatTypeByDomain(clientListenAddr ma.Multiaddr, peerId, stunServerDomain string) (NATDeviceType, error)
//GetPeerNatType: send msg to server and recv response to get peer nat type
GetPeerNatType(peerId string, clientListenAddr, stunServerAddr ma.Multiaddr) (NATDeviceType, error)
//GetNatType: get nat type last time checked
GetNatType() NATDeviceType
//GetMappingType: get mapping type last time checked
GetMappingType() BehaviorType
//GetFilteringType: get filter type last time checked
GetFilteringType() BehaviorType
}
Client . @Description: is use to check local nat
func NewDefaultStunClient ¶
NewDefaultStunClient .
@Description: new a client @param logger: @return Client: @return error:
type Data ¶
type Data []byte
Data for stun
func (*Data) GetFrom ¶
GetFrom decodes DATA from message.
type HolePunch ¶
type HolePunch interface {
//HolePunchAvailable: calculate a result if punch is available between two nat type
HolePunchAvailable(type1, type2 NATDeviceType) bool
//SetHost: set a host use to punch
SetHost(host host.Host) error
//DirectConnect: try punch
DirectConnect(otherPeerAddr ma.Multiaddr) (network.Conn, error)
}
HolePunch . @Description:
type NATBehavior ¶
type NATBehavior struct {
// NAT MappingType
MappingType BehaviorType
// NAT FilteringType
FilteringType BehaviorType
}
NATBehavior nat MappingType and FilteringType
type NATDeviceType ¶
type NATDeviceType int
NATDeviceType .
const ( // NATTypeUnknown 0 NATTypeUnknown NATDeviceType = iota // NATTypeFullCone 1 NATTypeFullCone // NATTypeRestrictedCone 2 NATTypeRestrictedCone // NATTypePortRestrictedCone 3 NATTypePortRestrictedCone // NATTypeSymmetric 4 NATTypeSymmetric )
type Server ¶
type Server interface {
//SetNetwork: save a network use to dial or listen
SetNetwork(net1, net2 network.Network) error
//Listen: start listen
Listen(addr1, addr2 ma.Multiaddr) error
//local device have two net card and two public address
InitChangeIpLocal(*ChangeParam) error
//other stun server locate another device
InitChangeIpNotify(*ChangeNotifyParam) error
//HandleChangeIpReq: handle change ip req from client
HandleChangeIpReq(ma.Multiaddr, []byte) error
//CloseListen: stop listen and close all conn
CloseListen() error
}
Server . @Description: stun server,help stun client to check its nat type
InitChangeIpLocal: start listen on second public addr InitChangeIpNotify:start server on http serve to handle notify
func NewDefaultStunServer ¶
NewDefaultStunServer .
Source Files
¶
- interface.go
- nattype.go
- stunclient.go
- stunmessage.go
- stunserver.go
- typedefine.go
- udpstunclient.go
- udpstunserver.go
Click to show internal directories.
Click to hide internal directories.