mirror of
https://github.com/soypat/lneto.git
synced 2026-08-13 19:33:42 +00:00
do not increment ARP connectionID on IP addr update
This commit is contained in:
@@ -35,6 +35,14 @@ func (h *Handler) Protocol() uint64 { return uint64(ethernet.TypeARP) }
|
||||
|
||||
func (h *Handler) ConnectionID() *uint64 { return &h.connID }
|
||||
|
||||
func (h *Handler) UpdateProtoAddr(protoAddr []byte) error {
|
||||
if len(protoAddr) != len(h.ourProtoAddr) {
|
||||
return errors.New("mismatch ARP proto size")
|
||||
}
|
||||
copy(h.ourProtoAddr, protoAddr)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *Handler) Reset(cfg HandlerConfig) error {
|
||||
if len(cfg.HardwareAddr) == 0 || len(cfg.HardwareAddr) > 255 ||
|
||||
len(cfg.ProtocolAddr) == 0 || len(cfg.ProtocolAddr) > 255 {
|
||||
|
||||
@@ -205,7 +205,9 @@ func (s *StackAsync) SetIPAddr(addr netip.Addr) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return s.resetARP()
|
||||
ip := addr.As4()
|
||||
err = s.arp.UpdateProtoAddr(ip[:])
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *StackAsync) Addr() netip.Addr {
|
||||
@@ -456,12 +458,7 @@ func (stack *StackAsync) AssimilateDHCPResults(results *DHCPResults) error {
|
||||
stack.mu.Lock()
|
||||
defer stack.mu.Unlock()
|
||||
if results.AssignedAddr.IsValid() {
|
||||
err := stack.ip.SetAddr(results.AssignedAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Reset ARP handler with new IP address so it can respond to ARP requests.
|
||||
err = stack.resetARP()
|
||||
err := stack.SetIPAddr(results.AssignedAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user