void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
{
struct bgp *bgp;
- struct attr attr;
struct bgp_path_info *info, init_info, tmp_info;
struct prefix p;
struct peer *from;
bgp = peer->bgp;
from = bgp->peer_self;
- 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;
+ init_info.attr = NULL;
info = &init_info;
- bgp_attr_intern(info->attr);
memset(&p, 0, sizeof(p));
p.family = afi2family(afi);
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))
&rn->p, RMAP_BGP, &tmp_info);
info = &tmp_info;
- bgp_attr_intern(info->attr);
if (ret != RMAP_DENYMATCH)
break;
BGP_ADDPATH_TX_ID_FOR_DEFAULT_ORIGINATE);
}
}
- aspath_unintern(&info->attr->aspath);
}
/*