mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 11:15:07 +03:00 
			
		
		
		
	fix address/prefix code, platform specific parts still need testing
This commit is contained in:
		
							parent
							
								
									330175889e
								
							
						
					
					
						commit
						e7fca66655
					
				
					 3 changed files with 7 additions and 6 deletions
				
			
		| 
						 | 
					@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue