- RB_FOREACH_REVERSE
- RB_FOREACH_REVERSE_SAFE
- SPLAY_FOREACH
+ - FOR_ALL_INTERFACES
+ - FOR_ALL_INTERFACES_ADDRESSES
# zebra
- RE_DEST_FOREACH_ROUTE
- RE_DEST_FOREACH_ROUTE_SAFE
if (argc == 3)
{
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
show_babel_interface_sub (vty, ifp);
return CMD_SUCCESS;
}
struct interface *ifp;
int write = 0;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
vty_frame (vty, "interface %s\n",ifp->name);
if (ifp->desc)
vty_out (vty, " description %s\n",ifp->desc);
(babel_get_if_nfo(ifp)->flags & BABEL_IF_IS_UP));
}
-/* types:
- struct vrf _vrf, struct interface _ifp */
-#define FOR_ALL_INTERFACES(_vrf, _ifp) \
- RB_FOREACH(_ifp, if_name_head, &_vrf->ifaces_by_name)
-
-/* types:
- struct interface *ifp, struct connected *_connected, struct listnode *node */
-#define FOR_ALL_INTERFACES_ADDRESSES(ifp, _connected, _node) \
- for(ALL_LIST_ELEMENTS_RO(ifp->connected, _node, _connected))
-
struct buffered_update {
unsigned char id[8];
unsigned char prefix[16];
unsigned char pad[3];
};
-
/* init function */
void babel_if_init(void);
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
babel_distribute_update_interface (ifp);
}
p.prefix = *addr;
p.prefixlen = IPV4_MAX_BITLEN;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, connected)) {
cp = connected->address;
if (!vrf)
return NULL;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, connected)) {
cp = connected->address;
p.prefix = *addr;
p.prefixlen = IPV6_MAX_BITLEN;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, connected)) {
cp = connected->address;
if (!vrf)
return NULL;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, connected)) {
cp = connected->address;
if (bgp->inst_type == BGP_INSTANCE_TYPE_VIEW || !vrf)
return;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct listnode *c_node, *c_nnode;
struct connected *c;
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
eigrp_distribute_update_interface(ifp);
}
eigrp_router_id_update(eigrp);
/* Run network config now. */
/* Get target interface. */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
zlog_debug("Setting up %s", ifp->name);
eigrp_network_run_interface(eigrp, p, ifp);
}
struct interface *ifp;
struct eigrp_interface *ei;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ei = ifp->info;
if (!ei)
continue;
// inet_ntoa(eigrp->router_id));
/* update eigrp_interface's */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
eigrp_if_update(ifp);
}
}
struct isis_circuit *circuit;
int i;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
/* IF name */
vty_frame(vty, "interface %s\n", ifp->name);
write++;
/* Show All Interfaces. */
if (argc == 4) {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
show_mpls_te_sub(vty, ifp);
}
/* Interface name is specified. */
struct kif kif;
struct kaddr ka;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if (ifname && strcmp(ifname, ifp->name) != 0)
continue;
struct prefix *p;
struct connected *c;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, c)) {
p = c->address;
match = NULL;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, c)) {
if (c->address && (c->address->family == AF_INET)
&& prefix_match(CONNECTED_PREFIX(c), &addr)
struct interface *ifp;
struct connected *c;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, c)) {
if (prefix_cmp(c->address, prefix) == 0) {
return ifp;
void *ifp;
RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if_dump(ifp);
}
struct vrf *vrf = NULL;
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
vector_set(comps, XSTRDUP(MTYPE_COMPLETION, ifp->name));
}
}
if (argc > 2)
VRF_GET_ID (vrf_id, argv[idx_vrf]->arg);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
{
for (ALL_LIST_ELEMENTS_RO (ifp->connected, node, ifc))
{
vty_out (vty, "\nVRF %u\n\n", vrf->vrf_id);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
{
for (ALL_LIST_ELEMENTS_RO (ifp->connected, node, ifc))
{
"ifindex doesn't exist in VRF %u!", \
__func__, (ifp)->ifindex, (ifp)->vrf_id);
+#define FOR_ALL_INTERFACES(vrf, ifp) \
+ if (vrf) \
+ RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+
+#define FOR_ALL_INTERFACES_ADDRESSES(ifp, connected, node) \
+ for (ALL_LIST_ELEMENTS_RO(ifp->connected, node, connected))
+
/* called from the library code whenever interfaces are created/deleted
* note: interfaces may not be fully realized at that point; also they
* may not exist in the system (ifindex = IFINDEX_INTERNAL)
struct nhrp_nhs *nhs, *tmp;
afi_t afi;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
nifp = ifp->info;
for (afi = 0; afi < AFI_MAX; afi++) {
list_for_each_entry_safe(nhs, tmp, &nifp->afi[afi].nhslist_head, nhslist_entry)
};
if (argc <= 3 || argv[3]->text[0] == 'c') {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
nhrp_cache_foreach(ifp, show_ip_nhrp_cache, &ctx);
} else if (argv[3]->text[0] == 'n') {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
nhrp_nhs_foreach(ifp, ctx.afi, show_ip_nhrp_nhs, &ctx);
} else if (argv[3]->text[0] == 's') {
nhrp_shortcut_foreach(ctx.afi, show_ip_nhrp_shortcut, &ctx);
} else {
vty_out (vty, "Status: ok\n\n");
ctx.count++;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
nhrp_cache_foreach(ifp, show_ip_opennhrp_cache, &ctx);
}
};
if (argc <= 3 || argv[3]->text[0] == 'c') {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
nhrp_cache_foreach(ifp, clear_nhrp_cache, &ctx);
} else {
nhrp_shortcut_foreach(ctx.afi, clear_nhrp_shortcut, &ctx);
char buf[SU_ADDRSTRLEN];
int i;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
vty_frame(vty, "interface %s\n", ifp->name);
if (ifp->desc)
vty_out (vty, " description %s\n", ifp->desc);
bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER);
/* Replay the neighbor, if BFD is enabled on the interface*/
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
oi = (struct ospf6_interface *)ifp->info;
if (!oi || !oi->bfd_info)
}
ospf6_interface_show(vty, ifp);
} else {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf6_interface_show(vty, ifp);
}
struct ospf6_interface *oi;
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
oi = (struct ospf6_interface *)ifp->info;
if (oi == NULL)
continue;
struct ospf6_interface *oi;
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
oi = (struct ospf6_interface *)ifp->info;
if (oi == NULL)
continue;
if (argc == 4) /* Clear all the ospfv3 interfaces. */
{
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf6_interface_clear(vty, ifp);
} else /* Interface name is specified. */
{
bfd_gbl_exit();
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if (ifp->info != NULL)
ospf6_interface_delete(ifp->info);
if (!ifslist)
return NULL;
ifslist->cmp = (int (*)(void *, void *))if_icmp_func;
- RB_FOREACH (iif, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, iif)
listnode_add_sort(ifslist, iif);
for (ALL_LIST_ELEMENTS_RO(ifslist, node, iif)) {
if (!ifslist)
return NULL;
ifslist->cmp = (int (*)(void *, void *))if_icmp_func;
- RB_FOREACH (iif, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, iif)
listnode_add_sort(ifslist, iif);
for (ALL_LIST_ELEMENTS_RO(ifslist, i, iif)) {
if (!ifslist)
return NULL;
ifslist->cmp = (int (*)(void *, void *))if_icmp_func;
- RB_FOREACH (iif, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, iif)
listnode_add_sort(ifslist, iif);
for (ALL_LIST_ELEMENTS_RO(ifslist, i, iif)) {
if (!ospf->oi_running)
continue;
vrf = vrf_lookup_by_id(ospf->vrf_id);
- RB_FOREACH (ifp, if_name_head,
- &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
show_mpls_te_link_sub(vty, ifp);
}
return CMD_SUCCESS;
if (ospf == NULL || !ospf->oi_running)
return CMD_SUCCESS;
vrf = vrf_lookup_by_id(ospf->vrf_id);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
show_mpls_te_link_sub(vty, ifp);
return CMD_SUCCESS;
}
if (!ospf->oi_running)
continue;
vrf = vrf_lookup_by_id(ospf->vrf_id);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
show_mpls_te_link_sub(vty, ifp);
}
}
ospf->passive_interface_default = newval;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if (ifp && OSPF_IF_PARAM_CONFIGURED(IF_DEF_PARAMS(ifp),
passive_interface))
UNSET_IF_PARAM(IF_DEF_PARAMS(ifp), passive_interface);
return CMD_SUCCESS;
ospf->ref_bandwidth = refbw;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf_if_recalculate_output_cost(ifp);
return CMD_SUCCESS;
vty_out(vty,
" Please ensure reference bandwidth is consistent across all routers\n");
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf_if_recalculate_output_cost(ifp);
return CMD_SUCCESS;
if (argc == iface_argv) {
/* Show All Interfaces.*/
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if (ospf_oi_count(ifp)) {
if (use_json)
json_interface_sub =
struct ospf_if_params *params;
int write = 0;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct vrf *vrf = NULL;
if (memcmp(ifp->name, "VLINK", 5) == 0)
if (ospf->passive_interface_default == OSPF_IF_PASSIVE)
vty_out(vty, " passive-interface default\n");
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if (OSPF_IF_PARAM_CONFIGURED(IF_DEF_PARAMS(ifp),
passive_interface)
&& IF_DEF_PARAMS(ifp)->passive_interface
{
for (ALL_LIST_ELEMENTS_RO(om->ospf, node, ospf)) {
struct vrf *vrf = vrf_lookup_by_id(ospf->vrf_id);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf_interface_clear(ifp);
}
} else {
ospf_router_lsa_update(ospf);
/* update ospf_interface's */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf_if_update(ospf, ifp);
}
}
list_delete_and_null(&ospf->vlinks);
/* Remove any ospf interface config params */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct ospf_if_params *params;
params = IF_DEF_PARAMS(ifp);
ospf_router_id_update(area->ospf);
/* Get target interface. */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ospf_network_run_interface(area->ospf, ifp, p, area);
}
bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER);
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
vty_out(vty,
"Interface Address Source Group State Winner Uptime Timer\n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
vty_out(vty,
"Interface Address Source Group CA eCA ATD eATD\n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
vty_out(vty,
"Interface Address Source Group RPT Pref Metric Address \n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
vty_out(vty,
"Interface Address Source Group RPT Pref Metric Address \n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
json = json_object_new_object();
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
vty_out(vty,
"Interface State Address V Querier Query Timer Uptime\n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct listnode *sock_node;
struct igmp_sock *igmp;
now = pim_time_monotonic_sec();
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
vty_out(vty,
"Interface Address Source Group Socket Uptime \n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct listnode *join_node;
struct igmp_join *ij;
if (uj)
json = json_object_new_object();
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
json = json_object_new_object();
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
"---------------------------------------------------------------------------------------------------------------\n");
}
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
"---------------------------------------------------------------------------------------------------------------\n");
}
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
if (strcmp(ifname, ifp->name))
continue;
vty_out(vty,
"Interface Address Source Group State Uptime Expire Prune\n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
if (uj)
json = json_object_new_object();
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
"Interface Neighbor Uptime Holdtime DR Pri\n");
}
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
vty_out(vty,
"Interface Address Neighbor Secondary \n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *neighnode;
"Interface Source Group LostAssert Joins PimInclude JoinDesired EvalJD\n");
/* scan per-interface (S,G) state */
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
"Interface Address Group Mode Timer Srcs V Uptime \n");
/* scan interfaces */
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
"Interface Address Group RetTimer Counter RetSrcs\n");
/* scan interfaces */
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
"Interface Address Group Source Timer Fwd Uptime \n");
/* scan interfaces */
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
"Interface Address Group Source Counter\n");
/* scan interfaces */
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
{
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (pim->vrf, ifp)
pim_if_addr_del_all_igmp(ifp);
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (pim->vrf, ifp)
pim_if_addr_add_all(ifp);
}
{
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
if (ifp->info) {
pim_neighbor_delete_all(ifp, "interface cleared");
}
if (!vrf)
return CMD_WARNING;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
pim_ifp = ifp->info;
if (!pim_ifp)
vty_out(vty,
"Interface Address ifi Vif PktsIn PktsOut BytesIn BytesOut\n");
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct sioc_vif_req vreq;
{
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
if (ifp->info) {
struct pim_interface *pim_ifp;
pim_ifp = ifp->info;
struct pim_instance *pim = new_pim_ifp->pim;
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *loop_pim_ifp = ifp->info;
struct pim_ifchannel *ch;
struct pim_interface *pim_ifp = up->rpf.source_nexthop.interface->info;
struct pim_instance *pim = pim_ifp->pim;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
pim_ifp = ifp->info;
struct listnode *nnode;
hash_walk(pnc->upstream_hash, pim_update_upstream_nh_helper, pim);
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (pim->vrf, ifp)
if (ifp->info) {
struct pim_interface *pim_ifp = ifp->info;
struct pim_iface_upstream_switch *us;
struct interface *ifp;
rp_info->i_am_rp = 0;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
if (!pim_ifp)
struct pim_upstream *starup = up->parent;
int ret = 0;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
if (!ifp->info)
continue;
up->channel_oil = pim_channel_oil_add(
pim, &up->sg, pim_ifp->mroute_vif_index);
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
if (!ifp->info)
continue;
if (!pim)
continue;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
/* IF name */
if (vrf->vrf_id == VRF_DEFAULT)
vty_frame(vty, "interface %s\n", ifp->name);
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if (!if_is_loopback(ifp) && if_is_operative(ifp))
pim_if_addr_add_all(ifp);
}
if (!pim)
continue;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (pim->vrf, ifp)
if (ifp->info) {
struct pim_interface *pim_ifp = ifp->info;
struct pim_iface_upstream_switch *us;
if (!pim)
continue;
- RB_FOREACH (ifp, if_name_head, &pim->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct listnode *cnode;
struct connected *connected;
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_interface_clean(ifp->info);
}
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_interface_reset(ifp->info);
}
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_if_down(ifp);
}
struct interface *ifp;
/* Check each interface. */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_enable_apply(ifp);
}
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_passive_interface_apply(ifp);
}
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct rip_interface *ri;
ri = ifp->info;
/* If nexthop address matches local configured address then it is
invalid nexthop. */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, ifc)) {
p = ifc->address;
struct prefix *p;
/* Send RIP update to each interface. */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if (if_is_loopback(ifp))
continue;
vty_out(vty, " Interface Send Recv Key-chain\n");
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
if (!ri->running)
{
int found_passive = 0;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
if ((ri->enable_network || ri->enable_interface)
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_distribute_update_interface(ifp);
}
/* ARGSUSED */
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
rip_if_rmap_update_interface(ifp);
rip_routemap_update_redistribute();
struct interface *ifp;
struct ripng_interface *ri;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
ri->enable_network = 0;
struct interface *ifp;
struct ripng_interface *ri;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
ri->enable_network = 0;
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ripng_enable_apply(ifp);
}
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ripng_passive_interface_apply(ifp);
}
struct ripng_interface *ri;
int write = 0;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
/* Do not display the interface if there is no
zlog_debug("RIPng update timer expired!");
/* Supply routes to each interface. */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
if (if_is_loopback(ifp) || !if_is_up(ifp))
/* Split Horizon processing is done when generating triggered
updates as well as normal updates (see section 2.6). */
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
ri = ifp->info;
if (if_is_loopback(ifp) || !if_is_up(ifp))
vty_out(vty, " Interface Send Recv\n");
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct ripng_interface *ri;
ri = ifp->info;
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ripng_distribute_update_interface(ifp);
}
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
ripng_if_rmap_update_interface(ifp);
ripng_routemap_update_redistribute();
struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if_get_index(ifp);
#ifdef SIOCGIFHWADDR
if_get_hwaddr(ifp);
/* All interface print. */
vrf = vrf_lookup_by_id(vrf_id);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if_dump_vty(vty, ifp);
return CMD_SUCCESS;
/* All interface print. */
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if_dump_vty(vty, ifp);
return CMD_SUCCESS;
struct interface *ifp;
vty_out(vty, "Interface Status Protocol Description\n");
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
int len;
len = vty_out(vty, "%s", ifp->name);
zebra_ptm_write(vty);
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct zebra_if *if_data;
struct listnode *addrnode;
struct connected *ifc;
zlog_info("IRDP: Received shutdown notification.");
RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
zi = ifp->info;
if (!zi)
}
RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if (if_is_loopback(ifp)
|| CHECK_FLAG(ifp->status,
ZEBRA_INTERFACE_VRF_LOOPBACK)
struct interface *ifp;
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
struct zebra_if *zif;
struct zebra_l2info_brslave *br_slave;
ptm_cb.ptm_enable = ZEBRA_IF_PTM_ENABLE_ON;
RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if (!ifp->ptm_enable) {
if_data = (struct zebra_if *)ifp->info;
if (if_data
int send_linkup;
RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id)
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
send_linkup = 0;
if (ifp->ptm_enable) {
if (!if_is_operative(ifp))
zebra_mpls_close_tables(zvrf);
zebra_pw_exit(zvrf);
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name)
+ FOR_ALL_INTERFACES (vrf, ifp)
if_nbr_ipv6ll_to_ipv4ll_neigh_del_all(ifp);
}
zvrf = vrf_info_lookup(ifp->vrf_id);
assert(zvrf);
- RB_FOREACH (tmp_if, if_name_head, &zvrf->vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (zvrf->vrf, tmp_if) {
zif = tmp_if->info;
if (!zif)
continue;
vrf_bitmap_set(client->ifinfo, zvrf_id(zvrf));
RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) {
- RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
/* Skip pseudo interface. */
if (!CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_ACTIVE))
continue;