/* If DF role changed on a (*,G) termination mroute update the
* associated DF role on the inherited (S,G) entries
*/
- if ((up->sg.src.s_addr == INADDR_ANY) &&
- PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN(up->flags))
+ if (pim_addr_is_any(up->sg.src) &&
+ PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN(up->flags))
pim_vxlan_inherit_mlag_flags(pim, up, true /* inherit */);
return true;
struct pim_upstream *up;
struct pim_instance *pim;
int flags = 0;
- struct prefix_sg sg;
+ pim_sgaddr sg;
struct vrf *vrf;
- char sg_str[PIM_SG_LEN];
- memset(&sg, 0, sizeof(struct prefix_sg));
+ memset(&sg, 0, sizeof(sg));
sg.src.s_addr = htonl(msg->source_ip);
sg.grp.s_addr = htonl(msg->group_ip);
- if (PIM_DEBUG_MLAG)
- pim_str_sg_set(&sg, sg_str);
if (PIM_DEBUG_MLAG)
- zlog_debug("peer MLAG mroute add %s:%s cost %d",
- msg->vrf_name, sg_str, msg->cost_to_rp);
+ zlog_debug("peer MLAG mroute add %s:%pSG cost %d",
+ msg->vrf_name, &sg, msg->cost_to_rp);
/* XXX - this is not correct. we MUST cache updates to avoid losing
* an entry because of race conditions with the peer switch.
vrf = vrf_lookup_by_name(msg->vrf_name);
if (!vrf) {
if (PIM_DEBUG_MLAG)
- zlog_debug("peer MLAG mroute add failed %s:%s; no vrf",
- msg->vrf_name, sg_str);
+ zlog_debug(
+ "peer MLAG mroute add failed %s:%pSG; no vrf",
+ msg->vrf_name, &sg);
return;
}
pim = vrf->info;
if (!up) {
if (PIM_DEBUG_MLAG)
- zlog_debug("peer MLAG mroute add failed %s:%s",
- vrf->name, sg_str);
+ zlog_debug(
+ "peer MLAG mroute add failed %s:%pSG",
+ vrf->name, &sg);
return;
}
}
{
struct pim_upstream *up;
struct pim_instance *pim;
- struct prefix_sg sg;
+ pim_sgaddr sg;
struct vrf *vrf;
- char sg_str[PIM_SG_LEN];
- memset(&sg, 0, sizeof(struct prefix_sg));
+ memset(&sg, 0, sizeof(sg));
sg.src.s_addr = htonl(msg->source_ip);
sg.grp.s_addr = htonl(msg->group_ip);
- if (PIM_DEBUG_MLAG)
- pim_str_sg_set(&sg, sg_str);
if (PIM_DEBUG_MLAG)
- zlog_debug("peer MLAG mroute del %s:%s", msg->vrf_name,
- sg_str);
+ zlog_debug("peer MLAG mroute del %s:%pSG", msg->vrf_name, &sg);
vrf = vrf_lookup_by_name(msg->vrf_name);
if (!vrf) {
if (PIM_DEBUG_MLAG)
- zlog_debug("peer MLAG mroute del skipped %s:%s; no vrf",
- msg->vrf_name, sg_str);
+ zlog_debug(
+ "peer MLAG mroute del skipped %s:%pSG; no vrf",
+ msg->vrf_name, &sg);
return;
}
pim = vrf->info;
up = pim_upstream_find(pim, &sg);
if (!up) {
if (PIM_DEBUG_MLAG)
- zlog_debug("peer MLAG mroute del skipped %s:%s; no up",
- vrf->name, sg_str);
+ zlog_debug(
+ "peer MLAG mroute del skipped %s:%pSG; no up",
+ vrf->name, &sg);
return;
}
static void pim_mlag_process_mroute_add(struct mlag_mroute_add msg)
{
if (PIM_DEBUG_MLAG) {
- struct prefix_sg sg;
+ pim_sgaddr sg;
sg.grp.s_addr = ntohl(msg.group_ip);
sg.src.s_addr = ntohl(msg.source_ip);
zlog_debug(
- "%s: msg dump: vrf_name: %s, s.ip: 0x%x, g.ip: 0x%x (%pSG4) cost: %u",
+ "%s: msg dump: vrf_name: %s, s.ip: 0x%x, g.ip: 0x%x (%pSG) cost: %u",
__func__, msg.vrf_name, msg.source_ip, msg.group_ip,
&sg, msg.cost_to_rp);
zlog_debug(
- "(%pSG4)owner_id: %d, DR: %d, Dual active: %d, vrf_id: 0x%x intf_name: %s",
+ "(%pSG)owner_id: %d, DR: %d, Dual active: %d, vrf_id: 0x%x intf_name: %s",
&sg, msg.owner_id, msg.am_i_dr, msg.am_i_dual_active,
msg.vrf_id, msg.intf_name);
}
static void pim_mlag_process_mroute_del(struct mlag_mroute_del msg)
{
if (PIM_DEBUG_MLAG) {
- struct prefix_sg sg;
+ pim_sgaddr sg;
sg.grp.s_addr = ntohl(msg.group_ip);
sg.src.s_addr = ntohl(msg.source_ip);
zlog_debug(
- "%s: msg dump: vrf_name: %s, s.ip: 0x%x, g.ip: 0x%x(%pSG4)",
+ "%s: msg dump: vrf_name: %s, s.ip: 0x%x, g.ip: 0x%x(%pSG)",
__func__, msg.vrf_name, msg.source_ip, msg.group_ip,
&sg);
- zlog_debug("(%pSG4)owner_id: %d, vrf_id: 0x%x intf_name: %s",
+ zlog_debug("(%pSG)owner_id: %d, vrf_id: 0x%x intf_name: %s",
&sg, msg.owner_id, msg.vrf_id, msg.intf_name);
}
pim_mlag_up_peer_del(&msg);
}
-int pim_zebra_mlag_handle_msg(struct stream *s, int len)
+int pim_zebra_mlag_handle_msg(int cmd, struct zclient *zclient,
+ uint16_t zapi_length, vrf_id_t vrf_id)
{
+ struct stream *s = zclient->ibuf;
struct mlag_msg mlag_msg;
char buf[80];
int rc = 0;
/****************End of PIM Mesasge processing handler********************/
-int pim_zebra_mlag_process_up(void)
+int pim_zebra_mlag_process_up(ZAPI_CALLBACK_ARGS)
{
if (PIM_DEBUG_MLAG)
zlog_debug("%s: Received Process-Up from Mlag", __func__);
router->peerlink_rif[0] = '\0';
}
-int pim_zebra_mlag_process_down(void)
+int pim_zebra_mlag_process_down(ZAPI_CALLBACK_ARGS)
{
if (PIM_DEBUG_MLAG)
zlog_debug("%s: Received Process-Down from Mlag", __func__);
return 0;
}
-static int pim_mlag_register_handler(struct thread *thread)
+static void pim_mlag_register_handler(struct thread *thread)
{
uint32_t bit_mask = 0;
if (!zclient)
- return -1;
+ return;
SET_FLAG(bit_mask, (1 << MLAG_STATUS_UPDATE));
SET_FLAG(bit_mask, (1 << MLAG_MROUTE_ADD));
__func__, bit_mask);
zclient_send_mlag_register(zclient, bit_mask);
- return 0;
}
void pim_mlag_register(void)
NULL);
}
-static int pim_mlag_deregister_handler(struct thread *thread)
+static void pim_mlag_deregister_handler(struct thread *thread)
{
if (!zclient)
- return -1;
+ return;
if (PIM_DEBUG_MLAG)
zlog_debug("%s: Posting Client De-Register to MLAG from PIM",
__func__);
router->connected_to_mlag = false;
zclient_send_mlag_deregister(zclient);
- return 0;
}
void pim_mlag_deregister(void)
if (router->pim_mlag_intf_cnt == 1) {
/*
- * atleast one Interface is configured for MLAG, send register
+ * at least one Interface is configured for MLAG, send register
* to Zebra for receiving MLAG Updates
*/
pim_mlag_register();