func createDummyInterface(t *testing.T) { if testutils.RunningOnCircleCI() { t.Skipf("Skipping as not supported on CIRCLE CI kernel") } dummy := &netlink.Dummy{ LinkAttrs: netlink.LinkAttrs{ Name: "dummy", }, } err := netlink.LinkAdd(dummy) require.NoError(t, err) dummyLink, err := netlink.LinkByName("dummy") require.NoError(t, err) ip, ipNet, err := net.ParseCIDR("10.1.1.1/24") require.NoError(t, err) ipNet.IP = ip ipAddr := &netlink.Addr{IPNet: ipNet, Label: ""} err = netlink.AddrAdd(dummyLink, ipAddr) require.NoError(t, err) }
func TestService(t *testing.T) { if testutils.RunningOnCircleCI() { t.Skipf("Skipping as not supported on CIRCLE CI kernel") } defer testutils.SetupTestOSContext(t)() i, err := New("") require.NoError(t, err) for _, protocol := range protocols { for _, schedMethod := range schedMethods { var serviceAddress string s := Service{ AddressFamily: nl.FAMILY_V4, SchedName: schedMethod, } switch protocol { case "FWM": s.FWMark = 1234 serviceAddress = fmt.Sprintf("%d", 1234) case "TCP": s.Protocol = syscall.IPPROTO_TCP s.Port = 80 s.Address = net.ParseIP("1.2.3.4") s.Netmask = 0xFFFFFFFF serviceAddress = "1.2.3.4:80" case "UDP": s.Protocol = syscall.IPPROTO_UDP s.Port = 53 s.Address = net.ParseIP("2.3.4.5") serviceAddress = "2.3.4.5:53" } err := i.NewService(&s) assert.NoError(t, err) checkService(t, true, protocol, schedMethod, serviceAddress) var lastMethod string for _, updateSchedMethod := range schedMethods { if updateSchedMethod == schedMethod { continue } s.SchedName = updateSchedMethod err = i.UpdateService(&s) assert.NoError(t, err) checkService(t, true, protocol, updateSchedMethod, serviceAddress) lastMethod = updateSchedMethod } err = i.DelService(&s) checkService(t, false, protocol, lastMethod, serviceAddress) } } }
func TestGetFamily(t *testing.T) { if testutils.RunningOnCircleCI() { t.Skipf("Skipping as not supported on CIRCLE CI kernel") } id, err := getIPVSFamily() require.NoError(t, err) assert.NotEqual(t, 0, id) }
func TestDisableIPv6DAD(t *testing.T) { if testutils.RunningOnCircleCI() { t.Skipf("Skipping as not supported on CIRCLE CI kernel") } defer testutils.SetupTestOSContext(t)() ipv6, _ := types.ParseCIDR("2001:db8::44/64") iface := &nwIface{addressIPv6: ipv6} veth := &netlink.Veth{ LinkAttrs: netlink.LinkAttrs{Name: "sideA"}, PeerName: "sideB", } nlh, err := netlink.NewHandle(syscall.NETLINK_ROUTE) if err != nil { t.Fatal(err) } err = nlh.LinkAdd(veth) if err != nil { t.Fatal(err) } link, err := nlh.LinkByName("sideA") if err != nil { t.Fatal(err) } err = setInterfaceIPv6(nlh, link, iface) if err != nil { t.Fatal(err) } addrList, err := nlh.AddrList(link, nl.FAMILY_V6) if err != nil { t.Fatal(err) } if addrList[0].Flags&syscall.IFA_F_NODAD == 0 { t.Fatalf("Unexpected interface flags: 0x%x. Expected to contain 0x%x", addrList[0].Flags, syscall.IFA_F_NODAD) } }