Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bgpd: Make sure default-originate works without route-map as well #2755

Merged
merged 1 commit into from Aug 1, 2018
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file or symbol
Failed to load files and symbols.
+19 −5
Diff settings

Always

Just for now

bgpd: Make sure default-originate works without route-map as well

  • Loading branch information...
ton31337 committed Jul 31, 2018
commit c2e10422033771da9f12a4a283b0bc767240a3d8
Copy path View file
@@ -662,6 +662,7 @@ void subgroup_announce_route(struct update_subgroup *subgrp)
void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
{
struct bgp *bgp;
struct attr attr;
struct bgp_info *info, init_info;
struct prefix p;
struct peer *from;
@@ -685,8 +686,23 @@ void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
bgp = peer->bgp;
from = bgp->peer_self;

init_info.attr = NULL;
bgp_attr_default_set(&attr, BGP_ORIGIN_IGP);
attr.local_pref = bgp->default_local_pref;

if ((afi == AFI_IP6) || peer_cap_enhe(peer, afi, safi)) {
/* IPv6 global nexthop must be included.
*/
attr.mp_nexthop_len = BGP_ATTR_NHLEN_IPV6_GLOBAL;

/* If the peer is on shared nextwork and
* we have link-local nexthop set it. */
if (peer->shared_network
&& !IN6_IS_ADDR_UNSPECIFIED(&peer->nexthop.v6_local))
attr.mp_nexthop_len = BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL;
}
init_info.attr = &attr;
info = &init_info;
bgp_attr_intern(info->attr);

memset(&p, 0, sizeof(p));
p.family = afi2family(afi);
@@ -709,13 +725,9 @@ void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)

if ((afi == AFI_IP6)
|| peer_cap_enhe(peer, afi, safi)) {
/* IPv6 global nexthop must be included.
*/
tmp_info.attr->mp_nexthop_len =
BGP_ATTR_NHLEN_IPV6_GLOBAL;

/* If the peer is on shared nextwork and
* we have link-local nexthop set it. */
if (peer->shared_network
&& !IN6_IS_ADDR_UNSPECIFIED(
&peer->nexthop.v6_local))
@@ -728,6 +740,7 @@ void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
&rn->p, RMAP_BGP, &tmp_info);

info = &tmp_info;
bgp_attr_intern(info->attr);

if (ret != RMAP_DENYMATCH)
break;
@@ -776,6 +789,7 @@ void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
BGP_ADDPATH_TX_ID_FOR_DEFAULT_ORIGINATE);
}
}
aspath_unintern(&info->attr->aspath);
}

/*
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.