"Interface Address Source Group State Winner Uptime Timer%s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO(vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *ch_node;
"Interface Address Source Group CA eCA ATD eATD%s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO(vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *ch_node;
"Interface Address Source Group RPT Pref Metric Address %s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *ch_node;
"Interface Address Source Group RPT Pref Metric Address %s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *ch_node;
"Interface Address Source Group Membership%s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *ch_node;
"Interface Address ifIndex Socket Uptime Multi Broad MLoop AllMu Prmsc Del%s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct listnode *sock_node;
struct igmp_sock *igmp;
"Interface Address Source Group Socket Uptime %s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct listnode *join_node;
struct igmp_join *ij;
"Interface Primary Secondary %s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifpnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifpnode, ifp)) {
struct listnode *ifcnode;
struct connected *ifc;
struct in_addr pri_addr;
vty_out(vty, "Interface Address DR Uptime Elections Changes NonPri%s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
char dr_str[100];
vty_out(vty, "Interface Address Period Timer StatStart Recv Rfail Send Sfail%s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
char hello_period[10];
vty_out(vty, "Interface Address ifIndex Socket Uptime Multi Broad MLoop AllMu Prmsc Del%s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
char uptime[10];
"Interface Address Source Group State Uptime Expire Prune%s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *ch_node;
vty_out(vty, "Interface Address Neighbor Uptime Timer Holdt DrPri GenId Recv %s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *neighnode;
vty_out(vty, "Interface Address PrDly OvInt NoDly HiDly HiInt T | Neighbor LPD PrDly OvInt T%s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *neighnode;
vty_out(vty, "Interface Address LAN_Delay EffPDelay EffOvrInt JPOvrInt%s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
vty_out(vty, "Interface Address Neighbor Secondary %s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct listnode *neighnode;
VTY_NEWLINE);
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
vty_out(vty, "Interface Address Querier StartCount Query-Timer Other-Timer%s", VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
vty_out(vty, "Interface Address Group Mode Timer Srcs V Uptime %s", VTY_NEWLINE);
/* scan interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
vty_out(vty, "Interface Address Group RetTimer Counter RetSrcs%s", VTY_NEWLINE);
/* scan interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
VTY_NEWLINE);
/* scan interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
vty_out(vty, "Interface Address Group Source Timer Fwd Uptime %s", VTY_NEWLINE);
/* scan interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
vty_out(vty, "Interface Address Group Source Counter%s", VTY_NEWLINE);
/* scan interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp = ifp->info;
struct listnode *sock_node;
struct igmp_sock *igmp;
struct listnode *ifnextnode;
struct interface *ifp;
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_if_addr_del_all_igmp(ifp);
}
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_if_addr_add_all(ifp);
}
}
struct listnode *ifnextnode;
struct interface *ifp;
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
if (ifp->info) {
pim_neighbor_delete_all(ifp, "interface cleared");
}
vty_out(vty, "Interface Address ifi Vif PktsIn PktsOut BytesIn BytesOut%s",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO(iflist, node, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) {
struct pim_interface *pim_ifp;
struct in_addr ifaddr;
struct sioc_vif_req vreq;
struct interface *ifp;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS_RO(iflist, ifnode, ifp)) {
+ for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
struct pim_interface *pim_ifp;
struct igmp_sock *igmp;
struct pim_ifchannel *ch;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
struct pim_ifchannel *ch;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
struct pim_ifchannel *ch;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
struct interface *ifp;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
struct listnode *chnode;
struct listnode *chnextnode;
struct pim_ifchannel *ch;
struct pim_ifchannel *ch;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
struct pim_ifchannel *ch;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
struct pim_ifchannel *ch;
/* scan all interfaces */
- for (ALL_LIST_ELEMENTS(iflist, ifnode, ifnextnode, ifp)) {
+ for (ALL_LIST_ELEMENTS (vrf_iflist (VRF_DEFAULT), ifnode, ifnextnode, ifp)) {
pim_ifp = ifp->info;
if (!pim_ifp)
continue;
/* Router-id update message from zebra. */
static int pim_router_id_update_zebra(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct prefix router_id;
}
static int pim_zebra_if_add(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct interface *ifp;
zebra api adds/dels interfaces using the same call
interface_add_read below, see comments in lib/zclient.c
*/
- ifp = zebra_interface_add_read(zclient->ibuf);
+ ifp = zebra_interface_add_read(zclient->ibuf, vrf_id);
if (!ifp)
return 0;
}
static int pim_zebra_if_del(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct interface *ifp;
pimd to assert. Other clients use zebra_interface_state_read
and it appears to work just fine.
*/
- ifp = zebra_interface_state_read(zclient->ibuf);
+ ifp = zebra_interface_state_read(zclient->ibuf, vrf_id);
if (!ifp)
return 0;
}
static int pim_zebra_if_state_up(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct interface *ifp;
zebra api notifies interface up/down events by using the same call
zebra_interface_state_read below, see comments in lib/zclient.c
*/
- ifp = zebra_interface_state_read(zclient->ibuf);
+ ifp = zebra_interface_state_read(zclient->ibuf, vrf_id);
if (!ifp)
return 0;
}
static int pim_zebra_if_state_down(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct interface *ifp;
zebra api notifies interface up/down events by using the same call
zebra_interface_state_read below, see comments in lib/zclient.c
*/
- ifp = zebra_interface_state_read(zclient->ibuf);
+ ifp = zebra_interface_state_read(zclient->ibuf, vrf_id);
if (!ifp)
return 0;
#endif
static int pim_zebra_if_address_add(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct connected *c;
struct prefix *p;
will add address to interface list by calling
connected_add_by_prefix()
*/
- c = zebra_interface_address_read(command, zclient->ibuf);
+ c = zebra_interface_address_read(command, zclient->ibuf, vrf_id);
if (!c)
return 0;
}
static int pim_zebra_if_address_del(int command, struct zclient *client,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct connected *c;
struct prefix *p;
will remove address from interface list by calling
connected_delete_by_prefix()
*/
- c = zebra_interface_address_read(command, client->ibuf);
+ c = zebra_interface_address_read(command, client->ibuf, vrf_id);
if (!c)
return 0;
}
static int redist_read_ipv4_route(int command, struct zclient *zclient,
- zebra_size_t length)
+ zebra_size_t length, vrf_id_t vrf_id)
{
struct stream *s;
struct zapi_ipv4 api;
#endif
/* Socket for receiving updates from Zebra daemon */
- qpim_zclient_update = zclient_new();
+ qpim_zclient_update = zclient_new (master);
qpim_zclient_update->router_id_update = pim_router_id_update_zebra;
qpim_zclient_update->interface_add = pim_zebra_if_add;
qpim_zclient_update->ipv4_route_add = redist_read_ipv4_route;
qpim_zclient_update->ipv4_route_delete = redist_read_ipv4_route;
- zclient_init(qpim_zclient_update, ZEBRA_ROUTE_PIM);
+ zclient_init(qpim_zclient_update, ZEBRA_ROUTE_PIM, 0);
if (PIM_DEBUG_PIM_TRACE) {
zlog_info("zclient_init cleared redistribution request");
}
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
if (i == qpim_zclient_update->redist_default)
continue;
- qpim_zclient_update->redist[i] = 1;
+ vrf_bitmap_set (qpim_zclient_update->redist[AFI_IP][i], VRF_DEFAULT);;
if (PIM_DEBUG_PIM_TRACE) {
zlog_debug("%s: requesting redistribution for %s (%i)",
__PRETTY_FUNCTION__, zebra_route_string(i), i);