mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-01-13 16:30:33 +00:00
37 lines
948 B
Go
37 lines
948 B
Go
/*
|
|
* Copyright (c)2019 ZeroTier, Inc.
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file in the project's root directory.
|
|
*
|
|
* Change Date: 2023-01-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2.0 of the Apache License.
|
|
*/
|
|
/****/
|
|
|
|
package zerotier
|
|
|
|
import (
|
|
"encoding/base32"
|
|
"net"
|
|
"time"
|
|
"unsafe"
|
|
)
|
|
|
|
var base32StdLowerCase = base32.NewEncoding("abcdefghijklmnopqrstuvwxyz234567")
|
|
|
|
// TimeMs returns the time in milliseconds since epoch.
|
|
func TimeMs() int64 { return int64(time.Now().UnixNano()) / int64(1000000) }
|
|
|
|
// ipNetToKey creates a key that can be used in a map[] from a net.IPNet
|
|
func ipNetToKey(ipn *net.IPNet) (k [3]uint64) {
|
|
if len(ipn.IP) > 0 {
|
|
copy(((*[16]byte)(unsafe.Pointer(&k[0])))[:], ipn.IP)
|
|
}
|
|
ones, bits := ipn.Mask.Size()
|
|
k[2] = (uint64(ones) << 32) | uint64(bits)
|
|
return
|
|
}
|