mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-22 20:00:27 +00:00
fix address/prefix code, platform specific parts still need testing
This commit is contained in:
parent
330175889e
commit
e7fca66655
@ -19,17 +19,18 @@ func (a *address) isValid() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (*a)[len(address_prefix)-1]&0x80 == 0
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// isValid returns true if a prefix falls within the range usable by the network.
|
// isValid returns true if a prefix falls within the range usable by the network.
|
||||||
func (s *subnet) isValid() bool {
|
func (s *subnet) isValid() bool {
|
||||||
for idx := range address_prefix {
|
l := len(address_prefix)
|
||||||
|
for idx := range address_prefix[:l-1] {
|
||||||
if (*s)[idx] != address_prefix[idx] {
|
if (*s)[idx] != address_prefix[idx] {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (*s)[len(address_prefix)-1]&0x80 != 0
|
return (*s)[l-1] == address_prefix[l-1]|0x01
|
||||||
}
|
}
|
||||||
|
|
||||||
// address_addrForNodeID takes a *NodeID as an argument and returns an *address.
|
// address_addrForNodeID takes a *NodeID as an argument and returns an *address.
|
||||||
@ -83,7 +84,7 @@ func address_subnetForNodeID(nid *NodeID) *subnet {
|
|||||||
addr := *address_addrForNodeID(nid)
|
addr := *address_addrForNodeID(nid)
|
||||||
var snet subnet
|
var snet subnet
|
||||||
copy(snet[:], addr[:])
|
copy(snet[:], addr[:])
|
||||||
snet[len(address_prefix)-1] |= 0x80
|
snet[len(address_prefix)-1] |= 0x01
|
||||||
return &snet
|
return &snet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ip := net.IP(c.router.addr[:]).String()
|
ip := net.IP(c.router.addr[:]).String()
|
||||||
if err := c.tun.start(nc.IfName, nc.IfTAPMode, fmt.Sprintf("%s/8", ip), nc.IfMTU); err != nil {
|
if err := c.tun.start(nc.IfName, nc.IfTAPMode, fmt.Sprintf("%s/%d", ip, 8*len(address_prefix)-1), nc.IfMTU); err != nil {
|
||||||
c.log.Println("Failed to start TUN/TAP")
|
c.log.Println("Failed to start TUN/TAP")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,7 @@ func (i *icmpv6) handle_ndp(in []byte) ([]byte, error) {
|
|||||||
case source.isValid():
|
case source.isValid():
|
||||||
case snet.isValid():
|
case snet.isValid():
|
||||||
default:
|
default:
|
||||||
return nil, errors.New("Not an NDP for fd00::/8")
|
return nil, errors.New("Not an NDP for 0200::/7")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create our NDP message body response
|
// Create our NDP message body response
|
||||||
|
Loading…
Reference in New Issue
Block a user