@@ -247,9 +247,14 @@ func (p *execClient) ExecutePowershellCommandWithContext(ctx context.Context, co
247247
248248// SetSdnRemoteArpMacAddress sets the regkey for SDNRemoteArpMacAddress needed for multitenancy if hns is enabled
249249func SetSdnRemoteArpMacAddress (ctx context.Context ) error {
250- if err := setSDNRemoteARPRegKey (); err != nil {
250+ changed , err := setSDNRemoteARPRegKey ()
251+ if err != nil {
251252return err
252253}
254+ if ! changed {
255+ log .Printf ("SDNRemoteArpMacAddress regKey already set, skipping HNS restart" )
256+ return nil
257+ }
253258log .Printf ("SDNRemoteArpMacAddress regKey set successfully" )
254259if err := restartHNS (ctx ); err != nil {
255260return err
@@ -258,26 +263,28 @@ func SetSdnRemoteArpMacAddress(ctx context.Context) error {
258263return nil
259264}
260265
261- func setSDNRemoteARPRegKey () error {
266+ // setSDNRemoteARPRegKey sets the SDNRemoteArpMacAddress registry key
267+ // returns true if the key was changed, false if unchanged
268+ func setSDNRemoteARPRegKey () (bool , error ) {
262269log .Printf ("Setting SDNRemoteArpMacAddress regKey" )
263270// open the registry key
264271k , err := registry .OpenKey (registry .LOCAL_MACHINE , `SYSTEM\CurrentControlSet\Services\hns\State` , registry .READ | registry .SET_VALUE )
265272if err != nil {
266273if errors .Is (err , registry .ErrNotExist ) {
267- return nil
274+ return false , nil
268275}
269- return errors .Wrap (err , "could not open registry key" )
276+ return false , errors .Wrap (err , "could not open registry key" )
270277}
271278defer k .Close ()
272279// check the key value
273280if v , _ , _ := k .GetStringValue ("SDNRemoteArpMacAddress" ); v == SDNRemoteArpMacAddress {
274281log .Printf ("SDNRemoteArpMacAddress regKey already set" )
275- return nil // already set
282+ return false , nil // already set
276283}
277284if err = k .SetStringValue ("SDNRemoteArpMacAddress" , SDNRemoteArpMacAddress ); err != nil {
278- return errors .Wrap (err , "could not set registry key" )
285+ return false , errors .Wrap (err , "could not set registry key" )
279286}
280- return nil
287+ return true , nil
281288}
282289
283290func restartHNS (ctx context.Context ) error {
0 commit comments