"Community (AA:BB or AA:BB:CC)\n"
"Alias name\n")
{
- struct community_alias ca1;
- struct community_alias ca2;
+ struct community_alias ca = {};
struct community_alias *lookup_community;
struct community_alias *lookup_alias;
struct community *comm;
return CMD_WARNING;
}
- memset(&ca1, 0, sizeof(ca1));
- memset(&ca2, 0, sizeof(ca2));
- strlcpy(ca1.community, community, sizeof(ca1.community));
- strlcpy(ca1.alias, alias_name, sizeof(ca1.alias));
+ strlcpy(ca.community, community, sizeof(ca.community));
+ strlcpy(ca.alias, alias_name, sizeof(ca.alias));
- lookup_community = bgp_ca_community_lookup(&ca1);
- lookup_alias = bgp_ca_alias_lookup(&ca1);
+ lookup_community = bgp_ca_community_lookup(&ca);
+ lookup_alias = bgp_ca_alias_lookup(&ca);
if (no) {
- bgp_ca_alias_delete(&ca1);
- bgp_ca_community_delete(&ca1);
+ bgp_ca_alias_delete(&ca);
+ bgp_ca_community_delete(&ca);
} else {
if (lookup_alias) {
/* Lookup if community hash table has an item
* with the same alias name.
*/
- strlcpy(ca2.community, lookup_alias->community,
- sizeof(ca2.community));
- if (bgp_ca_community_lookup(&ca2)) {
+ strlcpy(ca.community, lookup_alias->community,
+ sizeof(ca.community));
+ if (bgp_ca_community_lookup(&ca)) {
vty_out(vty,
"community (%s) already has this alias (%s)\n",
lookup_alias->community,
lookup_alias->alias);
return CMD_WARNING;
}
- bgp_ca_alias_delete(&ca1);
+ bgp_ca_alias_delete(&ca);
}
- if (lookup_community)
- bgp_ca_community_delete(&ca1);
+ if (lookup_community) {
+ /* Lookup if alias hash table has an item
+ * with the same community.
+ */
+ strlcpy(ca.alias, lookup_community->alias,
+ sizeof(ca.alias));
+ if (bgp_ca_alias_lookup(&ca)) {
+ vty_out(vty,
+ "alias (%s) already has this community (%s)\n",
+ lookup_community->alias,
+ lookup_community->community);
+ return CMD_WARNING;
+ }
+ bgp_ca_community_delete(&ca);
+ }
- bgp_ca_alias_insert(&ca1);
- bgp_ca_community_insert(&ca1);
+ bgp_ca_alias_insert(&ca);
+ bgp_ca_community_insert(&ca);
}
return CMD_SUCCESS;