Fix txqueuelen being accidentally set to zero

TxQLen was unintentionally set to 0 due to a struct literal.

Signed-off-by: Gudmundur Bjarni Olafsson <gudmundur.bjarni@gmail.com>
This commit is contained in:
Gudmundur Bjarni Olafsson 2024-09-23 13:04:24 +02:00 committed by Casey Callendrello
parent c11ed48733
commit 3a49cff1f6
24 changed files with 155 additions and 155 deletions

View File

@ -32,11 +32,12 @@ var ErrLinkNotFound = errors.New("link not found")
// makeVethPair is called from within the container's network namespace // makeVethPair is called from within the container's network namespace
func makeVethPair(name, peer string, mtu int, mac string, hostNS ns.NetNS) (netlink.Link, error) { func makeVethPair(name, peer string, mtu int, mac string, hostNS ns.NetNS) (netlink.Link, error) {
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = name
linkAttrs.MTU = mtu
veth := &netlink.Veth{ veth := &netlink.Veth{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: name,
MTU: mtu,
},
PeerName: peer, PeerName: peer,
PeerNamespace: netlink.NsFd(int(hostNS.Fd())), PeerNamespace: netlink.NsFd(int(hostNS.Fd())),
} }

View File

@ -56,11 +56,12 @@ var _ = Describe("ConfigureIface", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = LINK_NAME
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: LINK_NAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(LINK_NAME) _, err = netlink.LinkByName(LINK_NAME)

View File

@ -13,10 +13,10 @@ The `ns.Do()` method provides **partial** control over network namespaces for yo
```go ```go
err = targetNs.Do(func(hostNs ns.NetNS) error { err = targetNs.Do(func(hostNs ns.NetNS) error {
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = "dummy0"
dummy := &netlink.Dummy{ dummy := &netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: "dummy0",
},
} }
return netlink.LinkAdd(dummy) return netlink.LinkAdd(dummy)
}) })

View File

@ -48,11 +48,11 @@ var _ = Describe("Sysctl tests", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
testIfaceName = fmt.Sprintf("cnitest.%d", rand.Intn(100000)) testIfaceName = fmt.Sprintf("cnitest.%d", rand.Intn(100000))
testLinkAttrs := netlink.NewLinkAttrs()
testLinkAttrs.Name = testIfaceName
testLinkAttrs.Namespace = netlink.NsFd(int(testNs.Fd()))
testIface := &netlink.Dummy{ testIface := &netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: testLinkAttrs,
Name: testIfaceName,
Namespace: netlink.NsFd(int(testNs.Fd())),
},
} }
err = netlink.LinkAdd(testIface) err = netlink.LinkAdd(testIface)

View File

@ -155,11 +155,11 @@ var _ = Describe("DHCP Operations", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = hostVethName
err = netlink.LinkAdd(&netlink.Veth{ err = netlink.LinkAdd(&netlink.Veth{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: hostVethName, PeerName: contVethName,
},
PeerName: contVethName,
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@ -394,11 +394,11 @@ func dhcpSetupOriginalNS() (chan bool, string, ns.NetNS, ns.NetNS, error) {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = hostBridgeName
// Create bridge in the "host" (original) NS // Create bridge in the "host" (original) NS
br = &netlink.Bridge{ br = &netlink.Bridge{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: hostBridgeName,
},
} }
err = netlink.LinkAdd(br) err = netlink.LinkAdd(br)

View File

@ -335,16 +335,11 @@ func bridgeByName(name string) (*netlink.Bridge, error) {
} }
func ensureBridge(brName string, mtu int, promiscMode, vlanFiltering bool) (*netlink.Bridge, error) { func ensureBridge(brName string, mtu int, promiscMode, vlanFiltering bool) (*netlink.Bridge, error) {
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = brName
linkAttrs.MTU = mtu
br := &netlink.Bridge{ br := &netlink.Bridge{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: brName,
MTU: mtu,
// Let kernel use default txqueuelen; leaving it unset
// means 0, and a zero-length TX queue messes up FIFO
// traffic shapers which use TX queue length as the
// default packet limit
TxQLen: -1,
},
} }
if vlanFiltering { if vlanFiltering {
br.VlanFiltering = &vlanFiltering br.VlanFiltering = &vlanFiltering

View File

@ -1890,10 +1890,10 @@ var _ = Describe("bridge Operations", func() {
err := originalNS.Do(func(ns.NetNS) error { err := originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = BRNAME
err := netlink.LinkAdd(&netlink.Bridge{ err := netlink.LinkAdd(&netlink.Bridge{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: BRNAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
link, err := netlink.LinkByName(BRNAME) link, err := netlink.LinkByName(BRNAME)

View File

@ -43,11 +43,12 @@ func parseNetConf(bytes []byte) (*types.NetConf, error) {
func createDummy(ifName string, netns ns.NetNS) (*current.Interface, error) { func createDummy(ifName string, netns ns.NetNS) (*current.Interface, error) {
dummy := &current.Interface{} dummy := &current.Interface{}
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifName
linkAttrs.Namespace = netlink.NsFd(int(netns.Fd()))
dm := &netlink.Dummy{ dm := &netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifName,
Namespace: netlink.NsFd(int(netns.Fd())),
},
} }
if err := netlink.LinkAdd(dm); err != nil { if err := netlink.LinkAdd(dm); err != nil {

View File

@ -180,11 +180,11 @@ var _ = Describe("dummy Operations", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
m, err := netlink.LinkByName(MASTER_NAME) m, err := netlink.LinkByName(MASTER_NAME)

View File

@ -341,10 +341,10 @@ var _ = Describe("base functionality", func() {
// prepare ifname in original namespace // prepare ifname in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -422,10 +422,10 @@ var _ = Describe("base functionality", func() {
// prepare host device in original namespace // prepare host device in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -483,10 +483,10 @@ var _ = Describe("base functionality", func() {
// create another conflict host device with same name "dummy0" // create another conflict host device with same name "dummy0"
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
conflictLink, err = netlink.LinkByName(ifname) conflictLink, err = netlink.LinkByName(ifname)
@ -608,10 +608,10 @@ var _ = Describe("base functionality", func() {
// prepare ifname in original namespace // prepare ifname in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -720,10 +720,10 @@ var _ = Describe("base functionality", func() {
// prepare ifname in original namespace // prepare ifname in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -912,10 +912,10 @@ var _ = Describe("base functionality", func() {
// prepare ifname in original namespace // prepare ifname in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -969,10 +969,10 @@ var _ = Describe("base functionality", func() {
// prepare ifname in original namespace // prepare ifname in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -1093,10 +1093,10 @@ var _ = Describe("base functionality", func() {
// prepare host device in original namespace // prepare host device in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(ifname) origLink, err = netlink.LinkByName(ifname)
@ -1154,10 +1154,10 @@ var _ = Describe("base functionality", func() {
// create another conflict host device with same name "dummy0" // create another conflict host device with same name "dummy0"
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = ifname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: ifname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
conflictLink, err = netlink.LinkByName(ifname) conflictLink, err = netlink.LinkByName(ifname)
@ -1227,10 +1227,10 @@ var _ = Describe("base functionality", func() {
// prepare host device in original namespace // prepare host device in original namespace
_ = originalNS.Do(func(ns.NetNS) error { _ = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = hostIfname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: hostIfname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
origLink, err = netlink.LinkByName(hostIfname) origLink, err = netlink.LinkByName(hostIfname)
@ -1243,10 +1243,10 @@ var _ = Describe("base functionality", func() {
// prepare device in container namespace with same name as host device // prepare device in container namespace with same name as host device
_ = targetNS.Do(func(ns.NetNS) error { _ = targetNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = containerAdditionalIfname
err := netlink.LinkAdd(&netlink.Dummy{ err := netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: containerAdditionalIfname,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
containerLink, err = netlink.LinkByName(containerAdditionalIfname) containerLink, err = netlink.LinkByName(containerAdditionalIfname)

View File

@ -144,14 +144,15 @@ func createIpvlan(conf *NetConf, ifName string, netns ns.NetNS) (*current.Interf
return nil, err return nil, err
} }
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.MTU = conf.MTU
linkAttrs.Name = tmpName
linkAttrs.ParentIndex = m.Attrs().Index
linkAttrs.Namespace = netlink.NsFd(int(netns.Fd()))
mv := &netlink.IPVlan{ mv := &netlink.IPVlan{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
MTU: conf.MTU, Mode: mode,
Name: tmpName,
ParentIndex: m.Attrs().Index,
Namespace: netlink.NsFd(int(netns.Fd())),
},
Mode: mode,
} }
if conf.LinkContNs { if conf.LinkContNs {

View File

@ -281,11 +281,11 @@ var _ = Describe("ipvlan Operations", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(MASTER_NAME) _, err = netlink.LinkByName(MASTER_NAME)
@ -297,11 +297,11 @@ var _ = Describe("ipvlan Operations", func() {
err = targetNS.Do(func(ns.NetNS) error { err = targetNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME_INCONTAINER
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME_INCONTAINER,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(MASTER_NAME_INCONTAINER) _, err = netlink.LinkByName(MASTER_NAME_INCONTAINER)

View File

@ -226,12 +226,11 @@ func createMacvlan(conf *NetConf, ifName string, netns ns.NetNS) (*current.Inter
return nil, err return nil, err
} }
linkAttrs := netlink.LinkAttrs{ linkAttrs := netlink.NewLinkAttrs()
MTU: conf.MTU, linkAttrs.MTU = conf.MTU
Name: tmpName, linkAttrs.Name = tmpName
ParentIndex: m.Attrs().Index, linkAttrs.ParentIndex = m.Attrs().Index
Namespace: netlink.NsFd(int(netns.Fd())), linkAttrs.Namespace = netlink.NsFd(int(netns.Fd()))
}
if conf.Mac != "" { if conf.Mac != "" {
addr, err := net.ParseMAC(conf.Mac) addr, err := net.ParseMAC(conf.Mac)

View File

@ -208,11 +208,11 @@ var _ = Describe("macvlan Operations", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(MASTER_NAME) _, err = netlink.LinkByName(MASTER_NAME)
@ -224,11 +224,11 @@ var _ = Describe("macvlan Operations", func() {
err = targetNS.Do(func(ns.NetNS) error { err = targetNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME_INCONTAINER
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME_INCONTAINER,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(MASTER_NAME_INCONTAINER) _, err = netlink.LinkByName(MASTER_NAME_INCONTAINER)

View File

@ -137,10 +137,9 @@ func createTapWithIptool(tmpName string, mtu int, multiqueue bool, mac string, o
} }
func createLinkWithNetlink(tmpName string, mtu int, nsFd int, multiqueue bool, mac string, owner *uint32, group *uint32) error { func createLinkWithNetlink(tmpName string, mtu int, nsFd int, multiqueue bool, mac string, owner *uint32, group *uint32) error {
linkAttrs := netlink.LinkAttrs{ linkAttrs := netlink.NewLinkAttrs()
Name: tmpName, linkAttrs.Name = tmpName
Namespace: netlink.NsFd(nsFd), linkAttrs.Namespace = netlink.NsFd(nsFd)
}
if mtu != 0 { if mtu != 0 {
linkAttrs.MTU = mtu linkAttrs.MTU = mtu
} }

View File

@ -346,10 +346,10 @@ var _ = Describe("Add, check, remove tap plugin", func() {
Expect( Expect(
targetNS.Do(func(ns.NetNS) error { targetNS.Do(func(ns.NetNS) error {
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = bridgeName
if err := netlink.LinkAdd(&netlink.Bridge{ if err := netlink.LinkAdd(&netlink.Bridge{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: bridgeName,
},
}); err != nil { }); err != nil {
return err return err
} }

View File

@ -119,14 +119,15 @@ func createVlan(conf *NetConf, ifName string, netns ns.NetNS) (*current.Interfac
return nil, err return nil, err
} }
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.MTU = conf.MTU
linkAttrs.Name = tmpName
linkAttrs.ParentIndex = m.Attrs().Index
linkAttrs.Namespace = netlink.NsFd(int(netns.Fd()))
v := &netlink.Vlan{ v := &netlink.Vlan{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
MTU: conf.MTU, VlanId: conf.VlanID,
Name: tmpName,
ParentIndex: m.Attrs().Index,
Namespace: netlink.NsFd(int(netns.Fd())),
},
VlanId: conf.VlanID,
} }
if conf.LinkContNs { if conf.LinkContNs {

View File

@ -187,11 +187,11 @@ var _ = Describe("vlan Operations", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
m, err := netlink.LinkByName(MASTER_NAME) m, err := netlink.LinkByName(MASTER_NAME)
@ -205,11 +205,11 @@ var _ = Describe("vlan Operations", func() {
err = targetNS.Do(func(ns.NetNS) error { err = targetNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = MASTER_NAME_INCONTAINER
// Add master // Add master
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: MASTER_NAME_INCONTAINER,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
m, err := netlink.LinkByName(MASTER_NAME_INCONTAINER) m, err := netlink.LinkByName(MASTER_NAME_INCONTAINER)

View File

@ -108,13 +108,13 @@ func makeTCPClientInNS(netns string, address string, port int, numBytes int) {
} }
func createVeth(hostNs ns.NetNS, hostVethIfName string, containerNs ns.NetNS, containerVethIfName string, hostIP []byte, containerIP []byte, hostIfaceMTU int) { func createVeth(hostNs ns.NetNS, hostVethIfName string, containerNs ns.NetNS, containerVethIfName string, hostIP []byte, containerIP []byte, hostIfaceMTU int) {
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = hostVethIfName
linkAttrs.Flags = net.FlagUp
linkAttrs.MTU = hostIfaceMTU
vethDeviceRequest := &netlink.Veth{ vethDeviceRequest := &netlink.Veth{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: hostVethIfName, PeerName: containerVethIfName,
Flags: net.FlagUp,
MTU: hostIfaceMTU,
},
PeerName: containerVethIfName,
} }
err := hostNs.Do(func(_ ns.NetNS) error { err := hostNs.Do(func(_ ns.NetNS) error {
@ -195,12 +195,12 @@ func createVeth(hostNs ns.NetNS, hostVethIfName string, containerNs ns.NetNS, co
} }
func createVethInOneNs(netNS ns.NetNS, vethName, peerName string) { func createVethInOneNs(netNS ns.NetNS, vethName, peerName string) {
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = vethName
linkAttrs.Flags = net.FlagUp
vethDeviceRequest := &netlink.Veth{ vethDeviceRequest := &netlink.Veth{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: vethName, PeerName: peerName,
Flags: net.FlagUp,
},
PeerName: peerName,
} }
err := netNS.Do(func(_ ns.NetNS) error { err := netNS.Do(func(_ ns.NetNS) error {
@ -224,13 +224,13 @@ func createMacvlan(netNS ns.NetNS, master, macvlanName string) {
return fmt.Errorf("failed to lookup master %q: %v", master, err) return fmt.Errorf("failed to lookup master %q: %v", master, err)
} }
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.MTU = m.Attrs().MTU
linkAttrs.Name = macvlanName
linkAttrs.ParentIndex = m.Attrs().Index
macvlanDeviceRequest := &netlink.Macvlan{ macvlanDeviceRequest := &netlink.Macvlan{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
MTU: m.Attrs().MTU, Mode: netlink.MACVLAN_MODE_BRIDGE,
Name: macvlanName,
ParentIndex: m.Attrs().Index,
},
Mode: netlink.MACVLAN_MODE_BRIDGE,
} }
if err = netlink.LinkAdd(macvlanDeviceRequest); err != nil { if err = netlink.LinkAdd(macvlanDeviceRequest); err != nil {

View File

@ -205,10 +205,10 @@ var _ = Describe("firewall plugin iptables backend", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = IFNAME
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: IFNAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(IFNAME) _, err = netlink.LinkByName(IFNAME)

View File

@ -53,7 +53,9 @@ func setup(targetNs ns.NetNS, status netStatus) error {
err := targetNs.Do(func(_ ns.NetNS) error { err := targetNs.Do(func(_ ns.NetNS) error {
for _, dev := range status.Devices { for _, dev := range status.Devices {
log.Printf("Adding dev %s\n", dev.Name) log.Printf("Adding dev %s\n", dev.Name)
link := &netlink.Dummy{LinkAttrs: netlink.LinkAttrs{Name: dev.Name}} linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = dev.Name
link := &netlink.Dummy{LinkAttrs: linkAttrs}
err := netlink.LinkAdd(link) err := netlink.LinkAdd(link)
if err != nil { if err != nil {
return err return err

View File

@ -110,10 +110,10 @@ var _ = Describe("tuning plugin", func() {
err = originalNS.Do(func(ns.NetNS) error { err = originalNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = IFNAME
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: IFNAME,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
link, err := netlink.LinkByName(IFNAME) link, err := netlink.LinkByName(IFNAME)

View File

@ -48,11 +48,11 @@ func createVRF(name string, tableID uint32) (*netlink.Vrf, error) {
} }
} }
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = name
vrf := &netlink.Vrf{ vrf := &netlink.Vrf{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: name, Table: tableID,
},
Table: tableID,
} }
err = netlink.LinkAdd(vrf) err = netlink.LinkAdd(vrf)

View File

@ -94,19 +94,19 @@ var _ = Describe("vrf plugin", func() {
err = targetNS.Do(func(ns.NetNS) error { err = targetNS.Do(func(ns.NetNS) error {
defer GinkgoRecover() defer GinkgoRecover()
la0 := netlink.NewLinkAttrs()
la0.Name = IF0Name
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: la0,
Name: IF0Name,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(IF0Name) _, err = netlink.LinkByName(IF0Name)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
la1 := netlink.NewLinkAttrs()
la1.Name = IF1Name
err = netlink.LinkAdd(&netlink.Dummy{ err = netlink.LinkAdd(&netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: la1,
Name: IF1Name,
},
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
_, err = netlink.LinkByName(IF1Name) _, err = netlink.LinkByName(IF1Name)
@ -437,10 +437,10 @@ var _ = Describe("vrf plugin", func() {
defer GinkgoRecover() defer GinkgoRecover()
l, err := netlink.LinkByName(IF0Name) l, err := netlink.LinkByName(IF0Name)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
linkAttrs := netlink.NewLinkAttrs()
linkAttrs.Name = "testrbridge"
br := &netlink.Bridge{ br := &netlink.Bridge{
LinkAttrs: netlink.LinkAttrs{ LinkAttrs: linkAttrs,
Name: "testrbridge",
},
} }
err = netlink.LinkAdd(br) err = netlink.LinkAdd(br)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())