|
@@ -217,6 +217,21 @@ func isEth0CableConnected() (bool, error) {
|
|
|
return waitEth0Carrier(2000)
|
|
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 {
|
|
func SetupEth0ForManagement(cidr string) error {
|
|
|
link, err := netlink.LinkByName("eth0")
|
|
link, err := netlink.LinkByName("eth0")
|
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -236,5 +251,9 @@ func SetupEth0ForManagement(cidr string) error {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if err = RemoveOtherIPv4(link, addr); err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|