Merge pull request #1915 from vivek-cumulus/evpn-ipv6-external-routing

EVPN IPv6 external routing
This commit is contained in:
Philippe Guibert 2018-03-27 17:32:06 +02:00 committed by GitHub
commit 2d6e6d36d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 11 deletions

View file

@ -862,7 +862,7 @@ static int evpn_route_select_install(struct bgp *bgp, struct bgpevpn *vpn,
*/
if (old_select && old_select == new_select
&& old_select->type == ZEBRA_ROUTE_BGP
&& old_select->sub_type == BGP_ROUTE_NORMAL
&& old_select->sub_type == BGP_ROUTE_IMPORTED
&& !CHECK_FLAG(rn->flags, BGP_NODE_USER_CLEAR)
&& !CHECK_FLAG(old_select->flags, BGP_INFO_ATTR_CHANGED)
&& !bgp->addpath_tx_used[afi][safi]) {
@ -898,7 +898,7 @@ static int evpn_route_select_install(struct bgp *bgp, struct bgpevpn *vpn,
}
if (new_select && new_select->type == ZEBRA_ROUTE_BGP
&& new_select->sub_type == BGP_ROUTE_NORMAL) {
&& new_select->sub_type == BGP_ROUTE_IMPORTED) {
flags = 0;
if (new_select->attr->sticky)
SET_FLAG(flags, ZEBRA_MACIP_TYPE_STICKY);
@ -919,7 +919,7 @@ static int evpn_route_select_install(struct bgp *bgp, struct bgpevpn *vpn,
evpn_delete_old_local_route(bgp, vpn, rn, old_select);
} else {
if (old_select && old_select->type == ZEBRA_ROUTE_BGP
&& old_select->sub_type == BGP_ROUTE_NORMAL)
&& old_select->sub_type == BGP_ROUTE_IMPORTED)
ret = evpn_zebra_uninstall(bgp, vpn,
(struct prefix_evpn *)&rn->p,
old_select->attr->nexthop);
@ -1139,7 +1139,7 @@ static int update_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,
local_ri = tmp_ri;
if (vni_table) {
if (tmp_ri->type == ZEBRA_ROUTE_BGP
&& tmp_ri->sub_type == BGP_ROUTE_NORMAL
&& tmp_ri->sub_type == BGP_ROUTE_IMPORTED
&& CHECK_FLAG(tmp_ri->flags, BGP_INFO_VALID)) {
if (!remote_ri)
remote_ri = tmp_ri;
@ -1840,7 +1840,7 @@ static int install_evpn_route_entry_in_vrf(struct bgp *bgp_vrf,
attr_new = bgp_attr_intern(&attr);
/* Create new route with its attribute. */
ri = info_make(parent_ri->type, parent_ri->sub_type, 0,
ri = info_make(parent_ri->type, BGP_ROUTE_IMPORTED, 0,
parent_ri->peer, attr_new, rn);
SET_FLAG(ri->flags, BGP_INFO_VALID);
bgp_info_extra_get(ri);
@ -1912,7 +1912,7 @@ static int install_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,
attr_new = bgp_attr_intern(parent_ri->attr);
/* Create new route with its attribute. */
ri = info_make(parent_ri->type, parent_ri->sub_type, 0,
ri = info_make(parent_ri->type, BGP_ROUTE_IMPORTED, 0,
parent_ri->peer, attr_new, rn);
SET_FLAG(ri->flags, BGP_INFO_VALID);
bgp_info_extra_get(ri);

View file

@ -2766,7 +2766,7 @@ DEFUN (bgp_evpn_advertise_type5,
rmap_changed = 1;
}
if (!(afi == AFI_IP) || (afi == AFI_IP6)) {
if (!(afi == AFI_IP || afi == AFI_IP6)) {
vty_out(vty,
"%%only ipv4 or ipv6 address families are supported");
return CMD_WARNING;

View file

@ -557,7 +557,8 @@ static int bgp_info_cmp(struct bgp *bgp, struct bgp_info *new,
* - BGP_ROUTE_AGGREGATE
* - BGP_ROUTE_REDISTRIBUTE
*/
if (!(new->sub_type == BGP_ROUTE_NORMAL)) {
if (!(new->sub_type == BGP_ROUTE_NORMAL ||
new->sub_type == BGP_ROUTE_IMPORTED)) {
if (debug)
zlog_debug(
"%s: %s wins over %s due to preferred BGP_ROUTE type",
@ -565,7 +566,8 @@ static int bgp_info_cmp(struct bgp *bgp, struct bgp_info *new,
return 1;
}
if (!(exist->sub_type == BGP_ROUTE_NORMAL)) {
if (!(exist->sub_type == BGP_ROUTE_NORMAL ||
new->sub_type == BGP_ROUTE_IMPORTED)) {
if (debug)
zlog_debug(
"%s: %s loses to %s due to preferred BGP_ROUTE type",

View file

@ -1043,7 +1043,7 @@ void bgp_zebra_announce(struct bgp_node *rn, struct prefix *p,
* Currently presence of rmac in attr denotes
* this is an EVPN type-2 route
*/
if (!is_zero_mac(&(info->attr->rmac)))
if (info->sub_type == BGP_ROUTE_IMPORTED)
SET_FLAG(api.flags, ZEBRA_FLAG_EVPN_ROUTE);
if (peer->sort == BGP_PEER_IBGP || peer->sort == BGP_PEER_CONFED
@ -1344,7 +1344,7 @@ void bgp_zebra_withdraw(struct prefix *p, struct bgp_info *info,
* Currently presence of rmac in attr denotes
* this is an EVPN type-2 route
*/
if (!is_zero_mac(&(info->attr->rmac)))
if (info->sub_type == BGP_ROUTE_IMPORTED)
SET_FLAG(api.flags, ZEBRA_FLAG_EVPN_ROUTE);
if (peer->sort == BGP_PEER_IBGP) {