github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/snow/node.go (about)

     1  package snow
     2  
     3  import (
     4  	"encoding/binary"
     5  	"net"
     6  
     7  	"github.com/bingoohuang/gg/pkg/goip"
     8  )
     9  
    10  func defaultIPNodeID() int64 {
    11  	ip, _ := goip.MainIP()
    12  	return ipNodeID(ip)
    13  }
    14  
    15  // nolint gomnd
    16  func ipNodeID(ip string) int64 {
    17  	parsed := net.ParseIP(ip)
    18  	if parsed == nil {
    19  		return 0
    20  	}
    21  
    22  	nodeID := int64(IP2Uint32(parsed) & 0xff)
    23  
    24  	return nodeID
    25  }
    26  
    27  // IP2Uint32 return a uint32 from an IP.
    28  // nolint gomnd
    29  func IP2Uint32(ip net.IP) uint32 {
    30  	if len(ip) == 16 {
    31  		return binary.BigEndian.Uint32(ip[12:16])
    32  	}
    33  
    34  	return binary.BigEndian.Uint32(ip)
    35  }