summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_aspath.c7
-rw-r--r--bgpd/bgp_attr.c17
-rw-r--r--bgpd/bgp_errors.c2
-rw-r--r--doc/developer/workflow.rst10
-rw-r--r--doc/manpages/vtysh.rst2
-rw-r--r--doc/user/ospf6d.rst2
-rw-r--r--doc/user/ospfd.rst13
-rw-r--r--lib/thread.c29
-rw-r--r--lib/thread.h1
-rw-r--r--ospf6d/ospf6_asbr.c8
-rw-r--r--ospf6d/ospf6_auth_trailer.c2
-rw-r--r--ospf6d/ospf6_top.c2
-rw-r--r--ospf6d/ospf6_zebra.c2
-rw-r--r--ospfd/ospf_asbr.c8
-rw-r--r--ospfd/ospf_gr_helper.c4
-rw-r--r--ospfd/ospf_vty.c4
-rw-r--r--ospfd/ospf_zebra.c2
-rw-r--r--ospfd/ospfd.c2
-rw-r--r--pathd/path_errors.c2
-rw-r--r--pathd/path_pcep_config.c2
-rw-r--r--pathd/pathd.c6
-rw-r--r--pceplib/pcep_timers.c2
-rw-r--r--tests/bgpd/test_aspath.c12
-rw-r--r--tests/topotests/lib/bgp.py2
-rw-r--r--tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py4
-rw-r--r--vtysh/vtysh.c6
-rw-r--r--vtysh/vtysh_main.c2
-rw-r--r--yang/frr-pathd.yang2
-rw-r--r--zebra/kernel_netlink.c2
29 files changed, 91 insertions, 68 deletions
diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c
index 192cd6ca82..dd27c9f6a1 100644
--- a/bgpd/bgp_aspath.c
+++ b/bgpd/bgp_aspath.c
@@ -328,7 +328,12 @@ void aspath_free(struct aspath *aspath)
void aspath_unintern(struct aspath **aspath)
{
struct aspath *ret;
- struct aspath *asp = *aspath;
+ struct aspath *asp;
+
+ if (!*aspath)
+ return;
+
+ asp = *aspath;
if (asp->refcnt)
asp->refcnt--;
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index 4f25f2284f..21f92c353e 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -1086,8 +1086,7 @@ void bgp_attr_unintern_sub(struct attr *attr)
struct lcommunity *lcomm = NULL;
/* aspath refcount shoud be decrement. */
- if (attr->aspath)
- aspath_unintern(&attr->aspath);
+ aspath_unintern(&attr->aspath);
UNSET_FLAG(attr->flag, ATTR_FLAG_BIT(BGP_ATTR_AS_PATH));
if (attr->community)
@@ -3494,14 +3493,12 @@ done:
* we can chuck as4_aggregator and as4_path alltogether in order
* to save memory
*/
- if (as4_path) {
- /*
- * unintern - it is in the hash
- * The flag that we got this is still there, but that
- * does not do any trouble
- */
- aspath_unintern(&as4_path);
- }
+ /*
+ * unintern - it is in the hash
+ * The flag that we got this is still there, but that
+ * does not do any trouble
+ */
+ aspath_unintern(&as4_path);
transit = bgp_attr_get_transit(attr);
if (ret != BGP_ATTR_PARSE_ERROR) {
diff --git a/bgpd/bgp_errors.c b/bgpd/bgp_errors.c
index 0f9d5fc73a..f11717b41f 100644
--- a/bgpd/bgp_errors.c
+++ b/bgpd/bgp_errors.c
@@ -464,7 +464,7 @@ static struct log_ref ferr_bgp_err[] = {
},
{
.code = EC_BGP_INVALID_BGP_INSTANCE,
- .title = "BGP instance for the specifc vrf is invalid",
+ .title = "BGP instance for the specific vrf is invalid",
.description = "Indicates that specified bgp instance is NULL",
.suggestion = "Get log files from router and open an issue",
},
diff --git a/doc/developer/workflow.rst b/doc/developer/workflow.rst
index 2005e9d8bb..45bee17b71 100644
--- a/doc/developer/workflow.rst
+++ b/doc/developer/workflow.rst
@@ -141,6 +141,16 @@ March/July/November. Walking backwards from this date:
- 2 weeks earlier, a ``frr-X.Y-rc`` release candidate is tagged.
+ .. code-block:: console
+
+ % git remote --verbose
+ upstream git@github.com:frrouting/frr (fetch)
+ upstream git@github.com:frrouting/frr (push)
+
+ % git checkout dev/8.2
+ % git tag frr-8.2-rc
+ % git push upstream frr-8.2-rc
+
- on release date, the branch is renamed to ``stable/MAJOR.MINOR``.
The 2 week window between each of these events should be used to run any and
diff --git a/doc/manpages/vtysh.rst b/doc/manpages/vtysh.rst
index b930cb915d..af527bea40 100644
--- a/doc/manpages/vtysh.rst
+++ b/doc/manpages/vtysh.rst
@@ -74,7 +74,7 @@ VTYSH_PAGER
VTYSH_HISTFILE
Override the history file for vtysh commands. Logging can be turned off using ``VTYSH_HISTFILE=/dev/null vtysh``.
- Environment is prefered way to override the history file path over command line argument (-H/--histfile).
+ Environment is preferred way to override the history file path over command line argument (-H/--histfile).
FILES
=====
diff --git a/doc/user/ospf6d.rst b/doc/user/ospf6d.rst
index 77656651e4..8dacb9c9dc 100644
--- a/doc/user/ospf6d.rst
+++ b/doc/user/ospf6d.rst
@@ -681,7 +681,7 @@ Showing OSPF6 information
.. clicmd:: show ipv6 ospf6 [vrf <NAME|all>] interface traffic [json]
- Shows counts of different packets that have been recieved and transmitted
+ Shows counts of different packets that have been received and transmitted
by the interfaces. JSON output can be obtained by appending "json" at the
end.
diff --git a/doc/user/ospfd.rst b/doc/user/ospfd.rst
index ed4d02d89b..349b54098e 100644
--- a/doc/user/ospfd.rst
+++ b/doc/user/ospfd.rst
@@ -313,9 +313,9 @@ To start OSPF process you have to specify the OSPF router.
Areas
-----
-.. clicmd:: area A.B.C.D range A.B.C.D/M
+.. clicmd:: area A.B.C.D range A.B.C.D/M [advertise [cost (0-16777215)]]
-.. clicmd:: area (0-4294967295) range A.B.C.D/M
+.. clicmd:: area (0-4294967295) range A.B.C.D/M [advertise [cost (0-16777215)]]
@@ -346,9 +346,9 @@ Areas
range are not advertised into other areas.
This command makes sense in ABR only.
-.. clicmd:: area A.B.C.D range A.B.C.D/M substitute A.B.C.D/M
+.. clicmd:: area A.B.C.D range A.B.C.D/M {substitute A.B.C.D/M|cost (0-16777215)}
-.. clicmd:: area (0-4294967295) range A.B.C.D/M substitute A.B.C.D/M
+.. clicmd:: area (0-4294967295) range A.B.C.D/M {substitute A.B.C.D/M|cost (0-16777215)}
Substitute summarized prefix with another prefix.
@@ -364,6 +364,11 @@ Areas
One Type-3 summary-LSA with routing info 11.0.0.0/8 is announced into backbone area if
area 0.0.0.10 contains at least one intra-area network (i.e. described with router-LSA or
network-LSA) from range 10.0.0.0/8.
+
+ By default, the metric of the summary route is calculated as the highest
+ metric among the summarized routes. The `cost` option, however, can be used
+ to set an explicit metric.
+
This command makes sense in ABR only.
.. clicmd:: area A.B.C.D virtual-link A.B.C.D
diff --git a/lib/thread.c b/lib/thread.c
index 376f61c247..ada7a9cc80 100644
--- a/lib/thread.c
+++ b/lib/thread.c
@@ -138,11 +138,12 @@ static void cpu_record_hash_free(void *a)
static void vty_out_cpu_thread_history(struct vty *vty,
struct cpu_thread_history *a)
{
- vty_out(vty, "%5zu %10zu.%03zu %9zu %8zu %9zu %8zu %9zu %9zu %9zu",
+ vty_out(vty,
+ "%5zu %10zu.%03zu %9zu %8zu %9zu %8zu %9zu %9zu %9zu %10zu",
a->total_active, a->cpu.total / 1000, a->cpu.total % 1000,
a->total_calls, (a->cpu.total / a->total_calls), a->cpu.max,
(a->real.total / a->total_calls), a->real.max,
- a->total_cpu_warn, a->total_wall_warn);
+ a->total_cpu_warn, a->total_wall_warn, a->total_starv_warn);
vty_out(vty, " %c%c%c%c%c %s\n",
a->types & (1 << THREAD_READ) ? 'R' : ' ',
a->types & (1 << THREAD_WRITE) ? 'W' : ' ',
@@ -168,6 +169,8 @@ static void cpu_record_hash_print(struct hash_bucket *bucket, void *args[])
atomic_load_explicit(&a->total_cpu_warn, memory_order_seq_cst);
copy.total_wall_warn =
atomic_load_explicit(&a->total_wall_warn, memory_order_seq_cst);
+ copy.total_starv_warn = atomic_load_explicit(&a->total_starv_warn,
+ memory_order_seq_cst);
copy.cpu.total =
atomic_load_explicit(&a->cpu.total, memory_order_seq_cst);
copy.cpu.max = atomic_load_explicit(&a->cpu.max, memory_order_seq_cst);
@@ -186,6 +189,7 @@ static void cpu_record_hash_print(struct hash_bucket *bucket, void *args[])
totals->total_calls += copy.total_calls;
totals->total_cpu_warn += copy.total_cpu_warn;
totals->total_wall_warn += copy.total_wall_warn;
+ totals->total_starv_warn += copy.total_starv_warn;
totals->real.total += copy.real.total;
if (totals->real.max < copy.real.max)
totals->real.max = copy.real.max;
@@ -231,7 +235,8 @@ static void cpu_record_print(struct vty *vty, uint8_t filter)
vty_out(vty,
"Active Runtime(ms) Invoked Avg uSec Max uSecs");
vty_out(vty, " Avg uSec Max uSecs");
- vty_out(vty, " CPU_Warn Wall_Warn Type Thread\n");
+ vty_out(vty,
+ " CPU_Warn Wall_Warn Starv_Warn Type Thread\n");
if (m->cpu_record->count)
hash_iterate(
@@ -1668,13 +1673,17 @@ static unsigned int thread_process_timers(struct thread_master *m,
* really getting behind on handling of events.
* Let's log it and do the right thing with it.
*/
- if (!displayed && !thread->ignore_timer_late &&
- timercmp(timenow, &prev, >)) {
- flog_warn(
- EC_LIB_STARVE_THREAD,
- "Thread Starvation: %pTHD was scheduled to pop greater than 4s ago",
- thread);
- displayed = true;
+ if (timercmp(timenow, &prev, >)) {
+ atomic_fetch_add_explicit(
+ &thread->hist->total_starv_warn, 1,
+ memory_order_seq_cst);
+ if (!displayed && !thread->ignore_timer_late) {
+ flog_warn(
+ EC_LIB_STARVE_THREAD,
+ "Thread Starvation: %pTHD was scheduled to pop greater than 4s ago",
+ thread);
+ displayed = true;
+ }
}
thread_timer_list_pop(&m->timer);
diff --git a/lib/thread.h b/lib/thread.h
index 660f8bd28e..0c2a4ba869 100644
--- a/lib/thread.h
+++ b/lib/thread.h
@@ -137,6 +137,7 @@ struct cpu_thread_history {
int (*func)(struct thread *);
atomic_size_t total_cpu_warn;
atomic_size_t total_wall_warn;
+ atomic_size_t total_starv_warn;
atomic_size_t total_calls;
atomic_size_t total_active;
struct time_stats {
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 203ae14f2d..1c0d948cca 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -2874,7 +2874,7 @@ ospf6_originate_summary_lsa(struct ospf6 *ospf6,
if (IS_OSPF6_DEBUG_AGGR)
zlog_debug("%s: Aggr LSA ID: %d flags %x.",
__func__, aggr->id, aggr->aggrflags);
- /* Dont originate external LSA,
+ /* Don't originate external LSA,
* If it is configured not to advertise.
*/
if (CHECK_FLAG(aggr->aggrflags, OSPF6_EXTERNAL_AGGRT_NO_ADVERTISE)) {
@@ -3248,11 +3248,11 @@ static void ospf6_handle_aggregated_exnl_rt(struct ospf6 *ospf6,
/* Handling the case where the external route prefix
* and aggegate prefix is same
- * If same dont flush the originated external LSA.
+ * If same don't flush the originated external LSA.
*/
if (prefix_same(&aggr->p, &rt->prefix)) {
if (IS_OSPF6_DEBUG_AGGR)
- zlog_debug("%s: External Route prefix same as Aggregator(%pFX), so dont flush.",
+ zlog_debug("%s: External Route prefix same as Aggregator(%pFX), so don't flush.",
__func__,
&rt->prefix);
@@ -3623,7 +3623,7 @@ void ospf6_handle_external_lsa_origination(struct ospf6 *ospf6,
/* Handling the case where the
* external route prefix
* and aggegate prefix is same
- * If same dont flush the
+ * If same don't flush the
* originated
* external LSA.
*/
diff --git a/ospf6d/ospf6_auth_trailer.c b/ospf6d/ospf6_auth_trailer.c
index 3582ef53b2..1095473f4a 100644
--- a/ospf6d/ospf6_auth_trailer.c
+++ b/ospf6d/ospf6_auth_trailer.c
@@ -488,7 +488,7 @@ int ospf6_auth_check_digest(struct ospf6_header *oh, struct ospf6_interface *oi,
if (!keychain) {
if (IS_OSPF6_DEBUG_AUTH_RX)
zlog_err(
- "RECV[%s]: Keychain does't exist for %s",
+ "RECV[%s]: Keychain doesn't exist for %s",
oi->interface->name,
ospf6_message_type(oh->type));
return OSPF6_AUTH_VALIDATE_FAILURE;
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index 9381fa7faf..13f16efa66 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -2137,7 +2137,7 @@ DEFPY (show_ipv6_ospf6_external_aggregator,
VRF_CMD_HELP_STR
"All VRFs\n"
"Show external summary addresses\n"
- "detailed informtion\n"
+ "detailed information\n"
JSON_STR)
{
bool uj = use_json(argc, argv);
diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c
index 82d280811b..e279d0411b 100644
--- a/ospf6d/ospf6_zebra.c
+++ b/ospf6d/ospf6_zebra.c
@@ -354,7 +354,7 @@ DEFUN(show_zebra,
vty_json(vty, json);
} else {
- vty_out(vty, "Zebra Infomation\n");
+ vty_out(vty, "Zebra Information\n");
vty_out(vty, " fail: %d\n", zclient->fail);
vty_out(vty, " redistribute default: %d\n",
vrf_bitmap_check(zclient->default_information[AFI_IP6],
diff --git a/ospfd/ospf_asbr.c b/ospfd/ospf_asbr.c
index f44e1dde82..db78e6d2df 100644
--- a/ospfd/ospf_asbr.c
+++ b/ospfd/ospf_asbr.c
@@ -207,7 +207,7 @@ struct ospf_lsa *ospf_external_info_find_lsa(struct ospf *ospf,
struct as_external_lsa *al;
struct in_addr mask, id;
- /* Fisrt search the lsdb with address specifc LSID
+ /* First search the lsdb with address specific LSID
* where all the host bits are set, if there a matched
* LSA, return.
* Ex: For route 10.0.0.0/16, LSID is 10.0.255.255
@@ -630,7 +630,7 @@ struct ospf_lsa *ospf_originate_summary_lsa(struct ospf *ospf,
ospf_link_ei_to_aggr(aggr, ei);
lsa = ospf_external_info_find_lsa(ospf, &aggr->p);
- /* Dont originate external LSA,
+ /* Don't originate external LSA,
* If it is configured not to advertise.
*/
if (CHECK_FLAG(aggr->flags, OSPF_EXTERNAL_AGGRT_NO_ADVERTISE)) {
@@ -787,12 +787,12 @@ static void ospf_handle_aggregated_exnl_rt(struct ospf *ospf,
/* Handling the case where the external route prefix
* and aggregate prefix is same
- * If same dont flush the originated external LSA.
+ * If same don't flush the originated external LSA.
*/
if (prefix_same((struct prefix *)&aggr->p, (struct prefix *)&ei->p)) {
if (IS_DEBUG_OSPF(lsa, EXTNL_LSA_AGGR))
zlog_debug(
- "%s: External Route prefix same as Aggregator(%pI4/%d), so dont flush.",
+ "%s: External Route prefix same as Aggregator(%pI4/%d), so don't flush.",
__func__, &ei->p.prefix, ei->p.prefixlen);
return;
}
diff --git a/ospfd/ospf_gr_helper.c b/ospfd/ospf_gr_helper.c
index ae002fdc97..5eca591754 100644
--- a/ospfd/ospf_gr_helper.c
+++ b/ospfd/ospf_gr_helper.c
@@ -847,8 +847,8 @@ void ospf_gr_helper_support_set(struct ospf *ospf, bool support)
lookup.advRtrAddr.s_addr =
nbr->router_id.s_addr;
/* check if helper support enabled for the
- * corresponding routerid.If enabled, dont
- * dont exit from helper role.
+ * corresponding routerid.If enabled, don't
+ * exit from helper role.
*/
if (hash_lookup(ospf->enable_rtr_list, &lookup))
continue;
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 32d87b9a91..0b7c3c6831 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -10398,7 +10398,7 @@ DEFPY (show_ip_ospf_gr_helper,
"All VRFs\n"
"OSPF Graceful Restart\n"
"Helper details in the router\n"
- "Detailed informtion\n"
+ "Detailed information\n"
JSON_STR)
{
char *vrf_name = NULL;
@@ -11500,7 +11500,7 @@ DEFUN (show_ip_ospf_external_aggregator,
VRF_CMD_HELP_STR
"All VRFs\n"
"Show external summary addresses\n"
- "Detailed informtion\n"
+ "Detailed information\n"
JSON_STR)
{
char *vrf_name = NULL;
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 7834b7d934..66b7425a81 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -1380,7 +1380,7 @@ static int ospf_zebra_read_route(ZAPI_CALLBACK_ARGS)
/* Handling the case where the
* external route prefix
* and aggegate prefix is same
- * If same dont flush the
+ * If same don't flush the
* originated
* external LSA.
*/
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index e5f3eec603..b1bba9eb4e 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -1089,7 +1089,7 @@ struct ospf_interface *add_ospf_interface(struct connected *co,
ospf_ldp_sync_if_init(oi);
/*
- * if router_id is not configured, dont bring up
+ * if router_id is not configured, don't bring up
* interfaces.
* ospf_router_id_update() will call ospf_if_update
* whenever r-id is configured instead.
diff --git a/pathd/path_errors.c b/pathd/path_errors.c
index 112a3d5ee9..68372c29b6 100644
--- a/pathd/path_errors.c
+++ b/pathd/path_errors.c
@@ -81,7 +81,7 @@ static struct log_ref ferr_path_warn[] = {
{
.code = EC_PATH_PCEP_UNSUPPORTED_PCEP_FEATURE,
.title = "Unsupported PCEP feature",
- .description = "Receved an unsupported PCEP message",
+ .description = "Received an unsupported PCEP message",
.suggestion = "The PCC and PCE are probably not compatible. Open an Issue with all relevant log files"
},
{
diff --git a/pathd/path_pcep_config.c b/pathd/path_pcep_config.c
index 4c16b83948..99b1c349a9 100644
--- a/pathd/path_pcep_config.c
+++ b/pathd/path_pcep_config.c
@@ -301,7 +301,7 @@ int path_pcep_config_initiate_path(struct path *path)
return ERROR_19_9;
}
zlog_warn(
- "(%s)PCE tried to REMOVE found canidate!, let's remove",
+ "(%s)PCE tried to REMOVE found candidate!, let's remove",
__func__);
candidate->policy->srp_id = path->srp_id;
SET_FLAG(candidate->policy->flags, F_POLICY_DELETED);
diff --git a/pathd/pathd.c b/pathd/pathd.c
index 7f6d34f752..f56da37b51 100644
--- a/pathd/pathd.c
+++ b/pathd/pathd.c
@@ -1345,7 +1345,7 @@ int32_t srte_ted_do_query_type_c(struct srte_segment_entry *entry,
zlog_warn(" %s: PATHD-TED: SL: ERROR query C : ted-sid (%d)",
__func__, ted_sid);
} else {
- zlog_debug("%s: PATHD-TED: SL: Sucess query C : ted-sid (%d)",
+ zlog_debug("%s: PATHD-TED: SL: Success query C : ted-sid (%d)",
__func__, ted_sid);
}
if (CHECK_SID(entry->segment_list->protocol_origin, ted_sid,
@@ -1375,7 +1375,7 @@ int32_t srte_ted_do_query_type_e(struct srte_segment_entry *entry,
zlog_warn(" %s: PATHD-TED: SL: ERROR query E : ted-sid (%d)",
__func__, ted_sid);
} else {
- zlog_debug("%s: PATHD-TED: SL: Sucess query E : ted-sid (%d)",
+ zlog_debug("%s: PATHD-TED: SL: Success query E : ted-sid (%d)",
__func__, ted_sid);
}
if (CHECK_SID(entry->segment_list->protocol_origin, ted_sid,
@@ -1404,7 +1404,7 @@ int32_t srte_ted_do_query_type_f(struct srte_segment_entry *entry,
zlog_warn("%s:SL: ERROR query F : ted-sid (%d)", __func__,
ted_sid);
} else {
- zlog_debug("%s:SL: Sucess query F : ted-sid (%d)", __func__,
+ zlog_debug("%s:SL: Success query F : ted-sid (%d)", __func__,
ted_sid);
}
if (CHECK_SID(entry->segment_list->protocol_origin, ted_sid,
diff --git a/pceplib/pcep_timers.c b/pceplib/pcep_timers.c
index bbf9b77983..b0f3e70b50 100644
--- a/pceplib/pcep_timers.c
+++ b/pceplib/pcep_timers.c
@@ -413,7 +413,7 @@ bool reset_timer(int timer_id)
/* Keeping this log for now, since in older versions of FRR the
* timer cancellation was blocking. This allows us to see how
* long the it takes.*/
- pcep_log(LOG_DEBUG, "%s: Reseting timer [%d] with callback",
+ pcep_log(LOG_DEBUG, "%s: Resetting timer [%d] with callback",
__func__, timer_to_reset->timer_id);
timers_context_->timer_cancel_func(
&timer_to_reset->external_timer);
diff --git a/tests/bgpd/test_aspath.c b/tests/bgpd/test_aspath.c
index c2d39752ab..7288dc0869 100644
--- a/tests/bgpd/test_aspath.c
+++ b/tests/bgpd/test_aspath.c
@@ -1062,8 +1062,7 @@ static void parse_test(struct test_segment *t)
printf("\n");
- if (asp)
- aspath_unintern(&asp);
+ aspath_unintern(&asp);
}
/* prepend testing */
@@ -1117,8 +1116,7 @@ static void empty_prepend_test(struct test_segment *t)
printf(FAILED "!\n");
printf("\n");
- if (asp1)
- aspath_unintern(&asp1);
+ aspath_unintern(&asp1);
aspath_free(asp2);
}
@@ -1277,10 +1275,8 @@ static int handle_attr_test(struct aspath_tests *t)
}
out:
- if (attr.aspath)
- aspath_unintern(&attr.aspath);
- if (asp)
- aspath_unintern(&asp);
+ aspath_unintern(&attr.aspath);
+ aspath_unintern(&asp);
return failed - initfail;
}
diff --git a/tests/topotests/lib/bgp.py b/tests/topotests/lib/bgp.py
index 551483d718..34afa0d2c1 100644
--- a/tests/topotests/lib/bgp.py
+++ b/tests/topotests/lib/bgp.py
@@ -3677,7 +3677,7 @@ def verify_f_bit(tgen, topo, addr_type, input_dict, dut, peer, expected=True):
@retry(retry_timeout=10)
def verify_graceful_restart_timers(tgen, topo, addr_type, input_dict, dut, peer):
"""
- This API is to verify graceful restart timers, configured and recieved
+ This API is to verify graceful restart timers, configured and received
Parameters
----------
diff --git a/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
index a8418d400d..4ab160b52e 100644
--- a/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
+++ b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
@@ -501,7 +501,7 @@ def test_BSR_higher_prefer_ip_p0(request):
step("sleeping for 3 sec to leran new packet")
do_countdown(3)
- step("verify BSR1 is become prefered RP")
+ step("verify BSR1 has become preferred RP")
dut = "l1"
step("Verify if b1 chosen as BSR in f1")
@@ -521,7 +521,7 @@ def test_BSR_higher_prefer_ip_p0(request):
do_countdown(3)
f1_b2_eth1 = topo["routers"]["f1"]["links"]["b2"]["interface"]
shutdown_bringup_interface(tgen, "f1", "f1-b2-eth1", True)
- step("verify BSR2 is become prefered RP")
+ step("verify BSR2 has become preferred RP")
dut = "l1"
step("Send BSR packet from b1 and b2 to FHR")
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 8e95aaa47c..336fe8b30e 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -818,7 +818,7 @@ int vtysh_mark_file(const char *filename)
return 0;
}
-/* Configration make from file. */
+/* Configuration make from file. */
int vtysh_config_from_file(struct vty *vty, FILE *fp)
{
int ret;
@@ -1586,7 +1586,7 @@ DEFUNSH(VTYSH_REALLYALL, vtysh_end_all, vtysh_end_all_cmd, "end",
DEFUNSH(VTYSH_ZEBRA, srv6, srv6_cmd,
"srv6",
- "Segment-Routing SRv6 configration\n")
+ "Segment-Routing SRv6 configuration\n")
{
vty->node = SRV6_NODE;
return CMD_SUCCESS;
@@ -1594,7 +1594,7 @@ DEFUNSH(VTYSH_ZEBRA, srv6, srv6_cmd,
DEFUNSH(VTYSH_ZEBRA, srv6_locators, srv6_locators_cmd,
"locators",
- "Segment-Routing SRv6 locators configration\n")
+ "Segment-Routing SRv6 locators configuration\n")
{
vty->node = SRV6_LOCS_NODE;
return CMD_SUCCESS;
diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c
index 76956574cc..a4f27b61cb 100644
--- a/vtysh/vtysh_main.c
+++ b/vtysh/vtysh_main.c
@@ -587,7 +587,7 @@ int main(int argc, char **argv, char **env)
* Setup history file for use by both -c and regular input
* If we can't find the home directory, then don't store
* the history information.
- * VTYSH_HISTFILE is prefered over command line
+ * VTYSH_HISTFILE is preferred over command line
* argument (-H/--histfile).
*/
if (getenv("VTYSH_HISTFILE")) {
diff --git a/yang/frr-pathd.yang b/yang/frr-pathd.yang
index 30f9875a6d..5beda769c1 100644
--- a/yang/frr-pathd.yang
+++ b/yang/frr-pathd.yang
@@ -414,7 +414,7 @@ module frr-pathd {
container objective-function {
presence "If the candidate has an objective function constraint";
description
- "Define objective function constraint as a list of prefered functions";
+ "Define objective function constraint as a list of preferred functions";
leaf required {
type boolean;
default "true";
diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c
index d0c86a6bb0..ca83a42685 100644
--- a/zebra/kernel_netlink.c
+++ b/zebra/kernel_netlink.c
@@ -1201,7 +1201,7 @@ static int nl_batch_read_resp(struct nl_batch *bth)
if (dplane_ctx_get_ns(ctx)->seq > seq)
zlog_warn(
- "%s:WARNING Recieved %u is less than any context on the queue ctx->seq %u",
+ "%s:WARNING Received %u is less than any context on the queue ctx->seq %u",
__func__, seq,
dplane_ctx_get_ns(ctx)->seq);
}