Sending GratuitousArp in case of MAC address update

This change sends gratuitous ARP when MAC address is changed to
let other devices to know the MAC address update.

Signed-off-by: Tomofumi Hayashi <tohayash@redhat.com>
This commit is contained in:
Tomofumi Hayashi 2019-09-05 16:27:54 +09:00
parent 411d060b81
commit 2583a0b4ad

View File

@ -25,6 +25,7 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"github.com/j-keck/arping"
"github.com/vishvananda/netlink" "github.com/vishvananda/netlink"
"github.com/containernetworking/cni/pkg/skel" "github.com/containernetworking/cni/pkg/skel"
@ -179,7 +180,7 @@ func cmdAdd(args *skel.CmdArgs) error {
return err return err
} }
_, err = current.NewResultFromResult(tuningConf.PrevResult) result, err := current.NewResultFromResult(tuningConf.PrevResult)
if err != nil { if err != nil {
return err return err
} }
@ -208,6 +209,13 @@ func cmdAdd(args *skel.CmdArgs) error {
if err = changeMacAddr(args.IfName, tuningConf.Mac); err != nil { if err = changeMacAddr(args.IfName, tuningConf.Mac); err != nil {
return err return err
} }
for _, ipc := range result.IPs {
if ipc.Version == "4" {
_ = arping.GratuitousArpOverIfaceByName(ipc.Address.IP, args.IfName)
}
}
updateResultsMacAddr(*tuningConf, args.IfName, tuningConf.Mac) updateResultsMacAddr(*tuningConf, args.IfName, tuningConf.Mac)
} }