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

Method validateCondition

internal/pkg/table/policy.go:4041–4099  ·  view source on GitHub ↗
(v Condition)

Source from the content-addressed store, hash-verified

4039}
4040
4041func (r *RoutingPolicy) validateCondition(v Condition) (err error) {
4042 switch v.Type() {
4043 case CONDITION_PREFIX:
4044 m := r.definedSetMap[DEFINED_TYPE_PREFIX]
4045 if i, ok := m[v.Name()]; !ok {
4046 return fmt.Errorf("not found prefix set %s", v.Name())
4047 } else {
4048 c := v.(*PrefixCondition)
4049 c.set = i.(*PrefixSet)
4050 }
4051 case CONDITION_NEIGHBOR:
4052 m := r.definedSetMap[DEFINED_TYPE_NEIGHBOR]
4053 if i, ok := m[v.Name()]; !ok {
4054 return fmt.Errorf("not found neighbor set %s", v.Name())
4055 } else {
4056 c := v.(*NeighborCondition)
4057 c.set = i.(*NeighborSet)
4058 }
4059 case CONDITION_AS_PATH:
4060 m := r.definedSetMap[DEFINED_TYPE_AS_PATH]
4061 if i, ok := m[v.Name()]; !ok {
4062 return fmt.Errorf("not found as path set %s", v.Name())
4063 } else {
4064 c := v.(*AsPathCondition)
4065 c.set = i.(*AsPathSet)
4066 }
4067 case CONDITION_COMMUNITY:
4068 m := r.definedSetMap[DEFINED_TYPE_COMMUNITY]
4069 if i, ok := m[v.Name()]; !ok {
4070 return fmt.Errorf("not found community set %s", v.Name())
4071 } else {
4072 c := v.(*CommunityCondition)
4073 c.set = i.(*CommunitySet)
4074 }
4075 case CONDITION_EXT_COMMUNITY:
4076 m := r.definedSetMap[DEFINED_TYPE_EXT_COMMUNITY]
4077 if i, ok := m[v.Name()]; !ok {
4078 return fmt.Errorf("not found ext-community set %s", v.Name())
4079 } else {
4080 c := v.(*ExtCommunityCondition)
4081 c.set = i.(*ExtCommunitySet)
4082 }
4083 case CONDITION_LARGE_COMMUNITY:
4084 m := r.definedSetMap[DEFINED_TYPE_LARGE_COMMUNITY]
4085 if i, ok := m[v.Name()]; !ok {
4086 return fmt.Errorf("not found large-community set %s", v.Name())
4087 } else {
4088 c := v.(*LargeCommunityCondition)
4089 c.set = i.(*LargeCommunitySet)
4090 }
4091 case CONDITION_NEXT_HOP:
4092 case CONDITION_AFI_SAFI_IN:
4093 case CONDITION_AS_PATH_LENGTH:
4094 case CONDITION_RPKI:
4095 case CONDITION_LOCAL_PREF_EQ:
4096 case CONDITION_MED_EQ:
4097 }
4098 return nil

Callers 4

reloadMethod · 0.95
AddStatementMethod · 0.95
AddPolicyMethod · 0.95
addPolicyFunction · 0.80

Calls 2

TypeMethod · 0.65
NameMethod · 0.65

Tested by 1

addPolicyFunction · 0.64