Skip to content

Commit f9adc20

Browse files
committed
fix: for existing nic, no need to set the port type to internal (#3243)
Signed-off-by: oilbeater <liumengxinfly@gmail.com>
1 parent e19b5b5 commit f9adc20

File tree

3 files changed

+70
-16
lines changed

3 files changed

+70
-16
lines changed

pkg/daemon/ovs.go

+51-16
Original file line numberDiff line numberDiff line change
@@ -49,29 +49,64 @@ func pingGateway(gw, src string, verbose bool, maxRetry int) (count int, err err
4949
}
5050

5151
func configureGlobalMirror(portName string, mtu int) error {
52-
raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", portName, "--",
53-
"set", "interface", portName, "type=internal", "--",
54-
"clear", "bridge", "br-int", "mirrors", "--",
55-
"--id=@mirror0", "get", "port", portName, "--",
56-
"--id=@m", "create", "mirror", fmt.Sprintf("name=%s", util.MirrorDefaultName), "select_all=true", "output_port=@mirror0", "--",
57-
"add", "bridge", "br-int", "mirrors", "@m")
52+
nicExist, err := linkExists(portName)
5853
if err != nil {
59-
klog.Errorf("failed to configure mirror nic %s %q", portName, raw)
60-
return fmt.Errorf(raw)
54+
return err
6155
}
56+
57+
if !nicExist {
58+
raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", portName, "--",
59+
"set", "interface", portName, "type=internal", "--",
60+
"clear", "bridge", "br-int", "mirrors", "--",
61+
"--id=@mirror0", "get", "port", portName, "--",
62+
"--id=@m", "create", "mirror", fmt.Sprintf("name=%s", util.MirrorDefaultName), "select_all=true", "output_port=@mirror0", "--",
63+
"add", "bridge", "br-int", "mirrors", "@m")
64+
if err != nil {
65+
klog.Errorf("failed to configure mirror nic %s %q", portName, raw)
66+
return fmt.Errorf(raw)
67+
}
68+
} else {
69+
raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", portName, "--",
70+
"clear", "bridge", "br-int", "mirrors", "--",
71+
"--id=@mirror0", "get", "port", portName, "--",
72+
"--id=@m", "create", "mirror", fmt.Sprintf("name=%s", util.MirrorDefaultName), "select_all=true", "output_port=@mirror0", "--",
73+
"add", "bridge", "br-int", "mirrors", "@m")
74+
if err != nil {
75+
klog.Errorf("failed to configure mirror nic %s %q", portName, raw)
76+
return fmt.Errorf(raw)
77+
}
78+
}
79+
6280
return configureMirrorLink(portName, mtu)
6381
}
6482

6583
func configureEmptyMirror(portName string, mtu int) error {
66-
raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", portName, "--",
67-
"set", "interface", portName, "type=internal", "--",
68-
"clear", "bridge", "br-int", "mirrors", "--",
69-
"--id=@mirror0", "get", "port", portName, "--",
70-
"--id=@m", "create", "mirror", fmt.Sprintf("name=%s", util.MirrorDefaultName), "output_port=@mirror0", "--",
71-
"add", "bridge", "br-int", "mirrors", "@m")
84+
nicExist, err := linkExists(portName)
7285
if err != nil {
73-
klog.Errorf("failed to configure mirror nic %s %q", portName, raw)
74-
return fmt.Errorf(raw)
86+
return err
87+
}
88+
89+
if !nicExist {
90+
raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", portName, "--",
91+
"set", "interface", portName, "type=internal", "--",
92+
"clear", "bridge", "br-int", "mirrors", "--",
93+
"--id=@mirror0", "get", "port", portName, "--",
94+
"--id=@m", "create", "mirror", fmt.Sprintf("name=%s", util.MirrorDefaultName), "output_port=@mirror0", "--",
95+
"add", "bridge", "br-int", "mirrors", "@m")
96+
if err != nil {
97+
klog.Errorf("failed to configure mirror nic %s %q", portName, raw)
98+
return fmt.Errorf(raw)
99+
}
100+
} else {
101+
raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", portName, "--",
102+
"clear", "bridge", "br-int", "mirrors", "--",
103+
"--id=@mirror0", "get", "port", portName, "--",
104+
"--id=@m", "create", "mirror", fmt.Sprintf("name=%s", util.MirrorDefaultName), "output_port=@mirror0", "--",
105+
"add", "bridge", "br-int", "mirrors", "@m")
106+
if err != nil {
107+
klog.Errorf("failed to configure mirror nic %s %q", portName, raw)
108+
return fmt.Errorf(raw)
109+
}
75110
}
76111
return configureMirrorLink(portName, mtu)
77112
}

pkg/daemon/ovs_linux.go

+11
Original file line numberDiff line numberDiff line change
@@ -1477,3 +1477,14 @@ func turnOffNicTxChecksum(nicName string) (err error) {
14771477
func getShortSharedDir(uid types.UID, volumeName string) string {
14781478
return filepath.Join(util.DefaultHostVhostuserBaseDir, string(uid), volumeName)
14791479
}
1480+
1481+
func linkExists(name string) (bool, error) {
1482+
_, err := netlink.LinkByName(name)
1483+
if err == nil {
1484+
return true, nil
1485+
} else if _, ok := err.(netlink.LinkNotFoundError); ok {
1486+
return false, nil
1487+
} else {
1488+
return false, err
1489+
}
1490+
}

pkg/daemon/ovs_windows.go

+8
Original file line numberDiff line numberDiff line change
@@ -339,3 +339,11 @@ func getShortSharedDir(uid types.UID, volumeName string) string {
339339
// DPDK is not supported on Windows
340340
return ""
341341
}
342+
343+
func linkExists(name string) (bool, error) {
344+
_, err := util.GetNetAdapter(name, true)
345+
if err != nil {
346+
return false, nil
347+
}
348+
return true, nil
349+
}

0 commit comments

Comments
 (0)