more API touch ups

This commit is contained in:
Patricio Whittingslow
2026-05-14 13:15:16 -03:00
parent d010e6a7e9
commit 8efd810610
3 changed files with 37 additions and 3 deletions
+4
View File
@@ -76,6 +76,10 @@ func (client *Client) Configure(cfg ClientConfig) error {
}
return nil
}
func (client *Client) SetAddr6(addr [16]byte) {
client.ourIP = addr
client.Reset()
}
func (client *Client) Protocol() uint64 { return uint64(lneto.IPProtoIPv6ICMP) }
func (client *Client) LocalPort() uint16 { return 0 }
+19 -1
View File
@@ -359,6 +359,24 @@ func (s *StackAsync) Addr4() [4]byte {
return s.ip4.Addr4()
}
func (s *StackAsync) SetAddr6(addr [16]byte) error {
if s.ipv6enabled {
s.mu.Lock()
defer s.mu.Unlock()
return s.stack6.SetAddr6(addr)
}
return lneto.ErrUnsupported
}
func (s *StackAsync) Addr6() [16]byte {
if s.ipv6enabled {
s.mu.Lock()
defer s.mu.Unlock()
return s.stack6.Addr6()
}
return [16]byte{}
}
func (s *StackAsync) SetSubnet4(addr [4]byte, prefixBits uint8) {
s.mu.Lock()
defer s.mu.Unlock()
@@ -405,7 +423,7 @@ func (s *StackAsync) EnableICMP(enabled bool) (err error) {
s.icmp.Abort()
}
if s.ipv6enabled {
if err2 := s.stack6.EnableICMP6(enabled); err2 != nil {
if err2 := s.stack6.EnableICMP6(enabled); err2 != nil && err == nil {
err = err2
}
}
+14 -2
View File
@@ -20,7 +20,7 @@ func DefaultStack6() Stack6 {
type Stack6 interface {
Reset6(cfg *StackConfig) error
Addr6() [16]byte
SetAddr6(addr [16]byte)
SetAddr6(addr [16]byte) error
EnableICMP6(enabled bool) error
Register6(node lneto.StackNode) error
@@ -48,7 +48,12 @@ type stack6 struct {
func (s *stack6) Register6(node lneto.StackNode) error { return s.ip6.Register6(node) }
func (s *stack6) Addr6() [16]byte { return s.ip6.Addr6() }
func (s *stack6) SetAddr6(addr [16]byte) { s.ip6.SetAddr6(addr) }
func (s *stack6) SetAddr6(addr [16]byte) error {
s.ip6.SetAddr6(addr)
s.icmp6.SetAddr6(addr)
s.dropNDPPending()
return nil
}
func (s *stack6) IPv6Stack() lneto.StackNode { return &s.ip6 }
@@ -210,3 +215,10 @@ func (s *stack6) ndpDynamicResolve(raddr [16]byte) ([]byte, error) {
e.macBuf = macBuf
return macBuf, nil
}
func (s *stack6) dropNDPPending() {
for i := range s.ndpPending {
s.ndpPending[i].macBuf = nil
s.ndpPending[i].addr = [16]byte{}
}
}