MCPcopy
hub / github.com/osrg/gobgp / GetDefinedSet

Method GetDefinedSet

internal/pkg/table/policy.go:4249–4301  ·  view source on GitHub ↗
(typ DefinedType, name string)

Source from the content-addressed store, hash-verified

4247}
4248
4249func (r *RoutingPolicy) GetDefinedSet(typ DefinedType, name string) (*oc.DefinedSets, error) {
4250 dl, err := func() (DefinedSetList, error) {
4251 r.mu.RLock()
4252 defer r.mu.RUnlock()
4253
4254 set, ok := r.definedSetMap[typ]
4255 if !ok {
4256 return nil, fmt.Errorf("invalid defined-set type: %d", typ)
4257 }
4258
4259 var dl DefinedSetList
4260 for _, s := range set {
4261 dl = append(dl, s)
4262 }
4263 return dl, nil
4264 }()
4265 if err != nil {
4266 return nil, err
4267 }
4268
4269 sort.Sort(dl)
4270
4271 sets := &oc.DefinedSets{
4272 PrefixSets: make([]oc.PrefixSet, 0),
4273 NeighborSets: make([]oc.NeighborSet, 0),
4274 BgpDefinedSets: oc.BgpDefinedSets{
4275 CommunitySets: make([]oc.CommunitySet, 0),
4276 ExtCommunitySets: make([]oc.ExtCommunitySet, 0),
4277 LargeCommunitySets: make([]oc.LargeCommunitySet, 0),
4278 AsPathSets: make([]oc.AsPathSet, 0),
4279 },
4280 }
4281 for _, s := range dl {
4282 if name != "" && s.Name() != name {
4283 continue
4284 }
4285 switch v := s.(type) {
4286 case *PrefixSet:
4287 sets.PrefixSets = append(sets.PrefixSets, *v.ToConfig())
4288 case *NeighborSet:
4289 sets.NeighborSets = append(sets.NeighborSets, *v.ToConfig())
4290 case *CommunitySet:
4291 sets.BgpDefinedSets.CommunitySets = append(sets.BgpDefinedSets.CommunitySets, *v.ToConfig())
4292 case *ExtCommunitySet:
4293 sets.BgpDefinedSets.ExtCommunitySets = append(sets.BgpDefinedSets.ExtCommunitySets, *v.ToConfig())
4294 case *LargeCommunitySet:
4295 sets.BgpDefinedSets.LargeCommunitySets = append(sets.BgpDefinedSets.LargeCommunitySets, *v.ToConfig())
4296 case *AsPathSet:
4297 sets.BgpDefinedSets.AsPathSets = append(sets.BgpDefinedSets.AsPathSets, *v.ToConfig())
4298 }
4299 }
4300 return sets, nil
4301}
4302
4303func (r *RoutingPolicy) AddDefinedSet(s DefinedSet, replace bool) error {
4304 r.mu.Lock()

Callers

nothing calls this directly

Calls 2

NameMethod · 0.65
ToConfigMethod · 0.45

Tested by

no test coverage detected