@@ -247,9 +247,14 @@ func (p *execClient) ExecutePowershellCommandWithContext(ctx context.Context, co
247
247
248
248
// SetSdnRemoteArpMacAddress sets the regkey for SDNRemoteArpMacAddress needed for multitenancy if hns is enabled
249
249
func SetSdnRemoteArpMacAddress (ctx context.Context ) error {
250
- if err := setSDNRemoteARPRegKey (); err != nil {
250
+ changed , err := setSDNRemoteARPRegKey ()
251
+ if err != nil {
251
252
return err
252
253
}
254
+ if ! changed {
255
+ log .Printf ("SDNRemoteArpMacAddress regKey already set, skipping HNS restart" )
256
+ return nil
257
+ }
253
258
log .Printf ("SDNRemoteArpMacAddress regKey set successfully" )
254
259
if err := restartHNS (ctx ); err != nil {
255
260
return err
@@ -258,26 +263,28 @@ func SetSdnRemoteArpMacAddress(ctx context.Context) error {
258
263
return nil
259
264
}
260
265
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 ) {
262
269
log .Printf ("Setting SDNRemoteArpMacAddress regKey" )
263
270
// open the registry key
264
271
k , err := registry .OpenKey (registry .LOCAL_MACHINE , `SYSTEM\CurrentControlSet\Services\hns\State` , registry .READ | registry .SET_VALUE )
265
272
if err != nil {
266
273
if errors .Is (err , registry .ErrNotExist ) {
267
- return nil
274
+ return false , nil
268
275
}
269
- return errors .Wrap (err , "could not open registry key" )
276
+ return false , errors .Wrap (err , "could not open registry key" )
270
277
}
271
278
defer k .Close ()
272
279
// check the key value
273
280
if v , _ , _ := k .GetStringValue ("SDNRemoteArpMacAddress" ); v == SDNRemoteArpMacAddress {
274
281
log .Printf ("SDNRemoteArpMacAddress regKey already set" )
275
- return nil // already set
282
+ return false , nil // already set
276
283
}
277
284
if 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" )
279
286
}
280
- return nil
287
+ return true , nil
281
288
}
282
289
283
290
func restartHNS (ctx context.Context ) error {
0 commit comments