Skip to content

Commit

Permalink
just snrm retransmits
Browse files Browse the repository at this point in the history
  • Loading branch information
Jan Klaban committed Feb 4, 2025
1 parent 5782cfa commit 6384fca
Showing 1 changed file with 25 additions and 15 deletions.
40 changes: 25 additions & 15 deletions hdlc/hdlc.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,13 @@ type macpacket struct {
}

type Settings struct {
Logical uint16
Physical uint16
Client byte
MaxRcv uint
MaxSnd uint
DontNegotiate bool
Logical uint16
Physical uint16
Client byte
MaxRcv uint
MaxSnd uint
DontNegotiate bool
SnrmRetransmits int
}

func New(transport base.Stream, settings *Settings) (base.Stream, error) {
Expand Down Expand Up @@ -158,14 +159,23 @@ func (w *maclayer) Open() error {
p = append(p, 0x07, 0x04, 0x00, 0x00, 0x00, 0x01, 0x08, 0x04, 0x00, 0x00, 0x00, 0x01)
}

err := w.writepacket(macpacket{control: 0x83, info: p, segmented: false}, true)
if err != nil {
return err
}
// receive and parse snrm response
r, err := w.readpackets()
if err != nil {
return err
var r []macpacket
cnt := w.settings.SnrmRetransmits
for {
err := w.writepacket(macpacket{control: 0x83, info: p, segmented: false}, true)
if err != nil {
return err
}
// receive and parse snrm response
r, err = w.readpackets()
if err == nil {
break
}
if cnt <= 0 {
return err
}
cnt--
w.logf("snrm retransmitting")
}
if len(r) == 0 {
return fmt.Errorf("no packet received, EOF?")
Expand All @@ -177,7 +187,7 @@ func (w *maclayer) Open() error {
if r[0].control != 0x63 {
return fmt.Errorf("invalid snrm answer, expected UA, got %x", r[0].control)
}
err = w.parsesnrmua(r[0].info)
err := w.parsesnrmua(r[0].info)
if err != nil {
return err
}
Expand Down

0 comments on commit 6384fca

Please sign in to comment.