Skip to content

Commit 72b62ba

Browse files
author
Casey Callendrello
authored
Merge pull request #141 from squeed/missing-mac
pkg/ip: re-fetch the created link to return creation-time parameters
2 parents dd8ff8a + 26dafaa commit 72b62ba

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

pkg/ip/link_linux.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@ func makeVethPair(name, peer string, mtu int) (netlink.Link, error) {
4242
if err := netlink.LinkAdd(veth); err != nil {
4343
return nil, err
4444
}
45+
// Re-fetch the link to get its creation-time parameters, e.g. index and mac
46+
veth2, err := netlink.LinkByName(name)
47+
if err != nil {
48+
netlink.LinkDel(veth) // try and clean up the link if possible.
49+
return nil, err
50+
}
4551

46-
return veth, nil
52+
return veth2, nil
4753
}
4854

4955
func peerExists(name string) bool {

plugins/main/bridge/bridge_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,14 @@ func (tester *testerV03x) cmdAddTest(tc testCase) {
257257

258258
Expect(len(result.Interfaces)).To(Equal(3))
259259
Expect(result.Interfaces[0].Name).To(Equal(BRNAME))
260+
Expect(result.Interfaces[0].Mac).To(HaveLen(17))
261+
262+
Expect(result.Interfaces[1].Name).To(HavePrefix("veth"))
263+
Expect(result.Interfaces[1].Mac).To(HaveLen(17))
264+
260265
Expect(result.Interfaces[2].Name).To(Equal(IFNAME))
266+
Expect(result.Interfaces[2].Mac).To(HaveLen(17)) //mac is random
267+
Expect(result.Interfaces[2].Sandbox).To(Equal(tester.targetNS.Path()))
261268

262269
// Make sure bridge link exists
263270
link, err := netlink.LinkByName(result.Interfaces[0].Name)

plugins/main/ptp/ptp_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,14 @@ var _ = Describe("ptp Operations", func() {
7878
// Make sure ptp link exists in the target namespace
7979
// Then, ping the gateway
8080
seenIPs := 0
81+
82+
wantMac := ""
8183
err = targetNs.Do(func(ns.NetNS) error {
8284
defer GinkgoRecover()
8385

8486
link, err := netlink.LinkByName(IFNAME)
8587
Expect(err).NotTo(HaveOccurred())
86-
Expect(link.Attrs().Name).To(Equal(IFNAME))
88+
wantMac = link.Attrs().HardwareAddr.String()
8789

8890
for _, ipc := range res.IPs {
8991
if *ipc.Interface != 1 {
@@ -105,6 +107,17 @@ var _ = Describe("ptp Operations", func() {
105107

106108
Expect(seenIPs).To(Equal(numIPs))
107109

110+
// make sure the interfaces are correct
111+
Expect(res.Interfaces).To(HaveLen(2))
112+
113+
Expect(res.Interfaces[0].Name).To(HavePrefix("veth"))
114+
Expect(res.Interfaces[0].Mac).To(HaveLen(17))
115+
Expect(res.Interfaces[0].Sandbox).To(BeEmpty())
116+
117+
Expect(res.Interfaces[1].Name).To(Equal(IFNAME))
118+
Expect(res.Interfaces[1].Mac).To(Equal(wantMac))
119+
Expect(res.Interfaces[1].Sandbox).To(Equal(targetNs.Path()))
120+
108121
// Call the plugins with the DEL command, deleting the veth endpoints
109122
err = originalNS.Do(func(ns.NetNS) error {
110123
defer GinkgoRecover()

0 commit comments

Comments
 (0)