bf_assign_index(bm->rd_idspace, es->rd_id);
es->prd.family = AF_UNSPEC;
es->prd.prefixlen = 64;
- sprintf(buf, "%s:%hu", inet_ntoa(bgp->router_id), es->rd_id);
+ snprintf(buf, sizeof(buf), "%s:%hu", inet_ntoa(bgp->router_id),
+ es->rd_id);
(void)str2prefix_rd(buf, &es->prd);
}
return 0;
}
-static char *bgp_evpn_es_vteps_str(char *vtep_str, struct bgp_evpn_es *es)
+static char *bgp_evpn_es_vteps_str(char *vtep_str, struct bgp_evpn_es *es,
+ uint8_t vtep_str_size)
{
char vtep_flag_str[BGP_EVPN_FLAG_STR_SZ];
struct listnode *node;
for (ALL_LIST_ELEMENTS_RO(es->es_vtep_list, node, es_vtep)) {
vtep_flag_str[0] = '\0';
if (es_vtep->flags & BGP_EVPNES_VTEP_ESR)
- strcpy(vtep_flag_str + strlen(vtep_flag_str), "E");
+ strlcat(vtep_flag_str, "E", sizeof(vtep_flag_str));
if (es_vtep->flags & BGP_EVPNES_VTEP_ACTIVE)
- strcpy(vtep_flag_str + strlen(vtep_flag_str), "A");
+ strlcat(vtep_flag_str, "A", sizeof(vtep_flag_str));
if (!strlen(vtep_flag_str))
- strcpy(vtep_flag_str, "-");
- if (first) {
+ strlcat(vtep_flag_str, "-", sizeof(vtep_flag_str));
+ if (first)
first = false;
- sprintf(vtep_str + strlen(vtep_str), "%s(%s)",
- inet_ntoa(es_vtep->vtep_ip),
- vtep_flag_str);
- } else {
- sprintf(vtep_str + strlen(vtep_str), ",%s(%s)",
- inet_ntoa(es_vtep->vtep_ip),
- vtep_flag_str);
- }
+ else
+ strlcat(vtep_str, ",", vtep_str_size);
+ strlcat(vtep_str, inet_ntoa(es_vtep->vtep_ip), vtep_str_size);
+ strlcat(vtep_str, "(", vtep_str_size);
+ strlcat(vtep_str, vtep_flag_str, vtep_str_size);
+ strlcat(vtep_str, ")", vtep_str_size);
}
return vtep_str;
type_str[0] = '\0';
if (es->flags & BGP_EVPNES_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
if (es->flags & BGP_EVPNES_REMOTE)
- strcpy(type_str + strlen(type_str), "R");
+ strlcat(type_str, "R", sizeof(type_str));
if (es->inconsistencies)
- strcpy(type_str + strlen(type_str), "I");
+ strlcat(type_str, "I", sizeof(type_str));
- bgp_evpn_es_vteps_str(vtep_str, es);
+ bgp_evpn_es_vteps_str(vtep_str, es, sizeof(vtep_str));
if (es->flags & BGP_EVPNES_LOCAL)
prefix_rd2str(&es->prd, buf1, sizeof(buf1));
else
- strcpy(buf1, "-");
+ strlcpy(buf1, "-", sizeof(buf1));
vty_out(vty, "%-30s %-5s %-21s %-8d %s\n",
es->esi_str, type_str, buf1,
type_str[0] = '\0';
if (es->flags & BGP_EVPNES_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
if (es->flags & BGP_EVPNES_REMOTE)
- strcpy(type_str + strlen(type_str), "R");
+ strlcat(type_str, "R", sizeof(type_str));
- bgp_evpn_es_vteps_str(vtep_str, es);
+ bgp_evpn_es_vteps_str(vtep_str, es, sizeof(vtep_str));
if (!strlen(vtep_str))
- strcpy(vtep_str, "-");
+ strlcpy(buf1, "-", sizeof(buf1));
if (es->flags & BGP_EVPNES_LOCAL)
prefix_rd2str(&es->prd, buf1, sizeof(buf1));
else
- strcpy(buf1, "-");
+ strlcpy(buf1, "-", sizeof(buf1));
vty_out(vty, "ESI: %s\n", es->esi_str);
vty_out(vty, " Type: %s\n", type_str);
if (es->inconsistencies) {
incons_str[0] = '\0';
if (es->inconsistencies & BGP_EVPNES_INCONS_VTEP_LIST)
- strcpy(incons_str + strlen(incons_str),
- "vni-vtep-mismatch");
+ strlcat(incons_str, "vni-vtep-mismatch",
+ sizeof(incons_str));
} else {
- strcpy(incons_str, "-");
+ strlcpy(incons_str, "-", sizeof(incons_str));
}
vty_out(vty, " Inconsistencies: %s\n",
incons_str);
}
static char *bgp_evpn_es_evi_vteps_str(char *vtep_str,
- struct bgp_evpn_es_evi *es_evi)
+ struct bgp_evpn_es_evi *es_evi,
+ uint8_t vtep_str_size)
{
char vtep_flag_str[BGP_EVPN_FLAG_STR_SZ];
struct listnode *node;
for (ALL_LIST_ELEMENTS_RO(es_evi->es_evi_vtep_list, node, evi_vtep)) {
vtep_flag_str[0] = '\0';
if (evi_vtep->flags & BGP_EVPN_EVI_VTEP_EAD_PER_ES)
- strcpy(vtep_flag_str + strlen(vtep_flag_str), "E");
+ strlcat(vtep_flag_str, "E", sizeof(vtep_flag_str));
if (evi_vtep->flags & BGP_EVPN_EVI_VTEP_EAD_PER_EVI)
- strcpy(vtep_flag_str + strlen(vtep_flag_str), "V");
+ strlcat(vtep_flag_str, "V", sizeof(vtep_flag_str));
- if (!strlen(vtep_flag_str))
- strcpy(vtep_flag_str, "-");
- if (first) {
+ if (!strnlen(vtep_flag_str, sizeof(vtep_flag_str)))
+ strlcpy(vtep_flag_str, "-", sizeof(vtep_flag_str));
+ if (first)
first = false;
- sprintf(vtep_str + strlen(vtep_str), "%s(%s)",
- inet_ntoa(evi_vtep->vtep_ip),
- vtep_flag_str);
- } else {
- sprintf(vtep_str + strlen(vtep_str), ",%s(%s)",
- inet_ntoa(evi_vtep->vtep_ip),
- vtep_flag_str);
- }
+ else
+ strlcat(vtep_str, ",", vtep_str_size);
+ strlcat(vtep_str, inet_ntoa(evi_vtep->vtep_ip), vtep_str_size);
+ strlcat(vtep_str, "(", vtep_str_size);
+ strlcat(vtep_str, vtep_flag_str, vtep_str_size);
+ strlcat(vtep_str, ")", vtep_str_size);
}
return vtep_str;
type_str[0] = '\0';
if (es_evi->flags & BGP_EVPNES_EVI_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
if (es_evi->flags & BGP_EVPNES_EVI_REMOTE)
- strcpy(type_str + strlen(type_str), "R");
+ strlcat(type_str, "R", sizeof(type_str));
if (es_evi->flags & BGP_EVPNES_EVI_INCONS_VTEP_LIST)
- strcpy(type_str + strlen(type_str), "I");
+ strlcat(type_str, "I", sizeof(type_str));
- bgp_evpn_es_evi_vteps_str(vtep_str, es_evi);
+ bgp_evpn_es_evi_vteps_str(vtep_str, es_evi, sizeof(vtep_str));
vty_out(vty, "%-8d %-30s %-5s %s\n",
es_evi->vpn->vni, es_evi->es->esi_str,
type_str[0] = '\0';
if (es_evi->flags & BGP_EVPNES_EVI_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
if (es_evi->flags & BGP_EVPNES_EVI_REMOTE)
- strcpy(type_str + strlen(type_str), "R");
+ strlcat(type_str, "R", sizeof(type_str));
- bgp_evpn_es_evi_vteps_str(vtep_str, es_evi);
+ bgp_evpn_es_evi_vteps_str(vtep_str, es_evi, sizeof(vtep_str));
if (!strlen(vtep_str))
- strcpy(vtep_str, "-");
+ strlcpy(vtep_str, "-", sizeof(type_str));
vty_out(vty, "VNI: %d ESI: %s\n",
es_evi->vpn->vni, es_evi->es->esi_str);
} else {
type_str[0] = '\0';
if (es_evi->flags & ZEBRA_EVPNES_EVI_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
vty_out(vty, "%-8d %-30s %-4s\n",
es_evi->zvni->vni, es_evi->es->esi_str,
} else {
type_str[0] = '\0';
if (es_evi->flags & ZEBRA_EVPNES_EVI_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
vty_out(vty, "VNI %d ESI: %s\n",
es_evi->zvni->vni, es_evi->es->esi_str);
if (IS_ZEBRA_DEBUG_EVPN_MH_NH) {
char nh_str[ES_VTEP_LIST_STR_SZ];
uint32_t i;
+ char nh_buf[16];
nh_str[0] = '\0';
- for (i = 0; i < nh_cnt; ++i)
- sprintf(nh_str + strlen(nh_str),
- "0x%x ", nh_ids[i].id);
+ for (i = 0; i < nh_cnt; ++i) {
+ snprintf(nh_buf, sizeof(nh_buf), "%u ",
+ nh_ids[i].id);
+ strlcat(nh_str, nh_buf, sizeof(nh_str));
+ }
zlog_debug("es %s nhg 0x%x add %s",
es->esi_str, es->nhg_id, nh_str);
}
zebra_evpn_es_send_add_to_client(es);
}
-static char *zebra_evpn_es_vtep_str(char *vtep_str,
- struct zebra_evpn_es *es)
+static char *zebra_evpn_es_vtep_str(char *vtep_str, struct zebra_evpn_es *es,
+ uint8_t vtep_str_size)
{
struct zebra_evpn_es_vtep *zvtep;
struct listnode *node;
for (ALL_LIST_ELEMENTS_RO(es->es_vtep_list, node, zvtep)) {
if (first) {
first = false;
- sprintf(vtep_str + strlen(vtep_str), "%s",
- inet_ntoa(zvtep->vtep_ip));
+ strlcat(vtep_str, inet_ntoa(zvtep->vtep_ip),
+ vtep_str_size);
} else {
- sprintf(vtep_str + strlen(vtep_str), ",%s",
- inet_ntoa(zvtep->vtep_ip));
+ strlcat(vtep_str, ",", vtep_str_size);
+ strlcat(vtep_str, inet_ntoa(zvtep->vtep_ip),
+ vtep_str_size);
}
}
return vtep_str;
} else {
type_str[0] = '\0';
if (es->flags & ZEBRA_EVPNES_LOCAL)
- strcpy(type_str + strlen(type_str), "L");
+ strlcat(type_str, "L", sizeof(type_str));
if (es->flags & ZEBRA_EVPNES_REMOTE)
- strcpy(type_str + strlen(type_str), "R");
+ strlcat(type_str, "R", sizeof(type_str));
- zebra_evpn_es_vtep_str(vtep_str, es);
+ zebra_evpn_es_vtep_str(vtep_str, es, sizeof(vtep_str));
vty_out(vty, "%-30s %-4s %-21s %s\n",
es->esi_str, type_str,
} else {
type_str[0] = '\0';
if (es->flags & ZEBRA_EVPNES_LOCAL)
- strcpy(type_str + strlen(type_str), "Local");
+ strlcat(type_str, "Local", sizeof(type_str));
if (es->flags & ZEBRA_EVPNES_REMOTE) {
- if (strlen(type_str))
- strcpy(type_str + strlen(type_str), ",");
- strcpy(type_str + strlen(type_str), "Remote");
+ if (strnlen(type_str, sizeof(type_str)))
+ strlcat(type_str, ",", sizeof(type_str));
+ strlcat(type_str, "Remote", sizeof(type_str));
}
vty_out(vty, "ESI: %s\n", es->esi_str);
"State", "MAC", "Remote ES/VTEP", "Seq #'s");
}
-static char *zvni_print_neigh_flags(zebra_neigh_t *n, char *flags_buf)
+static char *zvni_print_neigh_flags(zebra_neigh_t *n, char *flags_buf,
+ uint32_t flags_buf_sz)
{
- sprintf(flags_buf, "%s%s%s",
+ snprintf(flags_buf, flags_buf_sz, "%s%s%s",
(n->flags & ZEBRA_NEIGH_ES_PEER_ACTIVE) ?
"P" : "",
(n->flags & ZEBRA_NEIGH_ES_PEER_PROXY) ?
if (json_vni == NULL) {
vty_out(vty, "%*s %-6s %-5s %-8s %-17s %-30s %u/%u\n",
-wctx->addr_width, buf2, "local",
- zvni_print_neigh_flags(n, flags_buf),
- state_str, buf1, "", n->loc_seq, n->rem_seq);
+ zvni_print_neigh_flags(n, flags_buf,
+ sizeof(flags_buf)), state_str,
+ buf1, "", n->loc_seq, n->rem_seq);
} else {
json_object_string_add(json_row, "type", "local");
json_object_string_add(json_row, "state", state_str);
zvni_print_neigh_hdr(vty, wctx);
vty_out(vty, "%*s %-6s %-5s %-8s %-17s %-30s %u/%u\n",
-wctx->addr_width, buf2, "remote",
- zvni_print_neigh_flags(n, flags_buf),
+ zvni_print_neigh_flags(n, flags_buf,
+ sizeof(flags_buf)),
state_str, buf1,
n->mac->es ? n->mac->es->esi_str :
inet_ntoa(n->r_vtep_ip),
}
}
-static char *zvni_print_mac_flags(zebra_mac_t *mac, char *flags_buf)
+static char *zvni_print_mac_flags(zebra_mac_t *mac, char *flags_buf,
+ uint32_t flags_buf_sz)
{
- sprintf(flags_buf, "%s%s%s%s",
+ snprintf(flags_buf, flags_buf_sz, "%s%s%s%s",
mac->sync_neigh_cnt ?
"N" : "",
(mac->flags & ZEBRA_MAC_ES_PEER_ACTIVE) ?
&ifp, &vid);
if (json_mac_hdr == NULL) {
vty_out(vty, "%-17s %-6s %-5s %-30s", buf1, "local",
- zvni_print_mac_flags(mac, flags_buf),
+ zvni_print_mac_flags(mac, flags_buf,
+ sizeof(flags_buf)),
ifp ? ifp->name : "-");
} else {
json_object_string_add(json_mac, "type", "local");
}
vty_out(vty, "%-17s %-6s %-5s %-30s %-5s %u/%u\n", buf1,
"remote",
- zvni_print_mac_flags(mac, flags_buf),
+ zvni_print_mac_flags(mac, flags_buf,
+ sizeof(flags_buf)),
mac->es ? mac->es->esi_str :
inet_ntoa(mac->fwd_info.r_vtep_ip),
"", mac->loc_seq, mac->rem_seq);
if (memcmp(&esi, zero_esi, sizeof(esi_t)))
esi_to_str(&esi, esi_buf, sizeof(esi_buf));
else
- strcpy(esi_buf, "-");
+ strlcpy(esi_buf, "-", ESI_STR_LEN);
zlog_debug(
"Recv %sMACIP ADD VNI %u MAC %s%s%s flags 0x%x seq %u VTEP %s ESI %s from %s",
(flags & ZEBRA_MACIP_TYPE_SYNC_PATH) ?