mirror of
https://github.com/soypat/lneto.git
synced 2026-08-19 22:24:03 +00:00
add lock to tcp.Conn; claude Fix ARP handler not responding after DHCP
Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
+11
-2
@@ -135,11 +135,11 @@ func (s *StackAsync) Reset(cfg StackConfig) error {
|
||||
}
|
||||
|
||||
// Now setup stacks.
|
||||
err = s.link.Register(&s.ip) // IPv4 | IPv6
|
||||
err = s.link.Register(&s.arp) // ARP.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = s.link.Register(&s.arp) // ARP.
|
||||
err = s.link.Register(&s.ip) // IPv4 | IPv6
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -232,6 +232,8 @@ func (s *StackAsync) Gateway6() [6]byte {
|
||||
}
|
||||
|
||||
func (s *StackAsync) DialTCP(conn *tcp.Conn, localPort uint16, addrp netip.AddrPort) (err error) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
err = conn.OpenActive(localPort, addrp, tcp.Value(s.Prand32()))
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -245,6 +247,8 @@ func (s *StackAsync) DialTCP(conn *tcp.Conn, localPort uint16, addrp netip.AddrP
|
||||
}
|
||||
|
||||
func (s *StackAsync) ListenTCP(conn *tcp.Conn, localPort uint16) (err error) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
err = conn.OpenListen(localPort, tcp.Value(s.Prand32()))
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -436,6 +440,11 @@ func (stack *StackAsync) AssimilateDHCPResults(results *DHCPResults) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Reset ARP handler with new IP address so it can respond to ARP requests.
|
||||
err = stack.resetARP()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if len(results.DNSServers) > 0 {
|
||||
if !results.DNSServers[0].IsValid() || !results.DNSServers[0].Is4() {
|
||||
|
||||
Reference in New Issue
Block a user