mirror of
https://github.com/soypat/lneto.git
synced 2026-08-15 12:23:44 +00:00
more API touch ups
This commit is contained in:
@@ -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
@@ -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
@@ -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{}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user