From f03dea91367c6e49de7df0fbda0fb0d375e57138 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Sat, 30 Mar 2024 20:35:19 +1100 Subject: [PATCH] local seq --- aurp/transport.go | 18 ++++++++++++++++-- peer.go | 3 ++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/aurp/transport.go b/aurp/transport.go index 706aa23..45655d9 100644 --- a/aurp/transport.go +++ b/aurp/transport.go @@ -51,6 +51,20 @@ type Transport struct { LocalSeq, RemoteSeq uint16 } +func (tr *Transport) IncLocalSeq() { + tr.LocalSeq++ + if tr.LocalSeq == 0 { + tr.LocalSeq = 1 + } +} + +func (tr *Transport) IncRemoteSeq() { + tr.RemoteSeq++ + if tr.RemoteSeq == 0 { + tr.RemoteSeq = 1 + } +} + // domainHeader returns a new domain header suitable for sending a packet. func (tr *Transport) domainHeader(pt PacketType) DomainHeader { return DomainHeader{ @@ -111,10 +125,10 @@ func (tr *Transport) NewOpenRspPacket(envFlags RoutingFlag, rateOrErr int16, opt } } -func (tr *Transport) NewRIRspPacket(connID, seq uint16, last RoutingFlag, nets NetworkTuples) *RIRspPacket { +func (tr *Transport) NewRIRspPacket(last RoutingFlag, nets NetworkTuples) *RIRspPacket { return &RIRspPacket{ Header: Header{ - TrHeader: tr.sequenced(connID, seq), + TrHeader: tr.sequenced(tr.RemoteConnID, tr.LocalSeq), CommandCode: CmdCodeRIRsp, Flags: last, }, diff --git a/peer.go b/peer.go index e8696a5..7db24e1 100644 --- a/peer.go +++ b/peer.go @@ -233,7 +233,8 @@ func (p *peer) handle(ctx context.Context) error { Distance: 1, }, } - if _, err := p.send(p.tr.NewRIRspPacket(pkt.ConnectionID, p.tr.LocalSeq, aurp.RoutingFlagLast, nets)); err != nil { + p.tr.LocalSeq = 1 + if _, err := p.send(p.tr.NewRIRspPacket(aurp.RoutingFlagLast, nets)); err != nil { log.Printf("Couldn't send RI-Rsp packet: %v", err) } sstate = ssWaitForRIAck1