@@ -27,11 +27,13 @@ type RouteMapEntry struct {
2727 Action Action `json:"action"`
2828 Order int32 `json:"order"`
2929 SrttItems struct {
30+ Additive AdminSt `json:"additive"`
3031 ItemItems struct {
3132 ItemList gnmiext.List [ExtCommItem , * ExtCommItem ] `json:"Item-list,omitzero"`
3233 } `json:"item-items,omitzero"`
3334 } `json:"srtt-items,omitzero"`
3435 SregcommItems struct {
36+ Additive AdminSt `json:"additive"`
3537 NoCommAttr AdminSt `json:"noCommAttr"`
3638 ItemItems struct {
3739 ItemList gnmiext.List [string , * CommItem ] `json:"Item-list,omitzero"`
@@ -73,7 +75,7 @@ type RouteMapEntry struct {
7375
7476func (e * RouteMapEntry ) Key () int32 { return e .Order }
7577
76- func (e * RouteMapEntry ) SetCommunities (communities []string ) error {
78+ func (e * RouteMapEntry ) SetCommunities (communities []string , operation v1alpha1. CommunityOperation ) error {
7779 for _ , comm := range communities {
7880 c , err := Community (comm )
7981 if err != nil {
@@ -82,17 +84,25 @@ func (e *RouteMapEntry) SetCommunities(communities []string) error {
8284 e .SregcommItems .NoCommAttr = AdminStDisabled
8385 e .SregcommItems .ItemItems .ItemList .Set (& CommItem {Community : c })
8486 }
87+ e .SregcommItems .Additive = AdminStDisabled
88+ if operation == v1alpha1 .CommunityOperationAdd {
89+ e .SregcommItems .Additive = AdminStEnabled
90+ }
8591 return nil
8692}
8793
88- func (e * RouteMapEntry ) SetExtCommunities (communities []string ) error {
94+ func (e * RouteMapEntry ) SetExtCommunities (communities []string , operation v1alpha1. CommunityOperation ) error {
8995 for _ , comm := range communities {
9096 c , err := RouteTarget (comm )
9197 if err != nil {
9298 return err
9399 }
94100 e .SrttItems .ItemItems .ItemList .Set (& ExtCommItem {Community : c , Scope : RtExtComScopeTransitive })
95101 }
102+ e .SrttItems .Additive = AdminStDisabled
103+ if operation == v1alpha1 .CommunityOperationAdd {
104+ e .SrttItems .Additive = AdminStEnabled
105+ }
96106 return nil
97107}
98108
0 commit comments