mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-07 04:20:12 +02:00
chore(all): replace netlink library for more flexibility (#3107)
This commit is contained in:
@@ -1,3 +1,53 @@
|
||||
package wireguard
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"net/netip"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/netlink"
|
||||
)
|
||||
|
||||
func ptrTo[T any](x T) *T { return &x }
|
||||
|
||||
var rng = rand.New(rand.NewChaCha8([32]byte{})) //nolint:gosec,gochecknoglobals
|
||||
|
||||
func makeLinkName() string {
|
||||
const alphabet = "abcdefghijklmnopqrstuvwxyz"
|
||||
b := make([]byte, 8)
|
||||
for i := range b {
|
||||
b[i] = alphabet[rng.IntN(len(alphabet))]
|
||||
}
|
||||
return "test" + string(b)
|
||||
}
|
||||
|
||||
func rulesAreEqual(a, b netlink.Rule) bool {
|
||||
return ipPrefixesAreEqual(a.Src, b.Src) &&
|
||||
ipPrefixesAreEqual(a.Dst, b.Dst) &&
|
||||
ptrsEqual(a.Priority, b.Priority) &&
|
||||
a.Table == b.Table &&
|
||||
a.Family == b.Family &&
|
||||
a.Flags == b.Flags &&
|
||||
a.Action == b.Action &&
|
||||
ptrsEqual(a.Mark, b.Mark)
|
||||
}
|
||||
|
||||
func ipPrefixesAreEqual(a, b netip.Prefix) bool {
|
||||
if !a.IsValid() && !b.IsValid() {
|
||||
return true
|
||||
}
|
||||
if !a.IsValid() || !b.IsValid() {
|
||||
return false
|
||||
}
|
||||
return a.Bits() == b.Bits() &&
|
||||
a.Addr().Compare(b.Addr()) == 0
|
||||
}
|
||||
|
||||
func ptrsEqual(a, b *uint32) bool {
|
||||
if a == nil && b == nil {
|
||||
return true
|
||||
}
|
||||
if a == nil || b == nil {
|
||||
return false
|
||||
}
|
||||
return *a == *b
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user