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 }