summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfdd/control.c1
-rw-r--r--bgpd/bgp_clist.c2
-rw-r--r--doc/user/ospfd.rst11
-rw-r--r--eigrpd/eigrp_filter.c4
-rw-r--r--eigrpd/eigrp_hello.c2
-rw-r--r--eigrpd/eigrp_interface.c2
-rw-r--r--eigrpd/eigrp_packet.c6
-rw-r--r--eigrpd/eigrp_update.c4
-rw-r--r--eigrpd/eigrpd.c1
-rw-r--r--isisd/fabricd.c1
-rw-r--r--isisd/isis_cli.c9
-rw-r--r--isisd/isis_redist.c10
-rw-r--r--isisd/isis_tx_queue.c1
-rw-r--r--isisd/isisd.h9
-rw-r--r--ldpd/accept.c4
-rw-r--r--ldpd/interface.c1
-rw-r--r--ldpd/lde.c2
-rw-r--r--ldpd/lde_lib.c1
-rw-r--r--ldpd/ldpd.c4
-rw-r--r--ldpd/ldpe.c6
-rw-r--r--ldpd/packet.c3
-rw-r--r--lib/command_graph.h4
-rw-r--r--lib/northbound_grpc.cpp4
-rw-r--r--nhrpd/netlink_arp.c1
-rw-r--r--nhrpd/nhrp_event.c3
-rw-r--r--nhrpd/nhrp_multicast.c1
-rw-r--r--nhrpd/nhrp_nhs.c3
-rw-r--r--nhrpd/nhrp_peer.c1
-rw-r--r--nhrpd/nhrp_shortcut.c1
-rw-r--r--nhrpd/vici.c3
-rw-r--r--ospf6d/ospf6_asbr.c1
-rw-r--r--ospf6d/ospf6_flood.c3
-rw-r--r--ospf6d/ospf6_interface.c1
-rw-r--r--ospf6d/ospf6_lsa.c1
-rw-r--r--ospf6d/ospf6_message.c6
-rw-r--r--ospf6d/ospf6_neighbor.c4
-rw-r--r--ospf6d/ospf6_nssa.c16
-rw-r--r--ospfd/ospf_gr_helper.c6
-rw-r--r--ospfd/ospf_nsm.c7
-rw-r--r--pimd/pim_igmp.c2
-rw-r--r--pimd/pim_msdp_socket.c1
-rw-r--r--pimd/pim_pim.c1
-rw-r--r--python/clidef.py2
-rw-r--r--ripd/rip_interface.c1
-rw-r--r--ripd/rip_peer.c1
-rw-r--r--ripd/ripd.c12
-rw-r--r--ripngd/ripng_interface.c1
-rw-r--r--ripngd/ripngd.c11
-rw-r--r--ripngd/ripngd.h3
-rw-r--r--tests/lib/test_timer_correctness.c1
-rw-r--r--tests/lib/test_timer_performance.c2
-rw-r--r--tools/coccinelle/struct_thread_null.cocci9
-rw-r--r--watchfrr/watchfrr.c6
-rw-r--r--zebra/irdp_main.c1
-rw-r--r--zebra/irdp_packet.c1
-rw-r--r--zebra/zebra_netns_notify.c1
-rw-r--r--zebra/zebra_vty.c1
57 files changed, 56 insertions, 151 deletions
diff --git a/bfdd/control.c b/bfdd/control.c
index 4929bf1998..e772aadfc4 100644
--- a/bfdd/control.c
+++ b/bfdd/control.c
@@ -167,7 +167,6 @@ int control_accept(struct thread *t)
control_new(csock);
- bglobal.bg_csockev = NULL;
thread_add_read(master, control_accept, NULL, sd, &bglobal.bg_csockev);
return 0;
diff --git a/bgpd/bgp_clist.c b/bgpd/bgp_clist.c
index 33e3db2c16..0e590a463c 100644
--- a/bgpd/bgp_clist.c
+++ b/bgpd/bgp_clist.c
@@ -720,7 +720,7 @@ bool lcommunity_list_exact_match(struct lcommunity *lcom,
return entry->direct == COMMUNITY_PERMIT;
if (entry->style == LARGE_COMMUNITY_LIST_STANDARD) {
- if (lcommunity_cmp(lcom, entry->u.com))
+ if (lcommunity_cmp(lcom, entry->u.lcom))
return entry->direct == COMMUNITY_PERMIT;
} else if (entry->style == LARGE_COMMUNITY_LIST_EXPANDED) {
if (lcommunity_regexp_match(lcom, entry->reg))
diff --git a/doc/user/ospfd.rst b/doc/user/ospfd.rst
index 0122e2ac75..26675c27fd 100644
--- a/doc/user/ospfd.rst
+++ b/doc/user/ospfd.rst
@@ -691,13 +691,12 @@ Redistribution
the 'always' keyword is given then the default is always advertised, even
when there is no default present in the routing table.
-.. clicmd:: distribute-list NAME out (kernel|connected|static|rip|ospf
-
-
.. _ospf-distribute-list:
+.. clicmd:: distribute-list NAME out <kernel|connected|static|rip|isis|bgp|eigrp|nhrp|table|vnc|babel|openfabric>
+
Apply the access-list filter, NAME, to redistributed routes of the given
- type before allowing the routes to redistributed into OSPF
+ type before allowing the routes to be redistributed into OSPF
(:ref:`ospf redistribution <ospf-redistribute>`).
.. clicmd:: default-metric (0-16777214)
@@ -954,8 +953,6 @@ Router Information
Show Router Capabilities PCE parameters.
-.. _debugging-ospf:
-
Segment Routing
===============
@@ -1042,6 +1039,8 @@ TI-LFA requires a proper Segment Routing configuration.
Note that so far only P2P interfaces are supported.
+.. _debugging-ospf:
+
Debugging OSPF
==============
diff --git a/eigrpd/eigrp_filter.c b/eigrpd/eigrp_filter.c
index 8f80b78d20..bb0cf51bd8 100644
--- a/eigrpd/eigrp_filter.c
+++ b/eigrpd/eigrp_filter.c
@@ -203,9 +203,8 @@ void eigrp_distribute_update(struct distribute_ctx *ctx,
/* Cancel GR scheduled */
thread_cancel(&(ei->t_distribute));
/* schedule Graceful restart for interface in 10sec */
- e->t_distribute = NULL;
thread_add_timer(master, eigrp_distribute_timer_interface, ei, 10,
- &e->t_distribute);
+ &ei->t_distribute);
}
/*
@@ -263,7 +262,6 @@ int eigrp_distribute_timer_process(struct thread *thread)
struct eigrp *eigrp;
eigrp = THREAD_ARG(thread);
- eigrp->t_distribute = NULL;
/* execute GR for whole process */
eigrp_update_send_process_GR(eigrp, EIGRP_GR_FILTER, NULL);
diff --git a/eigrpd/eigrp_hello.c b/eigrpd/eigrp_hello.c
index e3680b31a3..2ff8fc5f39 100644
--- a/eigrpd/eigrp_hello.c
+++ b/eigrpd/eigrp_hello.c
@@ -86,7 +86,6 @@ int eigrp_hello_timer(struct thread *thread)
struct eigrp_interface *ei;
ei = THREAD_ARG(thread);
- ei->t_hello = NULL;
if (IS_DEBUG_EIGRP(0, TIMERS))
zlog_debug("Start Hello Timer (%s) Expire [%u]", IF_NAME(ei),
@@ -96,7 +95,6 @@ int eigrp_hello_timer(struct thread *thread)
eigrp_hello_send(ei, EIGRP_HELLO_NORMAL, NULL);
/* Hello timer set. */
- ei->t_hello = NULL;
thread_add_timer(master, eigrp_hello_timer, ei, ei->params.v_hello,
&ei->t_hello);
diff --git a/eigrpd/eigrp_interface.c b/eigrpd/eigrp_interface.c
index 02e943043f..28987b4af6 100644
--- a/eigrpd/eigrp_interface.c
+++ b/eigrpd/eigrp_interface.c
@@ -265,7 +265,7 @@ int eigrp_if_up(struct eigrp_interface *ei)
/* Set multicast memberships appropriately for new state. */
eigrp_if_set_multicast(ei);
- thread_add_event(master, eigrp_hello_timer, ei, (1), NULL);
+ thread_add_event(master, eigrp_hello_timer, ei, (1), &ei->t_hello);
/*Prepare metrics*/
metric.bandwidth = eigrp_bandwidth_to_scaled(ei->params.bandwidth);
diff --git a/eigrpd/eigrp_packet.c b/eigrpd/eigrp_packet.c
index 39e384c121..529d94567d 100644
--- a/eigrpd/eigrp_packet.c
+++ b/eigrpd/eigrp_packet.c
@@ -340,8 +340,6 @@ int eigrp_write(struct thread *thread)
#endif /* WANT_EIGRP_WRITE_FRAGMENT */
#define EIGRP_WRITE_IPHL_SHIFT 2
- eigrp->t_write = NULL;
-
node = listhead(eigrp->oi_write_q);
assert(node);
ei = listgetdata(node);
@@ -470,7 +468,6 @@ out:
/* If packets still remain in queue, call write thread. */
if (!list_isempty(eigrp->oi_write_q)) {
- eigrp->t_write = NULL;
thread_add_write(master, eigrp_write, eigrp, eigrp->fd,
&eigrp->t_write);
}
@@ -497,7 +494,6 @@ int eigrp_read(struct thread *thread)
eigrp = THREAD_ARG(thread);
/* prepare for next packet. */
- eigrp->t_read = NULL;
thread_add_read(master, eigrp_read, eigrp, eigrp->fd, &eigrp->t_read);
stream_reset(eigrp->ibuf);
@@ -1013,7 +1009,6 @@ int eigrp_unack_packet_retrans(struct thread *thread)
return eigrp_retrans_count_exceeded(ep, nbr);
/*Start retransmission timer*/
- ep->t_retrans_timer = NULL;
thread_add_timer(master, eigrp_unack_packet_retrans, nbr,
EIGRP_PACKET_RETRANS_TIME,
&ep->t_retrans_timer);
@@ -1049,7 +1044,6 @@ int eigrp_unack_multicast_packet_retrans(struct thread *thread)
return eigrp_retrans_count_exceeded(ep, nbr);
/*Start retransmission timer*/
- ep->t_retrans_timer = NULL;
thread_add_timer(master, eigrp_unack_multicast_packet_retrans,
nbr, EIGRP_PACKET_RETRANS_TIME,
&ep->t_retrans_timer);
diff --git a/eigrpd/eigrp_update.c b/eigrpd/eigrp_update.c
index 0dc509706c..8a9eea8a79 100644
--- a/eigrpd/eigrp_update.c
+++ b/eigrpd/eigrp_update.c
@@ -917,12 +917,10 @@ int eigrp_update_send_GR_thread(struct thread *thread)
/* get argument from thread */
nbr = THREAD_ARG(thread);
/* remove this thread pointer */
- nbr->t_nbr_send_gr = NULL;
/* if there is packet waiting in queue,
* schedule this thread again with small delay */
if (nbr->retrans_queue->count > 0) {
- nbr->t_nbr_send_gr = NULL;
thread_add_timer_msec(master, eigrp_update_send_GR_thread, nbr,
10, &nbr->t_nbr_send_gr);
return 0;
@@ -934,7 +932,6 @@ int eigrp_update_send_GR_thread(struct thread *thread)
/* if it wasn't last chunk, schedule this thread again */
if (nbr->nbr_gr_packet_type != EIGRP_PACKET_PART_LAST) {
thread_execute(master, eigrp_update_send_GR_thread, nbr, 0);
- nbr->t_nbr_send_gr = NULL;
}
return 0;
@@ -1003,7 +1000,6 @@ void eigrp_update_send_GR(struct eigrp_neighbor *nbr, enum GR_type gr_type,
nbr->nbr_gr_packet_type = EIGRP_PACKET_PART_FIRST;
/* execute packet sending in thread */
thread_execute(master, eigrp_update_send_GR_thread, nbr, 0);
- nbr->t_nbr_send_gr = NULL;
}
/**
diff --git a/eigrpd/eigrpd.c b/eigrpd/eigrpd.c
index 1030154907..84d4f6aeeb 100644
--- a/eigrpd/eigrpd.c
+++ b/eigrpd/eigrpd.c
@@ -171,7 +171,6 @@ static struct eigrp *eigrp_new(uint16_t as, vrf_id_t vrf_id)
eigrp->ibuf = stream_new(EIGRP_PACKET_MAX_LEN + 1);
- eigrp->t_read = NULL;
thread_add_read(master, eigrp_read, eigrp, eigrp->fd, &eigrp->t_read);
eigrp->oi_write_q = list_new();
diff --git a/isisd/fabricd.c b/isisd/fabricd.c
index 20651706d3..0f10a1516a 100644
--- a/isisd/fabricd.c
+++ b/isisd/fabricd.c
@@ -413,7 +413,6 @@ static int fabricd_tier_calculation_cb(struct thread *thread)
{
struct fabricd *f = THREAD_ARG(thread);
uint8_t tier = ISIS_TIER_UNDEFINED;
- f->tier_calculation_timer = NULL;
tier = fabricd_calculate_fabric_tier(f->area);
if (tier == ISIS_TIER_UNDEFINED)
diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c
index 70ec66fd7f..f48b142b1a 100644
--- a/isisd/isis_cli.c
+++ b/isisd/isis_cli.c
@@ -1330,11 +1330,14 @@ void cli_show_isis_def_origin_ipv6(struct vty *vty, struct lyd_node *dnode,
* XPath: /frr-isisd:isis/instance/redistribute
*/
DEFPY_YANG(isis_redistribute, isis_redistribute_cmd,
- "[no] redistribute <ipv4|ipv6>$ip " PROTO_REDIST_STR
- "$proto <level-1|level-2>$level [{metric (0-16777215)|route-map WORD}]",
+ "[no] redistribute <ipv4$ip " PROTO_IP_REDIST_STR "$proto|ipv6$ip "
+ PROTO_IP6_REDIST_STR "$proto> <level-1|level-2>$level"
+ "[{metric (0-16777215)|route-map WORD}]",
NO_STR REDIST_STR
"Redistribute IPv4 routes\n"
- "Redistribute IPv6 routes\n" PROTO_REDIST_HELP
+ PROTO_IP_REDIST_HELP
+ "Redistribute IPv6 routes\n"
+ PROTO_IP6_REDIST_HELP
"Redistribute into level-1\n"
"Redistribute into level-2\n"
"Metric for redistributed routes\n"
diff --git a/isisd/isis_redist.c b/isisd/isis_redist.c
index 2f5e490da1..45d69bc352 100644
--- a/isisd/isis_redist.c
+++ b/isisd/isis_redist.c
@@ -543,12 +543,13 @@ void isis_redist_area_finish(struct isis_area *area)
#ifdef FABRICD
DEFUN (isis_redistribute,
isis_redistribute_cmd,
- "redistribute <ipv4|ipv6> " PROTO_REDIST_STR
+ "redistribute <ipv4 " PROTO_IP_REDIST_STR "|ipv6 " PROTO_IP6_REDIST_STR ">"
" [{metric (0-16777215)|route-map WORD}]",
REDIST_STR
"Redistribute IPv4 routes\n"
+ PROTO_IP_REDIST_HELP
"Redistribute IPv6 routes\n"
- PROTO_REDIST_HELP
+ PROTO_IP6_REDIST_HELP
"Metric for redistributed routes\n"
"ISIS default metric\n"
"Route map reference\n"
@@ -599,12 +600,13 @@ DEFUN (isis_redistribute,
DEFUN (no_isis_redistribute,
no_isis_redistribute_cmd,
- "no redistribute <ipv4|ipv6> " PROTO_REDIST_STR,
+ "no redistribute <ipv4 " PROTO_IP_REDIST_STR "|ipv6 " PROTO_IP6_REDIST_STR ">",
NO_STR
REDIST_STR
"Redistribute IPv4 routes\n"
+ PROTO_IP_REDIST_HELP
"Redistribute IPv6 routes\n"
- PROTO_REDIST_HELP)
+ PROTO_IP6_REDIST_HELP)
{
int idx_afi = 2;
int idx_protocol = 3;
diff --git a/isisd/isis_tx_queue.c b/isisd/isis_tx_queue.c
index c7266152b7..d3da5b9d39 100644
--- a/isisd/isis_tx_queue.c
+++ b/isisd/isis_tx_queue.c
@@ -119,7 +119,6 @@ static int tx_queue_send_event(struct thread *thread)
struct isis_tx_queue_entry *e = THREAD_ARG(thread);
struct isis_tx_queue *queue = e->queue;
- e->retry = NULL;
thread_add_timer(master, tx_queue_send_event, e, 5, &e->retry);
if (e->is_retry)
diff --git a/isisd/isisd.h b/isisd/isisd.h
index 64fbf78a07..3febda1d87 100644
--- a/isisd/isisd.h
+++ b/isisd/isisd.h
@@ -46,7 +46,11 @@ static const bool fabricd = true;
#define PROTO_NAME "openfabric"
#define PROTO_HELP "OpenFabric routing protocol\n"
#define PROTO_REDIST_STR FRR_REDIST_STR_FABRICD
+#define PROTO_IP_REDIST_STR FRR_IP_REDIST_STR_FABRICD
+#define PROTO_IP6_REDIST_STR FRR_IP6_REDIST_STR_FABRICD
#define PROTO_REDIST_HELP FRR_REDIST_HELP_STR_FABRICD
+#define PROTO_IP_REDIST_HELP FRR_IP_REDIST_HELP_STR_FABRICD
+#define PROTO_IP6_REDIST_HELP FRR_IP6_REDIST_HELP_STR_FABRICD
#define ROUTER_NODE OPENFABRIC_NODE
#else
static const bool fabricd = false;
@@ -54,7 +58,11 @@ static const bool fabricd = false;
#define PROTO_NAME "isis"
#define PROTO_HELP "IS-IS routing protocol\n"
#define PROTO_REDIST_STR FRR_REDIST_STR_ISISD
+#define PROTO_IP_REDIST_STR FRR_IP_REDIST_STR_ISISD
+#define PROTO_IP6_REDIST_STR FRR_IP6_REDIST_STR_ISISD
#define PROTO_REDIST_HELP FRR_REDIST_HELP_STR_ISISD
+#define PROTO_IP_REDIST_HELP FRR_IP_REDIST_HELP_STR_ISISD
+#define PROTO_IP6_REDIST_HELP FRR_IP6_REDIST_HELP_STR_ISISD
#define ROUTER_NODE ISIS_NODE
extern void isis_cli_init(void);
#endif
@@ -248,7 +256,6 @@ void isis_terminate(void);
void isis_master_init(struct thread_master *master);
void isis_vrf_link(struct isis *isis, struct vrf *vrf);
void isis_vrf_unlink(struct isis *isis, struct vrf *vrf);
-void isis_global_instance_create(const char *vrf_name);
struct isis *isis_lookup_by_vrfid(vrf_id_t vrf_id);
struct isis *isis_lookup_by_vrfname(const char *vrfname);
struct isis *isis_lookup_by_sysid(const uint8_t *sysid);
diff --git a/ldpd/accept.c b/ldpd/accept.c
index 9bba0f5ddd..e8d3976ee9 100644
--- a/ldpd/accept.c
+++ b/ldpd/accept.c
@@ -58,7 +58,6 @@ accept_add(int fd, int (*cb)(struct thread *), void *arg)
av->arg = arg;
LIST_INSERT_HEAD(&accept_queue.queue, av, entry);
- av->ev = NULL;
thread_add_read(master, accept_cb, av, av->fd, &av->ev);
log_debug("%s: accepting on fd %d", __func__, fd);
@@ -86,7 +85,6 @@ accept_pause(void)
{
log_debug(__func__);
accept_unarm();
- accept_queue.evt = NULL;
thread_add_timer(master, accept_timeout, NULL, 1, &accept_queue.evt);
}
@@ -105,7 +103,6 @@ accept_arm(void)
{
struct accept_ev *av;
LIST_FOREACH(av, &accept_queue.queue, entry) {
- av->ev = NULL;
thread_add_read(master, accept_cb, av, av->fd, &av->ev);
}
}
@@ -122,7 +119,6 @@ static int
accept_cb(struct thread *thread)
{
struct accept_ev *av = THREAD_ARG(thread);
- av->ev = NULL;
thread_add_read(master, accept_cb, av, av->fd, &av->ev);
av->accept_cb(thread);
diff --git a/ldpd/interface.c b/ldpd/interface.c
index 3e9f2fa991..5e04eab1b3 100644
--- a/ldpd/interface.c
+++ b/ldpd/interface.c
@@ -471,7 +471,6 @@ static void
if_start_hello_timer(struct iface_af *ia)
{
thread_cancel(&ia->hello_timer);
- ia->hello_timer = NULL;
thread_add_timer(master, if_hello_timer, ia, if_get_hello_interval(ia),
&ia->hello_timer);
}
diff --git a/ldpd/lde.c b/ldpd/lde.c
index 2d35d097a1..babadc461f 100644
--- a/ldpd/lde.c
+++ b/ldpd/lde.c
@@ -145,7 +145,6 @@ lde(void)
fatal(NULL);
imsg_init(&iev_main->ibuf, LDPD_FD_ASYNC);
iev_main->handler_read = lde_dispatch_parent;
- iev_main->ev_read = NULL;
thread_add_read(master, iev_main->handler_read, iev_main, iev_main->ibuf.fd,
&iev_main->ev_read);
iev_main->handler_write = ldp_write_handler;
@@ -555,7 +554,6 @@ lde_dispatch_parent(struct thread *thread)
fatal(NULL);
imsg_init(&iev_ldpe->ibuf, fd);
iev_ldpe->handler_read = lde_dispatch_imsg;
- iev_ldpe->ev_read = NULL;
thread_add_read(master, iev_ldpe->handler_read, iev_ldpe, iev_ldpe->ibuf.fd,
&iev_ldpe->ev_read);
iev_ldpe->handler_write = ldp_write_handler;
diff --git a/ldpd/lde_lib.c b/ldpd/lde_lib.c
index 0f91f49920..33bb6c0fc7 100644
--- a/ldpd/lde_lib.c
+++ b/ldpd/lde_lib.c
@@ -1072,7 +1072,6 @@ void
lde_gc_start_timer(void)
{
thread_cancel(&gc_timer);
- gc_timer = NULL;
thread_add_timer(master, lde_gc_timer, NULL, LDE_GC_INTERVAL,
&gc_timer);
}
diff --git a/ldpd/ldpd.c b/ldpd/ldpd.c
index e24eba7cd4..9d80bed77f 100644
--- a/ldpd/ldpd.c
+++ b/ldpd/ldpd.c
@@ -403,28 +403,24 @@ main(int argc, char *argv[])
fatal(NULL);
imsg_init(&iev_ldpe->ibuf, pipe_parent2ldpe[0]);
iev_ldpe->handler_read = main_dispatch_ldpe;
- iev_ldpe->ev_read = NULL;
thread_add_read(master, iev_ldpe->handler_read, iev_ldpe, iev_ldpe->ibuf.fd,
&iev_ldpe->ev_read);
iev_ldpe->handler_write = ldp_write_handler;
imsg_init(&iev_ldpe_sync->ibuf, pipe_parent2ldpe_sync[0]);
iev_ldpe_sync->handler_read = main_dispatch_ldpe;
- iev_ldpe_sync->ev_read = NULL;
thread_add_read(master, iev_ldpe_sync->handler_read, iev_ldpe_sync, iev_ldpe_sync->ibuf.fd,
&iev_ldpe_sync->ev_read);
iev_ldpe_sync->handler_write = ldp_write_handler;
imsg_init(&iev_lde->ibuf, pipe_parent2lde[0]);
iev_lde->handler_read = main_dispatch_lde;
- iev_lde->ev_read = NULL;
thread_add_read(master, iev_lde->handler_read, iev_lde, iev_lde->ibuf.fd,
&iev_lde->ev_read);
iev_lde->handler_write = ldp_write_handler;
imsg_init(&iev_lde_sync->ibuf, pipe_parent2lde_sync[0]);
iev_lde_sync->handler_read = main_dispatch_lde;
- iev_lde_sync->ev_read = NULL;
thread_add_read(master, iev_lde_sync->handler_read, iev_lde_sync, iev_lde_sync->ibuf.fd,
&iev_lde_sync->ev_read);
iev_lde_sync->handler_write = ldp_write_handler;
diff --git a/ldpd/ldpe.c b/ldpd/ldpe.c
index 428d2ab7b4..fff7ee7c67 100644
--- a/ldpd/ldpe.c
+++ b/ldpd/ldpe.c
@@ -122,7 +122,6 @@ ldpe(void)
fatal(NULL);
imsg_init(&iev_main->ibuf, LDPD_FD_ASYNC);
iev_main->handler_read = ldpe_dispatch_main;
- iev_main->ev_read = NULL;
thread_add_read(master, iev_main->handler_read, iev_main, iev_main->ibuf.fd,
&iev_main->ev_read);
iev_main->handler_write = ldp_write_handler;
@@ -149,7 +148,6 @@ ldpe_init(struct ldpd_init *init)
/* This socket must be open before dropping privileges. */
global.pfkeysock = pfkey_init();
if (sysdep.no_pfkey == 0) {
- pfkey_ev = NULL;
thread_add_read(master, ldpe_dispatch_pfkey, NULL, global.pfkeysock,
&pfkey_ev);
}
@@ -377,7 +375,6 @@ ldpe_dispatch_main(struct thread *thread)
fatal(NULL);
imsg_init(&iev_lde->ibuf, fd);
iev_lde->handler_read = ldpe_dispatch_lde;
- iev_lde->ev_read = NULL;
thread_add_read(master, iev_lde->handler_read, iev_lde, iev_lde->ibuf.fd,
&iev_lde->ev_read);
iev_lde->handler_write = ldp_write_handler;
@@ -784,7 +781,6 @@ ldpe_dispatch_pfkey(struct thread *thread)
{
int fd = THREAD_FD(thread);
- pfkey_ev = NULL;
thread_add_read(master, ldpe_dispatch_pfkey, NULL, global.pfkeysock,
&pfkey_ev);
@@ -805,13 +801,11 @@ ldpe_setup_sockets(int af, int disc_socket, int edisc_socket,
/* discovery socket */
af_global->ldp_disc_socket = disc_socket;
- af_global->disc_ev = NULL;
thread_add_read(master, disc_recv_packet, &af_global->disc_ev, af_global->ldp_disc_socket,
&af_global->disc_ev);
/* extended discovery socket */
af_global->ldp_edisc_socket = edisc_socket;
- af_global->edisc_ev = NULL;
thread_add_read(master, disc_recv_packet, &af_global->edisc_ev, af_global->ldp_edisc_socket,
&af_global->edisc_ev);
diff --git a/ldpd/packet.c b/ldpd/packet.c
index 8735faf3dd..56af16d280 100644
--- a/ldpd/packet.c
+++ b/ldpd/packet.c
@@ -141,7 +141,6 @@ disc_recv_packet(struct thread *thread)
struct in_addr lsr_id;
/* reschedule read */
- *threadp = NULL;
thread_add_read(master, disc_recv_packet, threadp, fd, threadp);
/* setup buffer */
@@ -425,7 +424,6 @@ session_read(struct thread *thread)
uint16_t pdu_len, msg_len, msg_size, max_pdu_len;
int ret;
- tcp->rev = NULL;
thread_add_read(master, session_read, nbr, fd, &tcp->rev);
if ((n = read(fd, tcp->rbuf->buf + tcp->rbuf->wpos,
@@ -745,7 +743,6 @@ tcp_new(int fd, struct nbr *nbr)
if ((tcp->rbuf = calloc(1, sizeof(struct ibuf_read))) == NULL)
fatal(__func__);
- tcp->rev = NULL;
thread_add_read(master, session_read, nbr, tcp->fd, &tcp->rev);
tcp->nbr = nbr;
}
diff --git a/lib/command_graph.h b/lib/command_graph.h
index c20c9874c2..86157f872e 100644
--- a/lib/command_graph.h
+++ b/lib/command_graph.h
@@ -79,11 +79,11 @@ enum { CMD_ATTR_NORMAL,
CMD_ATTR_YANG,
};
-/* Comamand token struct. */
+/* Command token struct. */
struct cmd_token {
enum cmd_token_type type; // token type
uint8_t attr; // token attributes
- bool allowrepeat; // matcher allowed to match token repetively?
+ bool allowrepeat; // matcher allowed to match token repetitively?
uint32_t refcnt;
char *text; // token text
diff --git a/lib/northbound_grpc.cpp b/lib/northbound_grpc.cpp
index 71f07dfe86..e227d0385c 100644
--- a/lib/northbound_grpc.cpp
+++ b/lib/northbound_grpc.cpp
@@ -344,6 +344,10 @@ static struct lyd_node *get_dnode_config(const std::string &path)
{
struct lyd_node *dnode;
+ if (!yang_dnode_exists(running_config->dnode,
+ path.empty() ? NULL : path.c_str()))
+ return NULL;
+
dnode = yang_dnode_get(running_config->dnode,
path.empty() ? NULL : path.c_str());
if (dnode)
diff --git a/nhrpd/netlink_arp.c b/nhrpd/netlink_arp.c
index 5fcb311888..0a618056d5 100644
--- a/nhrpd/netlink_arp.c
+++ b/nhrpd/netlink_arp.c
@@ -107,7 +107,6 @@ static int netlink_log_recv(struct thread *t)
struct zbuf payload, zb;
struct nlmsghdr *n;
- netlink_log_thread = NULL;
zbuf_init(&zb, buf, sizeof(buf), 0);
while (zbuf_recv(&zb, fd) > 0) {
diff --git a/nhrpd/nhrp_event.c b/nhrpd/nhrp_event.c
index f784ef22d6..206b2caccf 100644
--- a/nhrpd/nhrp_event.c
+++ b/nhrpd/nhrp_event.c
@@ -84,7 +84,6 @@ static int evmgr_read(struct thread *t)
struct zbuf *ibuf = &evmgr->ibuf;
struct zbuf msg;
- evmgr->t_read = NULL;
if (zbuf_read(ibuf, evmgr->fd, (size_t)-1) < 0) {
evmgr_connection_error(evmgr);
return 0;
@@ -103,7 +102,6 @@ static int evmgr_write(struct thread *t)
struct event_manager *evmgr = THREAD_ARG(t);
int r;
- evmgr->t_write = NULL;
r = zbufq_write(&evmgr->obuf, evmgr->fd);
if (r > 0) {
thread_add_write(master, evmgr_write, evmgr, evmgr->fd,
@@ -193,7 +191,6 @@ static int evmgr_reconnect(struct thread *t)
struct event_manager *evmgr = THREAD_ARG(t);
int fd;
- evmgr->t_reconnect = NULL;
if (evmgr->fd >= 0 || !nhrp_event_socket_path)
return 0;
diff --git a/nhrpd/nhrp_multicast.c b/nhrpd/nhrp_multicast.c
index b78afda2c4..339b6dfabe 100644
--- a/nhrpd/nhrp_multicast.c
+++ b/nhrpd/nhrp_multicast.c
@@ -149,7 +149,6 @@ static int netlink_mcast_log_recv(struct thread *t)
struct zbuf payload, zb;
struct nlmsghdr *n;
- netlink_mcast_log_thread = NULL;
zbuf_init(&zb, buf, sizeof(buf), 0);
while (zbuf_recv(&zb, fd) > 0) {
diff --git a/nhrpd/nhrp_nhs.c b/nhrpd/nhrp_nhs.c
index 9dfaf073d8..5179f15ebf 100644
--- a/nhrpd/nhrp_nhs.c
+++ b/nhrpd/nhrp_nhs.c
@@ -112,7 +112,6 @@ static int nhrp_reg_timeout(struct thread *t)
struct nhrp_registration *r = THREAD_ARG(t);
struct nhrp_cache *c;
- r->t_register = NULL;
if (r->timeout >= 16 && sockunion_family(&r->proto_addr) != AF_UNSPEC) {
nhrp_reqid_free(&nhrp_packet_reqid, &r->reqid);
@@ -176,7 +175,6 @@ static int nhrp_reg_send_req(struct thread *t)
struct nhrp_extension_header *ext;
struct nhrp_cie_header *cie;
- r->t_register = NULL;
if (!nhrp_peer_check(r->peer, 2)) {
debugf(NHRP_DEBUG_COMMON, "NHS: Waiting link for %pSU",
&r->peer->vc->remote.nbma);
@@ -281,7 +279,6 @@ static void nhrp_nhs_resolve_cb(struct resolver_query *q, const char *errstr,
struct nhrp_registration *reg, *regn;
int i;
- nhs->t_resolve = NULL;
if (n < 0) {
/* Failed, retry in a moment */
thread_add_timer(master, nhrp_nhs_resolve, nhs, 5,
diff --git a/nhrpd/nhrp_peer.c b/nhrpd/nhrp_peer.c
index 5a7da703ac..030f4c0ff3 100644
--- a/nhrpd/nhrp_peer.c
+++ b/nhrpd/nhrp_peer.c
@@ -265,7 +265,6 @@ static int nhrp_peer_request_timeout(struct thread *t)
struct interface *ifp = p->ifp;
struct nhrp_interface *nifp = ifp->info;
- p->t_fallback = NULL;
if (p->online)
return 0;
diff --git a/nhrpd/nhrp_shortcut.c b/nhrpd/nhrp_shortcut.c
index 0905ceb72a..244273cd58 100644
--- a/nhrpd/nhrp_shortcut.c
+++ b/nhrpd/nhrp_shortcut.c
@@ -39,7 +39,6 @@ static int nhrp_shortcut_do_expire(struct thread *t)
{
struct nhrp_shortcut *s = THREAD_ARG(t);
- s->t_timer = NULL;
thread_add_timer(master, nhrp_shortcut_do_purge, s, s->holding_time / 3,
&s->t_timer);
s->expiring = 1;
diff --git a/nhrpd/vici.c b/nhrpd/vici.c
index c21e01601c..8fce828663 100644
--- a/nhrpd/vici.c
+++ b/nhrpd/vici.c
@@ -361,7 +361,6 @@ static int vici_read(struct thread *t)
struct zbuf *ibuf = &vici->ibuf;
struct zbuf pktbuf;
- vici->t_read = NULL;
if (zbuf_read(ibuf, vici->fd, (size_t)-1) < 0) {
vici_connection_error(vici);
return 0;
@@ -392,7 +391,6 @@ static int vici_write(struct thread *t)
struct vici_conn *vici = THREAD_ARG(t);
int r;
- vici->t_write = NULL;
r = zbufq_write(&vici->obuf, vici->fd);
if (r > 0) {
thread_add_write(master, vici_write, vici, vici->fd,
@@ -509,7 +507,6 @@ static int vici_reconnect(struct thread *t)
int fd;
char *file_path;
- vici->t_reconnect = NULL;
if (vici->fd >= 0)
return 0;
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index df40c608a1..3a6078ff0a 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -1139,7 +1139,6 @@ void ospf6_asbr_distribute_list_update(struct ospf6 *ospf6,
if (IS_OSPF6_DEBUG_ASBR)
zlog_debug("%s: trigger redistribute reset thread", __func__);
- ospf6->t_distribute_update = NULL;
thread_add_timer_msec(master, ospf6_asbr_routemap_update_timer, ospf6,
OSPF_MIN_LS_INTERVAL,
&ospf6->t_distribute_update);
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 186eac35a5..6ad2a70f08 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -288,7 +288,6 @@ void ospf6_install_lsa(struct ospf6_lsa *lsa)
monotime(&now);
if (!OSPF6_LSA_IS_MAXAGE(lsa)) {
- lsa->expire = NULL;
thread_add_timer(master, ospf6_lsa_expire, lsa,
OSPF_LSA_MAXAGE + lsa->birth.tv_sec
- now.tv_sec,
@@ -547,7 +546,6 @@ void ospf6_flood_interface(struct ospf6_neighbor *from, struct ospf6_lsa *lsa,
/* reschedule retransmissions to all neighbors */
for (ALL_LIST_ELEMENTS(oi->neighbor_list, node, nnode, on)) {
THREAD_OFF(on->thread_send_lsupdate);
- on->thread_send_lsupdate = NULL;
thread_add_event(master, ospf6_lsupdate_send_neighbor,
on, 0, &on->thread_send_lsupdate);
}
@@ -1113,7 +1111,6 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from,
"Newer instance of the self-originated LSA");
zlog_debug("Schedule reorigination");
}
- new->refresh = NULL;
thread_add_event(master, ospf6_lsa_refresh, new, 0,
&new->refresh);
}
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index b63a3c02db..a3eb1445f1 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -819,7 +819,6 @@ int interface_up(struct thread *thread)
/* Schedule Hello */
if (!CHECK_FLAG(oi->flag, OSPF6_INTERFACE_PASSIVE)
&& !if_is_loopback_or_vrf(oi->interface)) {
- oi->thread_send_hello = NULL;
thread_add_event(master, ospf6_hello_send, oi, 0,
&oi->thread_send_hello);
}
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index ac07704d2c..f406e828e1 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -891,7 +891,6 @@ int ospf6_lsa_refresh(struct thread *thread)
new = ospf6_lsa_create(self->header);
new->lsdb = old->lsdb;
- new->refresh = NULL;
thread_add_timer(master, ospf6_lsa_refresh, new, OSPF_LS_REFRESH_TIME,
&new->refresh);
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index 64de9bae41..56dcbb69cb 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -775,7 +775,6 @@ static void ospf6_dbdesc_recv_master(struct ospf6_header *oh,
&& !CHECK_FLAG(on->dbdesc_bits, OSPF6_DBDESC_MBIT))
thread_add_event(master, exchange_done, on, 0, NULL);
else {
- on->thread_send_dbdesc = NULL;
thread_add_event(master, ospf6_dbdesc_send_newone, on, 0,
&on->thread_send_dbdesc);
}
@@ -856,7 +855,6 @@ static void ospf6_dbdesc_recv_slave(struct ospf6_header *oh,
zlog_debug(
"Duplicated dbdesc causes retransmit");
THREAD_OFF(on->thread_send_dbdesc);
- on->thread_send_dbdesc = NULL;
thread_add_event(master, ospf6_dbdesc_send, on, 0,
&on->thread_send_dbdesc);
return;
@@ -2399,7 +2397,6 @@ int ospf6_lsreq_send(struct thread *thread)
/* set next thread */
if (on->request_list->count != 0) {
- on->thread_send_lsreq = NULL;
thread_add_timer(master, ospf6_lsreq_send, on,
on->ospf6_if->rxmt_interval,
&on->thread_send_lsreq);
@@ -2585,11 +2582,9 @@ int ospf6_lsupdate_send_neighbor(struct thread *thread)
ospf6_packet_free(op);
if (on->lsupdate_list->count != 0) {
- on->thread_send_lsupdate = NULL;
thread_add_event(master, ospf6_lsupdate_send_neighbor, on, 0,
&on->thread_send_lsupdate);
} else if (on->retrans_list->count != 0) {
- on->thread_send_lsupdate = NULL;
thread_add_timer(master, ospf6_lsupdate_send_neighbor, on,
on->ospf6_if->rxmt_interval,
&on->thread_send_lsupdate);
@@ -2703,7 +2698,6 @@ int ospf6_lsupdate_send_interface(struct thread *thread)
ospf6_packet_free(op);
if (oi->lsupdate_list->count > 0) {
- oi->thread_send_lsupdate = NULL;
thread_add_event(master, ospf6_lsupdate_send_interface, oi, 0,
&oi->thread_send_lsupdate);
}
diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index 35fbd3991c..6f2795a56d 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -273,7 +273,6 @@ int hello_received(struct thread *thread)
/* reset Inactivity Timer */
THREAD_OFF(on->inactivity_timer);
- on->inactivity_timer = NULL;
thread_add_timer(master, inactivity_timer, on,
on->ospf6_if->dead_interval, &on->inactivity_timer);
@@ -312,7 +311,6 @@ int twoway_received(struct thread *thread)
SET_FLAG(on->dbdesc_bits, OSPF6_DBDESC_IBIT);
THREAD_OFF(on->thread_send_dbdesc);
- on->thread_send_dbdesc = NULL;
thread_add_event(master, ospf6_dbdesc_send, on, 0,
&on->thread_send_dbdesc);
@@ -438,7 +436,6 @@ void ospf6_check_nbr_loading(struct ospf6_neighbor *on)
else if (on->last_ls_req == NULL) {
if (on->thread_send_lsreq != NULL)
THREAD_OFF(on->thread_send_lsreq);
- on->thread_send_lsreq = NULL;
thread_add_event(master, ospf6_lsreq_send, on, 0,
&on->thread_send_lsreq);
}
@@ -620,7 +617,6 @@ int inactivity_timer(struct thread *thread)
if (IS_OSPF6_DEBUG_NEIGHBOR(EVENT))
zlog_debug("Neighbor Event %s: *InactivityTimer*", on->name);
- on->inactivity_timer = NULL;
on->drouter = on->prev_drouter = 0;
on->bdrouter = on->prev_bdrouter = 0;
diff --git a/ospf6d/ospf6_nssa.c b/ospf6d/ospf6_nssa.c
index 2339d339f7..809768fb5c 100644
--- a/ospf6d/ospf6_nssa.c
+++ b/ospf6d/ospf6_nssa.c
@@ -304,24 +304,16 @@ void ospf6_abr_remove_unapproved_summaries(struct ospf6 *ospf6)
type = htons(OSPF6_LSTYPE_INTER_ROUTER);
for (ALL_LSDB_TYPED_ADVRTR(area->lsdb, type, ospf6->router_id,
lsa)) {
- if (CHECK_FLAG(lsa->flag, OSPF6_LSA_UNAPPROVED)) {
- lsa->header->age = htons(OSPF_LSA_MAXAGE);
- THREAD_OFF(lsa->refresh);
- thread_execute(master, ospf6_lsa_expire, lsa,
- 0);
- }
+ if (CHECK_FLAG(lsa->flag, OSPF6_LSA_UNAPPROVED))
+ ospf6_lsa_premature_aging(lsa);
}
/* Inter area prefix LSA */
type = htons(OSPF6_LSTYPE_INTER_PREFIX);
for (ALL_LSDB_TYPED_ADVRTR(area->lsdb, type, ospf6->router_id,
lsa)) {
- if (CHECK_FLAG(lsa->flag, OSPF6_LSA_UNAPPROVED)) {
- lsa->header->age = htons(OSPF_LSA_MAXAGE);
- THREAD_OFF(lsa->refresh);
- thread_execute(master, ospf6_lsa_expire, lsa,
- 0);
- }
+ if (CHECK_FLAG(lsa->flag, OSPF6_LSA_UNAPPROVED))
+ ospf6_lsa_premature_aging(lsa);
}
}
diff --git a/ospfd/ospf_gr_helper.c b/ospfd/ospf_gr_helper.c
index 11ad45d30f..b3eaf7bbdb 100644
--- a/ospfd/ospf_gr_helper.c
+++ b/ospfd/ospf_gr_helper.c
@@ -723,14 +723,10 @@ void ospf_gr_helper_exit(struct ospf_neighbor *nbr,
/* check exit triggered due to successful completion
* of graceful restart.
- * If no, bring down the neighbour.
*/
if (reason != OSPF_GR_HELPER_COMPLETED) {
if (IS_DEBUG_OSPF_GR)
- zlog_debug(
- "%s, Failed GR exit, so bringing down the neighbour",
- __func__);
- OSPF_NSM_EVENT_SCHEDULE(nbr, NSM_KillNbr);
+ zlog_debug("%s, Unsuccessful GR exit", __func__);
}
/*Recalculate the DR for the network segment */
diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c
index 268fb81e52..dee25275d6 100644
--- a/ospfd/ospf_nsm.c
+++ b/ospfd/ospf_nsm.c
@@ -76,10 +76,13 @@ static int ospf_inactivity_timer(struct thread *thread)
*/
if (!OSPF_GR_IS_ACTIVE_HELPER(nbr))
OSPF_NSM_EVENT_SCHEDULE(nbr, NSM_InactivityTimer);
- else if (IS_DEBUG_OSPF_GR)
+ else if (IS_DEBUG_OSPF_GR) {
zlog_debug(
- "%s, Acting as HELPER for this neighbour, So inactivitytimer event will not be fired.",
+ "%s, Acting as HELPER for this neighbour, So restart the dead timer",
__func__);
+ OSPF_NSM_TIMER_ON(nbr->t_inactivity, ospf_inactivity_timer,
+ nbr->v_inactivity);
+ }
return 0;
}
diff --git a/pimd/pim_igmp.c b/pimd/pim_igmp.c
index 50de7124d2..795c96c838 100644
--- a/pimd/pim_igmp.c
+++ b/pimd/pim_igmp.c
@@ -671,7 +671,6 @@ void pim_igmp_general_query_on(struct igmp_sock *igmp)
ifaddr_str, query_interval,
startup_mode ? "startup" : "non-startup", igmp->fd);
}
- igmp->t_igmp_query_timer = NULL;
thread_add_timer(router->master, pim_igmp_general_query, igmp,
query_interval, &igmp->t_igmp_query_timer);
}
@@ -1052,7 +1051,6 @@ static void igmp_read_on(struct igmp_sock *igmp)
zlog_debug("Scheduling READ event on IGMP socket fd=%d",
igmp->fd);
}
- igmp->t_igmp_read = NULL;
thread_add_read(router->master, pim_igmp_read, igmp, igmp->fd,
&igmp->t_igmp_read);
}
diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c
index 78a8265a1c..5fff9fca0e 100644
--- a/pimd/pim_msdp_socket.c
+++ b/pimd/pim_msdp_socket.c
@@ -205,7 +205,6 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
/* add accept thread */
listener->fd = sock;
memcpy(&listener->su, &sin, socklen);
- listener->thread = NULL;
thread_add_read(pim->msdp.master, pim_msdp_sock_accept, pim, sock,
&listener->thread);
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index 8c38cf6c4c..3df7dc41ce 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -415,7 +415,6 @@ static void pim_sock_read_on(struct interface *ifp)
zlog_debug("Scheduling READ event on PIM socket fd=%d",
pim_ifp->pim_sock_fd);
}
- pim_ifp->t_pim_sock_read = NULL;
thread_add_read(router->master, pim_sock_read, ifp,
pim_ifp->pim_sock_fd, &pim_ifp->t_pim_sock_read);
}
diff --git a/python/clidef.py b/python/clidef.py
index a47cee2d6b..ba7c9072c5 100644
--- a/python/clidef.py
+++ b/python/clidef.py
@@ -435,6 +435,8 @@ if __name__ == "__main__":
macros.load(os.path.join(basepath, "bgpd/bgp_vty.h"))
# sigh :(
macros["PROTO_REDIST_STR"] = "FRR_REDIST_STR_ISISD"
+ macros["PROTO_IP_REDIST_STR"] = "FRR_IP_REDIST_STR_ISISD"
+ macros["PROTO_IP6_REDIST_STR"] = "FRR_IP6_REDIST_STR_ISISD"
errors = process_file(args.cfile, ofd, dumpfd, args.all_defun, macros)
if errors != 0:
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index a2c86e3b22..2eb7bb6da1 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -805,7 +805,6 @@ static int rip_interface_wakeup(struct thread *t)
ifp = THREAD_ARG(t);
ri = ifp->info;
- ri->t_wakeup = NULL;
/* Join to multicast group. */
if (rip_multicast_join(ifp, ri->rip->sock) < 0) {
diff --git a/ripd/rip_peer.c b/ripd/rip_peer.c
index 63493e2539..12c4edd436 100644
--- a/ripd/rip_peer.c
+++ b/ripd/rip_peer.c
@@ -95,7 +95,6 @@ static struct rip_peer *rip_peer_get(struct rip *rip, struct in_addr *addr)
}
/* Update timeout thread. */
- peer->t_timeout = NULL;
thread_add_timer(master, rip_peer_timeout, peer, RIP_PEER_TIMER_DEFAULT,
&peer->t_timeout);
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 84fb67956e..145b4de0a0 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -142,7 +142,6 @@ static int rip_garbage_collect(struct thread *t)
struct route_node *rp;
rinfo = THREAD_ARG(t);
- rinfo->t_garbage_collect = NULL;
/* Off timeout timer. */
RIP_TIMER_OFF(rinfo->t_timeout);
@@ -1744,7 +1743,6 @@ static int rip_read(struct thread *t)
/* Fetch socket then register myself. */
sock = THREAD_FD(t);
- rip->t_read = NULL;
/* Add myself to tne next event */
rip_event(rip, RIP_READ, sock);
@@ -2545,9 +2543,6 @@ static int rip_update(struct thread *t)
{
struct rip *rip = THREAD_ARG(t);
- /* Clear timer pointer. */
- rip->t_update = NULL;
-
if (IS_RIP_DEBUG_EVENT)
zlog_debug("update timer fire!");
@@ -2588,8 +2583,6 @@ static int rip_triggered_interval(struct thread *t)
{
struct rip *rip = THREAD_ARG(t);
- rip->t_triggered_interval = NULL;
-
if (rip->trigger) {
rip->trigger = 0;
rip_triggered_update(t);
@@ -2603,9 +2596,6 @@ static int rip_triggered_update(struct thread *t)
struct rip *rip = THREAD_ARG(t);
int interval;
- /* Clear thred pointer. */
- rip->t_triggered_update = NULL;
-
/* Cancel interval timer. */
RIP_TIMER_OFF(rip->t_triggered_interval);
rip->trigger = 0;
@@ -2628,7 +2618,6 @@ static int rip_triggered_update(struct thread *t)
update is triggered when the timer expires. */
interval = (frr_weak_random() % 5) + 1;
- rip->t_triggered_interval = NULL;
thread_add_timer(master, rip_triggered_interval, rip, interval,
&rip->t_triggered_interval);
@@ -2834,7 +2823,6 @@ void rip_event(struct rip *rip, enum rip_event event, int sock)
switch (event) {
case RIP_READ:
- rip->t_read = NULL;
thread_add_read(master, rip_read, rip, sock, &rip->t_read);
break;
case RIP_UPDATE_EVENT:
diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c
index f374fcb839..7b5e7604d2 100644
--- a/ripngd/ripng_interface.c
+++ b/ripngd/ripng_interface.c
@@ -618,7 +618,6 @@ static int ripng_interface_wakeup(struct thread *t)
ifp = THREAD_ARG(t);
ri = ifp->info;
- ri->t_wakeup = NULL;
/* Join to multicast group. */
if (ripng_multicast_join(ifp, ri->ripng->sock) < 0) {
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index 4f5c8e7760..86abf1eead 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -429,7 +429,6 @@ static int ripng_garbage_collect(struct thread *t)
struct agg_node *rp;
rinfo = THREAD_ARG(t);
- rinfo->t_garbage_collect = NULL;
/* Off timeout timer. */
RIPNG_TIMER_OFF(rinfo->t_timeout);
@@ -1320,7 +1319,6 @@ static int ripng_read(struct thread *thread)
/* Fetch thread data and set read pointer to empty for event
managing. `sock' sould be same as ripng->sock. */
sock = THREAD_FD(thread);
- ripng->t_read = NULL;
/* Add myself to the next event. */
ripng_event(ripng, RIPNG_READ, sock);
@@ -1418,9 +1416,6 @@ static int ripng_update(struct thread *t)
struct interface *ifp;
struct ripng_interface *ri;
- /* Clear update timer thread. */
- ripng->t_update = NULL;
-
/* Logging update event. */
if (IS_RIPNG_DEBUG_EVENT)
zlog_debug("RIPng update timer expired!");
@@ -1469,8 +1464,6 @@ static int ripng_triggered_interval(struct thread *t)
{
struct ripng *ripng = THREAD_ARG(t);
- ripng->t_triggered_interval = NULL;
-
if (ripng->trigger) {
ripng->trigger = 0;
ripng_triggered_update(t);
@@ -1486,8 +1479,6 @@ int ripng_triggered_update(struct thread *t)
struct ripng_interface *ri;
int interval;
- ripng->t_triggered_update = NULL;
-
/* Cancel interval timer. */
thread_cancel(&ripng->t_triggered_interval);
ripng->trigger = 0;
@@ -1525,7 +1516,6 @@ int ripng_triggered_update(struct thread *t)
update is triggered when the timer expires. */
interval = (frr_weak_random() % 5) + 1;
- ripng->t_triggered_interval = NULL;
thread_add_timer(master, ripng_triggered_interval, ripng, interval,
&ripng->t_triggered_interval);
@@ -1942,7 +1932,6 @@ void ripng_event(struct ripng *ripng, enum ripng_event event, int sock)
/* Update timer jitter. */
jitter = ripng_update_jitter(ripng->update_time);
- ripng->t_update = NULL;
thread_add_timer(master, ripng_update, ripng,
sock ? 2 : ripng->update_time + jitter,
&ripng->t_update);
diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h
index 12e5a6d4ac..6bf687b02a 100644
--- a/ripngd/ripngd.h
+++ b/ripngd/ripngd.h
@@ -137,10 +137,7 @@ struct ripng {
/* RIPng threads. */
struct thread *t_read;
- struct thread *t_write;
struct thread *t_update;
- struct thread *t_garbage;
- struct thread *t_zebra;
/* Triggered update hack. */
int trigger;
diff --git a/tests/lib/test_timer_correctness.c b/tests/lib/test_timer_correctness.c
index 416ea39772..0ae9761b11 100644
--- a/tests/lib/test_timer_correctness.c
+++ b/tests/lib/test_timer_correctness.c
@@ -134,7 +134,6 @@ int main(int argc, char **argv)
/* Schedule timers to expire in 0..5 seconds */
interval_msec = prng_rand(prng) % 5000;
arg = XMALLOC(MTYPE_TMP, TIMESTR_LEN + 1);
- timers[i] = NULL;
thread_add_timer_msec(master, timer_func, arg, interval_msec,
&timers[i]);
ret = snprintf(arg, TIMESTR_LEN + 1, "%lld.%06lld",
diff --git a/tests/lib/test_timer_performance.c b/tests/lib/test_timer_performance.c
index 45b29b92b1..23c044c7c1 100644
--- a/tests/lib/test_timer_performance.c
+++ b/tests/lib/test_timer_performance.c
@@ -55,7 +55,6 @@ int main(int argc, char **argv)
/* create thread structures so they won't be allocated during the
* time measurement */
for (i = 0; i < SCHEDULE_TIMERS; i++) {
- timers[i] = NULL;
thread_add_timer_msec(master, dummy_func, NULL, 0, &timers[i]);
}
for (i = 0; i < SCHEDULE_TIMERS; i++)
@@ -67,7 +66,6 @@ int main(int argc, char **argv)
long interval_msec;
interval_msec = prng_rand(prng) % (100 * SCHEDULE_TIMERS);
- timers[i] = NULL;
thread_add_timer_msec(master, dummy_func, NULL, interval_msec,
&timers[i]);
}
diff --git a/tools/coccinelle/struct_thread_null.cocci b/tools/coccinelle/struct_thread_null.cocci
new file mode 100644
index 0000000000..4867b4454b
--- /dev/null
+++ b/tools/coccinelle/struct_thread_null.cocci
@@ -0,0 +1,9 @@
+@@
+identifier I;
+identifier func =~ "thread_add_";
+struct thread *thread;
+@@
+
+*thread = NULL;
+...
+func
diff --git a/watchfrr/watchfrr.c b/watchfrr/watchfrr.c
index d0b4be81d4..40749e8fc2 100644
--- a/watchfrr/watchfrr.c
+++ b/watchfrr/watchfrr.c
@@ -361,7 +361,6 @@ static int restart_kill(struct thread *t_kill)
(long)delay.tv_sec, (restart->kills ? SIGKILL : SIGTERM));
kill(-restart->pid, (restart->kills ? SIGKILL : SIGTERM));
restart->kills++;
- restart->t_kill = NULL;
thread_add_timer(master, restart_kill, restart, gs.restart_timeout,
&restart->t_kill);
return 0;
@@ -495,7 +494,6 @@ static int run_job(struct restart_info *restart, const char *cmdtype,
char cmd[strlen(command) + strlen(restart->name) + 1];
snprintf(cmd, sizeof(cmd), command, restart->name);
if ((restart->pid = run_background(cmd)) > 0) {
- restart->t_kill = NULL;
thread_add_timer(master, restart_kill, restart,
gs.restart_timeout, &restart->t_kill);
restart->what = cmdtype;
@@ -833,10 +831,8 @@ static int try_connect(struct daemon *dmn)
zlog_debug("%s: connection in progress", dmn->name);
dmn->state = DAEMON_CONNECTING;
dmn->fd = sock;
- dmn->t_write = NULL;
thread_add_write(master, check_connect, dmn, dmn->fd,
&dmn->t_write);
- dmn->t_wakeup = NULL;
thread_add_timer(master, wakeup_connect_hanging, dmn,
gs.timeout, &dmn->t_wakeup);
SET_READ_HANDLER(dmn);
@@ -1022,7 +1018,6 @@ static int wakeup_send_echo(struct thread *t_wakeup)
daemon_down(dmn, why);
} else {
gettimeofday(&dmn->echo_sent, NULL);
- dmn->t_wakeup = NULL;
thread_add_timer(master, wakeup_no_answer, dmn, gs.timeout,
&dmn->t_wakeup);
}
@@ -1269,7 +1264,6 @@ static void watchfrr_init(int argc, char **argv)
gs.numdaemons++;
gs.numdown++;
dmn->fd = -1;
- dmn->t_wakeup = NULL;
thread_add_timer_msec(master, wakeup_init, dmn, 0,
&dmn->t_wakeup);
dmn->restart.interval = gs.min_restart_interval;
diff --git a/zebra/irdp_main.c b/zebra/irdp_main.c
index 66a6bd0545..f141b72719 100644
--- a/zebra/irdp_main.c
+++ b/zebra/irdp_main.c
@@ -112,7 +112,6 @@ int irdp_sock_init(void)
return ret;
};
- t_irdp_raw = NULL;
thread_add_read(zrouter.master, irdp_read_raw, NULL, sock, &t_irdp_raw);
return sock;
diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c
index 7d67c42a79..5601b13a92 100644
--- a/zebra/irdp_packet.c
+++ b/zebra/irdp_packet.c
@@ -233,7 +233,6 @@ int irdp_read_raw(struct thread *r)
int ret, ifindex = 0;
int irdp_sock = THREAD_FD(r);
- t_irdp_raw = NULL;
thread_add_read(zrouter.master, irdp_read_raw, NULL, irdp_sock,
&t_irdp_raw);
diff --git a/zebra/zebra_netns_notify.c b/zebra/zebra_netns_notify.c
index 054015846f..61f97ce6a9 100644
--- a/zebra/zebra_netns_notify.c
+++ b/zebra/zebra_netns_notify.c
@@ -346,7 +346,6 @@ void zebra_ns_notify_init(void)
{
int fd_monitor;
- zebra_netns_notify_current = NULL;
fd_monitor = inotify_init();
if (fd_monitor < 0) {
flog_err_sys(
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 79087c5849..4b06e84788 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -965,6 +965,7 @@ static void vty_show_ip_route(struct vty *vty, struct route_node *rn,
json_object_int_add(json_route, "internalNextHopActiveNum",
nexthop_group_active_nexthop_num(
&(re->nhe->nhg)));
+ json_object_int_add(json_route, "nexthopGroupId", re->nhe_id);
json_object_string_add(json_route, "uptime", up_str);