* *.c: Massive cleanup of lists loops. Stop abusing ALL_LIST_ELEMENTS.
Replace XMALLOC + memset with XCALLOC. Fix some indentation issues.
The only really significant change is simplified isis_delete_adj
function in isis_adjacency.c.
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index f4a42a6..7b4491c 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -329,14 +329,14 @@
lsp_seqnum_update (struct isis_lsp *lsp0)
{
struct isis_lsp *lsp;
- struct listnode *node, *nnode;
+ struct listnode *node;
lsp_inc_seqnum (lsp0, 0);
if (!lsp0->lspu.frags)
return;
- for (ALL_LIST_ELEMENTS (lsp0->lspu.frags, node, nnode, lsp))
+ for (ALL_LIST_ELEMENTS_RO (lsp0->lspu.frags, node, lsp))
lsp_inc_seqnum (lsp, 0);
return;
@@ -720,7 +720,7 @@
struct isis_lsp *lsp = dnode_get (node);
struct area_addr *area_addr;
int i;
- struct listnode *lnode, *lnnode;
+ struct listnode *lnode;
struct is_neigh *is_neigh;
struct te_is_neigh *te_is_neigh;
struct ipv4_reachability *ipv4_reach;
@@ -742,8 +742,7 @@
/* for all area address */
if (lsp->tlv_data.area_addrs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.area_addrs, lnode,
- lnnode, area_addr))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.area_addrs, lnode, area_addr))
{
vty_out (vty, " Area Address: %s%s",
isonet_print (area_addr->area_addr, area_addr->addr_len),
@@ -779,8 +778,7 @@
}
if (lsp->tlv_data.ipv4_addrs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.ipv4_addrs, lnode,
- lnnode, ipv4_addr))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.ipv4_addrs, lnode, ipv4_addr))
{
memcpy (ipv4_address, inet_ntoa (*ipv4_addr), sizeof (ipv4_address));
vty_out (vty, " IP: %s%s", ipv4_address, VTY_NEWLINE);
@@ -796,7 +794,7 @@
/* for the IS neighbor tlv */
if (lsp->tlv_data.is_neighs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.is_neighs, lnode, lnnode, is_neigh))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.is_neighs, lnode, is_neigh))
{
lspid_print (is_neigh->neigh_id, LSPid, dynhost, 0);
vty_out (vty, " Metric: %-10d IS %s%s",
@@ -805,8 +803,8 @@
/* for the internal reachable tlv */
if (lsp->tlv_data.ipv4_int_reachs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.ipv4_int_reachs, lnode,
- lnnode, ipv4_reach))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.ipv4_int_reachs, lnode,
+ ipv4_reach))
{
memcpy (ipv4_reach_prefix, inet_ntoa (ipv4_reach->prefix),
sizeof (ipv4_reach_prefix));
@@ -819,8 +817,8 @@
/* for the external reachable tlv */
if (lsp->tlv_data.ipv4_ext_reachs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.ipv4_ext_reachs, lnode,
- lnnode, ipv4_reach))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.ipv4_ext_reachs, lnode,
+ ipv4_reach))
{
memcpy (ipv4_reach_prefix, inet_ntoa (ipv4_reach->prefix),
sizeof (ipv4_reach_prefix));
@@ -834,8 +832,7 @@
/* IPv6 tlv */
#ifdef HAVE_IPV6
if (lsp->tlv_data.ipv6_reachs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.ipv6_reachs, lnode,
- lnnode, ipv6_reach))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.ipv6_reachs, lnode, ipv6_reach))
{
memset (&in6, 0, sizeof (in6));
memcpy (in6.s6_addr, ipv6_reach->prefix,
@@ -855,8 +852,7 @@
/* TE IS neighbor tlv */
if (lsp->tlv_data.te_is_neighs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.te_is_neighs, lnode,
- lnnode, te_is_neigh))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.te_is_neighs, lnode, te_is_neigh))
{
uint32_t metric;
memcpy (&metric, te_is_neigh->te_metric, 3);
@@ -867,8 +863,8 @@
/* TE IPv4 tlv */
if (lsp->tlv_data.te_ipv4_reachs)
- for (ALL_LIST_ELEMENTS (lsp->tlv_data.te_ipv4_reachs, lnode,
- lnnode, te_ipv4_reach))
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.te_ipv4_reachs, lnode,
+ te_ipv4_reach))
{
/* FIXME: There should be better way to output this stuff. */
vty_out (vty, " Metric: %-10d IP-Extended %s/%d%s",
@@ -1015,7 +1011,7 @@
{
struct is_neigh *is_neigh;
struct te_is_neigh *te_is_neigh;
- struct listnode *node, *nnode, *ipnode, *ipnnode;
+ struct listnode *node, *ipnode;
int level = lsp->level;
struct isis_circuit *circuit;
struct prefix_ipv4 *ipv4;
@@ -1139,8 +1135,7 @@
tlv_data.is_neighs = list_new ();
tlv_data.is_neighs->del = free_tlv;
}
- is_neigh = XMALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh));
- memset (is_neigh, 0, sizeof (struct is_neigh));
+ is_neigh = XCALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh));
memcpy (&is_neigh->neigh_id, area->topology_baseis, ISIS_SYS_ID_LEN);
is_neigh->neigh_id[ISIS_SYS_ID_LEN - 1] = (1 & 0xFF);
@@ -1156,7 +1151,7 @@
/*
* Then build lists of tlvs related to circuits
*/
- for (ALL_LIST_ELEMENTS (area->circuit_list, node, nnode, circuit))
+ for (ALL_LIST_ELEMENTS_RO (area->circuit_list, node, circuit))
{
if (circuit->state != C_STATE_UP)
continue;
@@ -1174,7 +1169,7 @@
tlv_data.ipv4_int_reachs = list_new ();
tlv_data.ipv4_int_reachs->del = free_tlv;
}
- for (ALL_LIST_ELEMENTS (circuit->ip_addrs, ipnode, ipnnode, ipv4))
+ for (ALL_LIST_ELEMENTS_RO (circuit->ip_addrs, ipnode, ipv4))
{
ipreach =
XMALLOC (MTYPE_ISIS_TLV, sizeof (struct ipv4_reachability));
@@ -1193,7 +1188,7 @@
tlv_data.te_ipv4_reachs = list_new ();
tlv_data.te_ipv4_reachs->del = free_tlv;
}
- for (ALL_LIST_ELEMENTS (circuit->ip_addrs, ipnode, ipnnode, ipv4))
+ for (ALL_LIST_ELEMENTS_RO (circuit->ip_addrs, ipnode, ipv4))
{
/* FIXME All this assumes that we have no sub TLVs. */
te_ipreach = XCALLOC (MTYPE_ISIS_TLV,
@@ -1225,8 +1220,7 @@
tlv_data.ipv6_reachs = list_new ();
tlv_data.ipv6_reachs->del = free_tlv;
}
- for (ALL_LIST_ELEMENTS (circuit->ipv6_non_link, ipnode, ipnnode,
- ipv6))
+ for (ALL_LIST_ELEMENTS_RO (circuit->ipv6_non_link, ipnode, ipv6))
{
ip6reach =
XCALLOC (MTYPE_ISIS_TLV, sizeof (struct ipv6_reachability));
@@ -1698,7 +1692,7 @@
struct te_is_neigh *te_is_neigh;
struct es_neigh *es_neigh;
struct list *adj_list;
- struct listnode *node, *nnode;
+ struct listnode *node;
struct isis_passwd *passwd;
assert (circuit);
@@ -1744,7 +1738,7 @@
adj_list = list_new ();
isis_adj_build_up_list (circuit->u.bc.adjdb[level - 1], adj_list);
- for (ALL_LIST_ELEMENTS (adj_list, node, nnode, adj))
+ for (ALL_LIST_ELEMENTS_RO (adj_list, node, adj))
{
if (adj->circuit_t & level)
{
@@ -1993,7 +1987,7 @@
struct isis_circuit *circuit;
struct isis_lsp *lsp;
struct list *lsp_list;
- struct listnode *lspnode, *lspnnode, *cnode;
+ struct listnode *lspnode, *cnode;
dnode_t *dnode, *dnode_next;
int level;
@@ -2045,7 +2039,7 @@
{
for (ALL_LIST_ELEMENTS_RO (area->circuit_list, cnode, circuit))
{
- for (ALL_LIST_ELEMENTS (lsp_list, lspnode, lspnnode, lsp))
+ for (ALL_LIST_ELEMENTS_RO (lsp_list, lspnode, lsp))
{
if (ISIS_CHECK_FLAG (lsp->SRMflags, circuit))
{
@@ -2246,7 +2240,7 @@
build_topology_lsp_data (struct isis_lsp *lsp, struct isis_area *area,
int lsp_top_num)
{
- struct listnode *node, *nnode;
+ struct listnode *node;
struct arc *arc;
struct is_neigh *is_neigh;
struct te_is_neigh *te_is_neigh;
@@ -2292,8 +2286,7 @@
/* Add reachability for this IS for simulated 1. */
if (lsp_top_num == 1)
{
- is_neigh = XMALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh));
- memset (is_neigh, 0, sizeof (struct is_neigh));
+ is_neigh = XCALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh));
memcpy (&is_neigh->neigh_id, isis->sysid, ISIS_SYS_ID_LEN);
LSP_PSEUDO_ID (is_neigh->neigh_id) = 0x00;
@@ -2306,7 +2299,7 @@
}
/* Add IS reachabilities. */
- for (ALL_LIST_ELEMENTS (area->topology, node, nnode, arc))
+ for (ALL_LIST_ELEMENTS_RO (area->topology, node, arc))
{
int to_lsp = 0;