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
¶
Click to show internal directories.
Click to hide internal directories.