Forráskód Böngészése

eth0切换为管理口模式时,清除之前已判断无法联网的IPV4地址,否则eth0可能会有多个地址

niujiuru 1 napja
szülő
commit
b398028ba9
1 módosított fájl, 19 hozzáadás és 0 törlés
  1. 19 0
      netmgrd/eth0net.go

+ 19 - 0
netmgrd/eth0net.go

@@ -217,6 +217,21 @@ func isEth0CableConnected() (bool, error) {
 	return waitEth0Carrier(2000)
 }
 
+func RemoveOtherIPv4(link netlink.Link, keep *netlink.Addr) error {
+	addrs, err := netlink.AddrList(link, netlink.FAMILY_V4)
+	if err != nil {
+		return err
+	}
+
+	for _, addr := range addrs {
+		if addr.IPNet.String() != keep.IPNet.String() {
+			netlink.AddrDel(link, &addr)
+		}
+	}
+
+	return nil
+}
+
 func SetupEth0ForManagement(cidr string) error {
 	link, err := netlink.LinkByName("eth0")
 	if err != nil {
@@ -236,5 +251,9 @@ func SetupEth0ForManagement(cidr string) error {
 		return err
 	}
 
+	if err = RemoveOtherIPv4(link, addr); err != nil {
+		return err
+	}
+
 	return nil
 }