diff --git a/goKMS/gnmiHandlers/kms/assignForwardingHandler.go b/goKMS/gnmiHandlers/kms/assignForwardingHandler.go index bc4daedacc12d99e48b11db7179c5f36cc2dc3af..35c4da1b09509eea586c5d07744651fac982fd9e 100644 --- a/goKMS/gnmiHandlers/kms/assignForwardingHandler.go +++ b/goKMS/gnmiHandlers/kms/assignForwardingHandler.go @@ -36,6 +36,28 @@ func (yh *AssignForwardingHandler) Init(config *handler.Config, publishToSubsFun yh.Config = config yh.PublishToSubs = publishToSubsFunc + yh.Config.Lock() + defer yh.Config.Unlock() + + copyCurrentConfig, err := ygot.DeepCopy(yh.Config.Data) + if err != nil { + return err + } + + newConfig, ok := copyCurrentConfig.(*gnmitargetygot.Gnmitarget) + if !ok { + return fmt.Errorf("Wrong type, exptected: %T, got: %T", (*gnmitargetygot.OpenconfigInterfaces_Interfaces)(nil), copyCurrentConfig) + } + + newConfig.GetOrCreateAssignForwarding() + + //validate struct + if err := newConfig.Validate(); err != nil { + return err + } + + yh.Config.Data = newConfig + return nil }