Merge pull request #7830 from volta-networks/misc_fixes_2021

Misc fixes (bgpd, pathd, tools)
This commit is contained in:
Donatas Abraitis 2021-01-11 15:18:18 +02:00 committed by GitHub
commit b96138fbf0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 33 deletions

View File

@ -894,6 +894,9 @@ int bgp_global_route_selection_options_allow_multiple_as_modify(
"../multi-path-as-set")) { "../multi-path-as-set")) {
SET_FLAG(bgp->flags, SET_FLAG(bgp->flags,
BGP_FLAG_MULTIPATH_RELAX_AS_SET); BGP_FLAG_MULTIPATH_RELAX_AS_SET);
} else {
UNSET_FLAG(bgp->flags,
BGP_FLAG_MULTIPATH_RELAX_AS_SET);
} }
} else { } else {
UNSET_FLAG(bgp->flags, BGP_FLAG_ASPATH_MULTIPATH_RELAX); UNSET_FLAG(bgp->flags, BGP_FLAG_ASPATH_MULTIPATH_RELAX);
@ -923,15 +926,10 @@ int bgp_global_route_selection_options_multi_path_as_set_modify(
return NB_OK; return NB_OK;
case NB_EV_APPLY: case NB_EV_APPLY:
bgp = nb_running_get_entry(args->dnode, NULL, true); bgp = nb_running_get_entry(args->dnode, NULL, true);
if (yang_dnode_get_bool(args->dnode, NULL))
if (!CHECK_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET)) {
SET_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET); SET_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET);
else
} else UNSET_FLAG(bgp->flags, BGP_FLAG_MULTIPATH_RELAX_AS_SET);
zlog_debug(
"%s multi-path-as-set as part of allow-multiple-as modify cb.",
__func__);
break; break;
} }
@ -9556,7 +9554,7 @@ static int bgp_global_afi_safi_ip_unicast_vpn_config_rd_destroy(
bgp = nb_running_get_entry(af_dnode, NULL, true); bgp = nb_running_get_entry(af_dnode, NULL, true);
rd_str = yang_dnode_get_string(args->dnode, NULL); rd_str = yang_dnode_get_string(args->dnode, NULL);
if (str2prefix_rd(rd_str, &prd)) { if (!str2prefix_rd(rd_str, &prd)) {
snprintf(args->errmsg, args->errmsg_len, "Malformed rd %s \n", snprintf(args->errmsg, args->errmsg_len, "Malformed rd %s \n",
rd_str); rd_str);
return NB_ERR_INCONSISTENCY; return NB_ERR_INCONSISTENCY;

View File

@ -1482,7 +1482,8 @@ int pcep_cli_pcc_config_write(struct vty *vty)
csnprintfrr(buf, sizeof(buf), " peer %s", csnprintfrr(buf, sizeof(buf), " peer %s",
pce_opts->pce_name); pce_opts->pce_name);
if (pce_opts->precedence > 0) { if (pce_opts->precedence > 0
&& pce_opts->precedence != DEFAULT_PCE_PRECEDENCE) {
csnprintfrr(buf, sizeof(buf), " %s %d", csnprintfrr(buf, sizeof(buf), " %s %d",
PCEP_VTYSH_ARG_PRECEDENCE, PCEP_VTYSH_ARG_PRECEDENCE,
pce_opts->precedence); pce_opts->precedence);

View File

@ -683,26 +683,6 @@ end
new_ctx = False new_ctx = False
log.debug("LINE %-50s: entering new context, %-50s", line, ctx_keys) log.debug("LINE %-50s: entering new context, %-50s", line, ctx_keys)
elif (
line.startswith("peer ")
and len(ctx_keys) == 4
and ctx_keys[0].startswith("segment-routing")
and ctx_keys[1].startswith("traffic-eng")
and ctx_keys[2].startswith("pcep")
and ctx_keys[3].startswith("pcc")
):
# If there is no precedence, we add the default one (255) so
# the line is not removed and added back
m = re.search('peer ([^ ]*)', line)
if (m != None):
(name,) = m.groups()
line = "peer %s precedence 255" % (name,)
current_context_lines.append(line)
log.debug(
"LINE %-50s: append to current_context_lines, %-50s", line, ctx_keys
)
elif ( elif (
line.startswith("address-family ") line.startswith("address-family ")
or line.startswith("vnc defaults") or line.startswith("vnc defaults")
@ -1413,6 +1393,8 @@ def compare_context_objects(newconf, running):
lines_to_del = [] lines_to_del = []
pollist_to_del = [] pollist_to_del = []
seglist_to_del = [] seglist_to_del = []
pceconf_to_del = []
pcclist_to_del = []
candidates_to_add = [] candidates_to_add = []
delete_bgpd = False delete_bgpd = False
@ -1498,9 +1480,8 @@ def compare_context_objects(newconf, running):
# Segment routing and traffic engineering never need to be deleted # Segment routing and traffic engineering never need to be deleted
elif ( elif (
len(running_ctx_keys) > 1 running_ctx_keys[0].startswith('segment-routing')
and len(running_ctx_keys) < 3 and len(running_ctx_keys) < 3
and running_ctx_keys[0].startswith('segment-routing')
): ):
continue continue
@ -1508,7 +1489,7 @@ def compare_context_objects(newconf, running):
elif ( elif (
len(running_ctx_keys) == 3 len(running_ctx_keys) == 3
and running_ctx_keys[0].startswith('segment-routing') and running_ctx_keys[0].startswith('segment-routing')
and running_ctx_keys[2].startswith('pcep4') and running_ctx_keys[2].startswith('pcep')
): ):
continue continue
@ -1530,6 +1511,23 @@ def compare_context_objects(newconf, running):
): ):
pollist_to_del.append((running_ctx_keys, None)) pollist_to_del.append((running_ctx_keys, None))
# pce-config must be deleted after the pce, to be sure we add them
# to a separate array that is going to be appended at the end
elif (
len(running_ctx_keys) >= 4
and running_ctx_keys[0].startswith('segment-routing')
and running_ctx_keys[3].startswith('pce-config')
):
pceconf_to_del.append((running_ctx_keys, None))
# pcc must be deleted after the pce and pce-config too
elif (
len(running_ctx_keys) >= 4
and running_ctx_keys[0].startswith('segment-routing')
and running_ctx_keys[3].startswith('pcc')
):
pcclist_to_del.append((running_ctx_keys, None))
# Non-global context # Non-global context
elif running_ctx_keys and not any( elif running_ctx_keys and not any(
"address-family" in key for key in running_ctx_keys "address-family" in key for key in running_ctx_keys
@ -1552,6 +1550,14 @@ def compare_context_objects(newconf, running):
if len(seglist_to_del) > 0: if len(seglist_to_del) > 0:
lines_to_del.extend(seglist_to_del) lines_to_del.extend(seglist_to_del)
# if we have some pce list commands to delete, append them to lines_to_del
if len(pceconf_to_del) > 0:
lines_to_del.extend(pceconf_to_del)
# if we have some pcc list commands to delete, append them to lines_to_del
if len(pcclist_to_del) > 0:
lines_to_del.extend(pcclist_to_del)
# Find the lines within each context to add # Find the lines within each context to add
# Find the lines within each context to del # Find the lines within each context to del
for (newconf_ctx_keys, newconf_ctx) in iteritems(newconf.contexts): for (newconf_ctx_keys, newconf_ctx) in iteritems(newconf.contexts):
@ -1765,6 +1771,7 @@ if __name__ == "__main__":
"vrrpd", "vrrpd",
"ldpd", "ldpd",
"pathd", "pathd",
"bfdd",
]: ]:
msg = "Daemon %s is not a valid option for 'show running-config'" % args.daemon msg = "Daemon %s is not a valid option for 'show running-config'" % args.daemon
print(msg) print(msg)