fix wireguard availability test
This commit is contained in:
parent
2ee2a943a7
commit
40f8eb5b1b
@ -28,6 +28,7 @@ import (
|
|||||||
|
|
||||||
"github.com/rtr7/router7/internal/netconfig"
|
"github.com/rtr7/router7/internal/netconfig"
|
||||||
"github.com/vishvananda/netlink"
|
"github.com/vishvananda/netlink"
|
||||||
|
"github.com/vishvananda/netns"
|
||||||
|
|
||||||
"github.com/andreyvit/diff"
|
"github.com/andreyvit/diff"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
@ -239,19 +240,24 @@ const goldenDhcp6 = `
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
type wgLink struct{}
|
type wgLink struct {
|
||||||
|
ns int
|
||||||
|
}
|
||||||
|
|
||||||
func (w *wgLink) Type() string { return "wireguard" }
|
func (w *wgLink) Type() string { return "wireguard" }
|
||||||
|
|
||||||
func (w *wgLink) Attrs() *netlink.LinkAttrs {
|
func (w *wgLink) Attrs() *netlink.LinkAttrs {
|
||||||
attrs := netlink.NewLinkAttrs()
|
attrs := netlink.NewLinkAttrs()
|
||||||
attrs.Name = "wg5"
|
attrs.Name = "wg5"
|
||||||
|
if w.ns > 0 {
|
||||||
|
attrs.Namespace = netlink.NsFd(w.ns)
|
||||||
|
}
|
||||||
return &attrs
|
return &attrs
|
||||||
}
|
}
|
||||||
|
|
||||||
var wireGuardAvailable = func() bool {
|
var wireGuardAvailable = func() bool {
|
||||||
// The wg tool must also be available for our test to succeed:
|
// The wg tool must also be available for our test to succeed:
|
||||||
if _, err := exec.LookPath("wg"); err == nil {
|
if _, err := exec.LookPath("wg"); err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,7 +271,18 @@ var wireGuardAvailable = func() bool {
|
|||||||
}
|
}
|
||||||
defer exec.Command("ip", "netns", "delete", ns).Run()
|
defer exec.Command("ip", "netns", "delete", ns).Run()
|
||||||
|
|
||||||
return netlink.LinkAdd(&wgLink{}) == nil
|
nsHandle, err := netns.GetFromName(ns)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("GetFromName: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := netlink.LinkAdd(&wgLink{ns: int(nsHandle)}); err != nil {
|
||||||
|
log.Printf("netlink.LinkAdd: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}()
|
}()
|
||||||
|
|
||||||
func TestNetconfig(t *testing.T) {
|
func TestNetconfig(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user