mirror of
https://github.com/vishvananda/netlink
synced 2025-01-29 02:43:51 +00:00
fe3b5664d2
$ ip -M route add 100 dev eth0 $ ip -M route add 100 as to 200/300 dev eth0 $ ip -M route add 100 nexthop dev eth0 as to 200 \ nexthop dev eth1 as to 300 $ ip route add 10.10.0.0/24 encap mpls 200/300 dev eth0 $ ip route add 10.0.0.0/24 nexthop encap mpls 200 dev eth0 \ nexthop encap mpls 300 dev eth1 Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package netlink
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/vishvananda/netns"
|
|
)
|
|
|
|
type tearDownNetlinkTest func()
|
|
|
|
func skipUnlessRoot(t *testing.T) {
|
|
if os.Getuid() != 0 {
|
|
msg := "Skipped test because it requires root privileges."
|
|
log.Printf(msg)
|
|
t.Skip(msg)
|
|
}
|
|
}
|
|
|
|
func setUpNetlinkTest(t *testing.T) tearDownNetlinkTest {
|
|
skipUnlessRoot(t)
|
|
|
|
// new temporary namespace so we don't pollute the host
|
|
// lock thread since the namespace is thread local
|
|
runtime.LockOSThread()
|
|
var err error
|
|
ns, err := netns.New()
|
|
if err != nil {
|
|
t.Fatal("Failed to create newns", ns)
|
|
}
|
|
|
|
return func() {
|
|
ns.Close()
|
|
runtime.UnlockOSThread()
|
|
}
|
|
}
|
|
|
|
func setUpMPLSNetlinkTest(t *testing.T) tearDownNetlinkTest {
|
|
if _, err := os.Stat("/proc/sys/net/mpls/platform_labels"); err != nil {
|
|
msg := "Skipped test because it requires MPLS support."
|
|
log.Printf(msg)
|
|
t.Skip(msg)
|
|
}
|
|
f := setUpNetlinkTest(t)
|
|
setUpF := func(path, value string) {
|
|
file, err := os.Create(path)
|
|
defer file.Close()
|
|
if err != nil {
|
|
t.Fatalf("Failed to open %s: %s", path, err)
|
|
}
|
|
file.WriteString(value)
|
|
}
|
|
setUpF("/proc/sys/net/mpls/platform_labels", "1024")
|
|
setUpF("/proc/sys/net/mpls/conf/lo/input", "1")
|
|
return f
|
|
}
|