Skip to content

Commit

Permalink
[agent] Rework border leaf peering
Browse files Browse the repository at this point in the history
  • Loading branch information
sergeymatov authored and Frostman committed Feb 20, 2024
1 parent 6ecef82 commit 8e5e086
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 15 deletions.
7 changes: 2 additions & 5 deletions pkg/agent/dozer/bcm/plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,8 @@ func planFabricConnections(agent *agentapi.Agent, spec *dozer.Spec) error {
IPv4Unicast: boolPtr(true),
L2VPNEVPN: boolPtr(true),
L2VPNEVPNImportPolicies: []string{ROUTE_MAP_BLOCK_EVPN_DEFAULT_REMOTE},
// TODO: We might later specify dedicated neighbors for this.
L2VPNEVPNAllowOwnAS: boolPtr(true),
}
}
}
Expand Down Expand Up @@ -1707,9 +1709,6 @@ func planVPCs(agent *agentapi.Agent, spec *dozer.Spec) error {
}

if remote {
spec.VRFs[vrf1Name].BGP.L2VPNEVPN.DefaultOriginateIPv4 = boolPtr(true)
spec.VRFs[vrf2Name].BGP.L2VPNEVPN.DefaultOriginateIPv4 = boolPtr(true)

spec.RouteMaps[ROUTE_MAP_BLOCK_EVPN_DEFAULT_REMOTE].Statements[fmt.Sprintf("%d", uint(vni1/100))] = &dozer.SpecRouteMapStatement{
Conditions: dozer.SpecRouteMapConditions{
MatchEVPNVNI: uint32Ptr(vni1),
Expand Down Expand Up @@ -2150,8 +2149,6 @@ func planExternalPeerings(agent *agentapi.Agent, spec *dozer.Spec) error {
Egress: stringPtr(ipnsEgressAccessList(external.IPv4Namespace)),
}

spec.VRFs[vpcVrf].BGP.L2VPNEVPN.DefaultOriginateIPv4 = boolPtr(true)

for _, subnetName := range peering.Permit.VPC.Subnets {
subnet, exists := vpc.Subnets[subnetName]
if !exists {
Expand Down
24 changes: 15 additions & 9 deletions pkg/agent/dozer/bcm/spec_vrf.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,12 +294,6 @@ var specVRFBGPBaseEnforcer = &DefaultValueEnforcer[string, *dozer.SpecVRFBGP]{
AdvertiseDefaultGw: value.L2VPNEVPN.AdvertiseDefaultGw,
},
// TODO extract as we'll not be able to replace it
DefaultOriginate: &oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Global_AfiSafis_AfiSafi_L2VpnEvpn_DefaultOriginate{
Config: &oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Global_AfiSafis_AfiSafi_L2VpnEvpn_DefaultOriginate_Config{
Ipv4: value.L2VPNEVPN.DefaultOriginateIPv4,
},
},
// TODO extract as we'll not be able to replace it
RouteAdvertise: &oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Global_AfiSafis_AfiSafi_L2VpnEvpn_RouteAdvertise{
RouteAdvertiseList: routeAdvertise,
},
Expand Down Expand Up @@ -356,6 +350,15 @@ var specVRFBGPNeighborEnforcer = &DefaultValueEnforcer[string, *dozer.SpecVRFBGP
}
}

var l2VPNEVPNAllowOwnAS *oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Neighbors_Neighbor_AfiSafis_AfiSafi_AllowOwnAs
if value.L2VPNEVPNAllowOwnAS != nil {
l2VPNEVPNAllowOwnAS = &oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Neighbors_Neighbor_AfiSafis_AfiSafi_AllowOwnAs{
Config: &oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Neighbors_Neighbor_AfiSafis_AfiSafi_AllowOwnAs_Config{
Enabled: value.L2VPNEVPNAllowOwnAS,
},
}
}

var l2ApplyPolicy *oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Neighbors_Neighbor_AfiSafis_AfiSafi_ApplyPolicy
if value.L2VPNEVPNImportPolicies != nil {
l2ApplyPolicy = &oc.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol_Bgp_Neighbors_Neighbor_AfiSafis_AfiSafi_ApplyPolicy{
Expand Down Expand Up @@ -393,6 +396,7 @@ var specVRFBGPNeighborEnforcer = &DefaultValueEnforcer[string, *dozer.SpecVRFBGP
Enabled: value.L2VPNEVPN,
},
ApplyPolicy: l2ApplyPolicy,
AllowOwnAs: l2VPNEVPNAllowOwnAS,
},
},
},
Expand Down Expand Up @@ -676,9 +680,6 @@ func unmarshalOCVRFs(ocVal *oc.OpenconfigNetworkInstance_NetworkInstances) (map[
bgp.L2VPNEVPN.AdvertiseAllVNI = l2vpnEVPN.Config.AdvertiseAllVni
bgp.L2VPNEVPN.AdvertiseDefaultGw = l2vpnEVPN.Config.AdvertiseDefaultGw
}
if l2vpnEVPN.DefaultOriginate != nil && l2vpnEVPN.DefaultOriginate.Config != nil {
bgp.L2VPNEVPN.DefaultOriginateIPv4 = l2vpnEVPN.DefaultOriginate.Config.Ipv4
}
if l2vpnEVPN.RouteAdvertise != nil {
for _, route := range l2vpnEVPN.RouteAdvertise.RouteAdvertiseList {
if route.Config != nil && route.Config.AdvertiseAfiSafi == oc.OpenconfigBgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST {
Expand All @@ -703,6 +704,7 @@ func unmarshalOCVRFs(ocVal *oc.OpenconfigNetworkInstance_NetworkInstances) (map[
var ipv4ExportPolicies []string
var l2vpnEVPN *bool
var l2ImportPolicies []string
var l2VPNEVPNAllowOwnAS *bool
if neighbor.AfiSafis != nil && neighbor.AfiSafis.AfiSafi != nil {
ocIPv4Unicast := neighbor.AfiSafis.AfiSafi[oc.OpenconfigBgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST]
if ocIPv4Unicast != nil && ocIPv4Unicast.Config != nil {
Expand All @@ -721,6 +723,9 @@ func unmarshalOCVRFs(ocVal *oc.OpenconfigNetworkInstance_NetworkInstances) (map[
if ocL2VPNEVPN.ApplyPolicy != nil && ocL2VPNEVPN.ApplyPolicy.Config != nil {
l2ImportPolicies = ocL2VPNEVPN.ApplyPolicy.Config.ImportPolicy
}
if ocL2VPNEVPN.AllowOwnAs != nil && ocL2VPNEVPN.AllowOwnAs.Config != nil {
l2VPNEVPNAllowOwnAS = ocL2VPNEVPN.AllowOwnAs.Config.Enabled
}
}
}

Expand All @@ -741,6 +746,7 @@ func unmarshalOCVRFs(ocVal *oc.OpenconfigNetworkInstance_NetworkInstances) (map[
IPv4UnicastExportPolicies: ipv4ExportPolicies,
L2VPNEVPN: l2vpnEVPN,
L2VPNEVPNImportPolicies: l2ImportPolicies,
L2VPNEVPNAllowOwnAS: l2VPNEVPNAllowOwnAS,
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/agent/dozer/dozer.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,6 @@ type SpecVRFBGPIPv4Unicast struct {

type SpecVRFBGPL2VPNEVPN struct {
Enabled bool `json:"enable,omitempty"`
DefaultOriginateIPv4 *bool `json:"defaultOriginateIPv4,omitempty"`
AdvertiseAllVNI *bool `json:"advertiseAllVnis,omitempty"`
AdvertiseIPv4Unicast *bool `json:"advertiseIPv4Unicast,omitempty"`
AdvertiseIPv4UnicastRouteMaps []string `json:"advertiseIPv4UnicastRouteMaps,omitempty"`
Expand All @@ -182,6 +181,7 @@ type SpecVRFBGPNeighbor struct {
IPv4UnicastExportPolicies []string `json:"ipv4UnicastExportPolicies,omitempty"`
L2VPNEVPN *bool `json:"l2vpnEvpn,omitempty"`
L2VPNEVPNImportPolicies []string `json:"l2vpnEvpnImportPolicies,omitempty"`
L2VPNEVPNAllowOwnAS *bool `json:"l2vpnEvpnAllowOwnAS,omitempty"`
}

const (
Expand Down

0 comments on commit 8e5e086

Please sign in to comment.