Dry up creating new AURP peers
This commit is contained in:
parent
e31a79da90
commit
9b4633b745
2 changed files with 21 additions and 23 deletions
25
main.go
25
main.go
|
@ -297,18 +297,7 @@ func main() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
peer := &router.AURPPeer{
|
peer := router.NewAURPPeer(routes, ln, peerStr, raddr, localDI, nil, nextConnID)
|
||||||
Transport: &aurp.Transport{
|
|
||||||
LocalDI: localDI,
|
|
||||||
RemoteDI: aurp.IPDomainIdentifier(raddr.IP),
|
|
||||||
LocalConnID: nextConnID,
|
|
||||||
},
|
|
||||||
UDPConn: ln,
|
|
||||||
ConfiguredAddr: peerStr,
|
|
||||||
RemoteAddr: raddr,
|
|
||||||
ReceiveCh: make(chan aurp.Packet, 1024),
|
|
||||||
RouteTable: routes,
|
|
||||||
}
|
|
||||||
aurp.Inc(&nextConnID)
|
aurp.Inc(&nextConnID)
|
||||||
peersMu.Lock()
|
peersMu.Lock()
|
||||||
peers[udpAddrFromNet(raddr)] = peer
|
peers[udpAddrFromNet(raddr)] = peer
|
||||||
|
@ -404,17 +393,7 @@ func main() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// New peer!
|
// New peer!
|
||||||
pr = &router.AURPPeer{
|
pr = router.NewAURPPeer(routes, ln, "", raddr, localDI, dh.SourceDI, nextConnID)
|
||||||
Transport: &aurp.Transport{
|
|
||||||
LocalDI: localDI,
|
|
||||||
RemoteDI: dh.SourceDI, // platinum rule
|
|
||||||
LocalConnID: nextConnID,
|
|
||||||
},
|
|
||||||
UDPConn: ln,
|
|
||||||
RemoteAddr: raddr,
|
|
||||||
ReceiveCh: make(chan aurp.Packet, 1024),
|
|
||||||
RouteTable: routes,
|
|
||||||
}
|
|
||||||
aurp.Inc(&nextConnID)
|
aurp.Inc(&nextConnID)
|
||||||
peers[ra] = pr
|
peers[ra] = pr
|
||||||
goPeerHandler(pr)
|
goPeerHandler(pr)
|
||||||
|
|
|
@ -129,6 +129,25 @@ type AURPPeer struct {
|
||||||
sendRetries int
|
sendRetries int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewAURPPeer(routes *RouteTable, udpConn *net.UDPConn, peerAddr string, raddr *net.UDPAddr, localDI, remoteDI aurp.DomainIdentifier, connID uint16) *AURPPeer {
|
||||||
|
if remoteDI == nil {
|
||||||
|
remoteDI = aurp.IPDomainIdentifier(raddr.IP)
|
||||||
|
}
|
||||||
|
return &AURPPeer{
|
||||||
|
Transport: &aurp.Transport{
|
||||||
|
LocalDI: localDI,
|
||||||
|
RemoteDI: remoteDI,
|
||||||
|
LocalConnID: connID,
|
||||||
|
},
|
||||||
|
UDPConn: udpConn,
|
||||||
|
ConfiguredAddr: peerAddr,
|
||||||
|
RemoteAddr: raddr,
|
||||||
|
ReceiveCh: make(chan aurp.Packet, 1024),
|
||||||
|
RouteTable: routes,
|
||||||
|
pendingEvents: make(chan aurp.EventTuple, 1024),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (p *AURPPeer) addPendingEvent(ec aurp.EventCode, route *Route) {
|
func (p *AURPPeer) addPendingEvent(ec aurp.EventCode, route *Route) {
|
||||||
// Don't advertise routes to AURP peers to other AURP peers
|
// Don't advertise routes to AURP peers to other AURP peers
|
||||||
if route.AURPPeer != nil {
|
if route.AURPPeer != nil {
|
||||||
|
|
Loading…
Reference in a new issue