/* list redistributed protocols */
for (afi = AFI_IP; afi <= AFI_IP6; afi++) {
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
- if (i != zclient->redist_default &&
- vrf_bitmap_check (zclient->redist[afi][i], VRF_DEFAULT)) {
- vty_out (vty, " redistribute %s %s\n",
- (afi == AFI_IP) ? "ipv4" : "ipv6",
- zebra_route_string(i));
- lines++;
- }
- }
+ if (i != zclient->redist_default &&
+ vrf_bitmap_check(&zclient->redist[afi][i], VRF_DEFAULT)) {
+ vty_out(vty, " redistribute %s %s\n",
+ (afi == AFI_IP) ? "ipv4" : "ipv6",
+ zebra_route_string(i));
+ lines++;
+ }
+ }
}
lines += config_write_distribute (vty, babel_routing_process->distribute_ctx);
redist_add_instance(&zclient->mi_redist[afi][type], instance);
} else {
- if (vrf_bitmap_check(zclient->redist[afi][type], bgp->vrf_id))
+ if (vrf_bitmap_check(&zclient->redist[afi][type], bgp->vrf_id))
return CMD_WARNING;
#ifdef ENABLE_BGP_VNC
}
#endif
- vrf_bitmap_set(zclient->redist[afi][type], bgp->vrf_id);
+ vrf_bitmap_set(&zclient->redist[afi][type], bgp->vrf_id);
}
/*
return CMD_WARNING;
redist_del_instance(&zclient->mi_redist[afi][type], instance);
} else {
- if (!vrf_bitmap_check(zclient->redist[afi][type], bgp->vrf_id))
+ if (!vrf_bitmap_check(&zclient->redist[afi][type], bgp->vrf_id))
return CMD_WARNING;
- vrf_bitmap_unset(zclient->redist[afi][type], bgp->vrf_id);
+ vrf_bitmap_unset(&zclient->redist[afi][type], bgp->vrf_id);
}
if (bgp_install_info_to_zebra(bgp)) {
instance);
} else {
if (set)
- vrf_bitmap_set(zclient->redist[afi][type], vrf_id);
+ vrf_bitmap_set(&zclient->redist[afi][type], vrf_id);
else
- vrf_bitmap_unset(zclient->redist[afi][type], vrf_id);
+ vrf_bitmap_unset(&zclient->redist[afi][type], vrf_id);
}
}
return;
}
- if (!vrf_bitmap_check(
- zclient_vnc->redist[family2afi(p->family)][ZEBRA_ROUTE_VNC],
- VRF_DEFAULT))
+ if (!vrf_bitmap_check(&zclient_vnc->redist[family2afi(p->family)]
+ [ZEBRA_ROUTE_VNC],
+ VRF_DEFAULT))
return;
if (!bgp->rfapi_cfg) {
if (zclient_vnc->sock < 0)
return;
- if (!vrf_bitmap_check(zclient_vnc->redist[afi][ZEBRA_ROUTE_VNC],
+ if (!vrf_bitmap_check(&zclient_vnc->redist[afi][ZEBRA_ROUTE_VNC],
VRF_DEFAULT))
return;
// bgp->redist[afi][type] = 1;
/* Return if already redistribute flag is set. */
- if (vrf_bitmap_check(zclient_vnc->redist[afi][type], VRF_DEFAULT))
+ if (vrf_bitmap_check(&zclient_vnc->redist[afi][type], VRF_DEFAULT))
return CMD_WARNING_CONFIG_FAILED;
- vrf_bitmap_set(zclient_vnc->redist[afi][type], VRF_DEFAULT);
+ vrf_bitmap_set(&zclient_vnc->redist[afi][type], VRF_DEFAULT);
- // vrf_bitmap_set(zclient_vnc->redist[afi][type], VRF_DEFAULT);
+ // vrf_bitmap_set(&zclient_vnc->redist[afi][type], VRF_DEFAULT);
/* Return if zebra connection is not established. */
if (zclient_vnc->sock < 0)
bgp->rfapi_cfg->redist[afi][type] = 0;
/* Return if zebra connection is disabled. */
- if (!vrf_bitmap_check(zclient_vnc->redist[afi][type], VRF_DEFAULT))
+ if (!vrf_bitmap_check(&zclient_vnc->redist[afi][type], VRF_DEFAULT))
return CMD_WARNING_CONFIG_FAILED;
- vrf_bitmap_unset(zclient_vnc->redist[afi][type], VRF_DEFAULT);
+ vrf_bitmap_unset(&zclient_vnc->redist[afi][type], VRF_DEFAULT);
if (bgp->rfapi_cfg->redist[AFI_IP][type] == 0
&& bgp->rfapi_cfg->redist[AFI_IP6][type] == 0
else
vrfid = VRF_DEFAULT;
- if (vrf_bitmap_check(zclient->redist[AFI_IP][proto], vrfid))
+ if (vrf_bitmap_check(&zclient->redist[AFI_IP][proto], vrfid))
return NB_ERR_INCONSISTENCY;
break;
case NB_EV_PREPARE:
static int eigrp_is_type_redistributed(int type, vrf_id_t vrf_id)
{
return ((DEFAULT_ROUTE_TYPE(type))
- ? vrf_bitmap_check(zclient->default_information[AFI_IP],
- vrf_id)
- : vrf_bitmap_check(zclient->redist[AFI_IP][type],
+ ? vrf_bitmap_check(
+ &zclient->default_information[AFI_IP], vrf_id)
+ : vrf_bitmap_check(&zclient->redist[AFI_IP][type],
vrf_id));
}
if (type == DEFAULT_ROUTE) {
if (set)
vrf_bitmap_set(
- zclient->default_information
- [afi],
+ &zclient->default_information
+ [afi],
isis->vrf_id);
else
vrf_bitmap_unset(
- zclient->default_information
- [afi],
+ &zclient->default_information
+ [afi],
isis->vrf_id);
} else {
if (set)
vrf_bitmap_set(
- zclient->redist[afi][type],
+ &zclient->redist[afi][type],
isis->vrf_id);
else
vrf_bitmap_unset(
- zclient->redist[afi][type],
+ &zclient->redist[afi][type],
isis->vrf_id);
}
}
XFREE(MTYPE_VRF_BITMAP, bit);
}
-vrf_bitmap_t vrf_bitmap_init(void)
+void vrf_bitmap_init(vrf_bitmap_t *pbmap)
{
- return hash_create_size(32, vrf_hash_bitmap_key, vrf_hash_bitmap_cmp,
- "VRF BIT HASH");
+ *pbmap = NULL;
}
-void vrf_bitmap_free(vrf_bitmap_t bmap)
+void vrf_bitmap_free(vrf_bitmap_t *pbmap)
{
- struct hash *vrf_hash = bmap;
+ struct hash *vrf_hash;
+
+ if (!*pbmap)
+ return;
+
+ vrf_hash = *pbmap;
hash_clean_and_free(&vrf_hash, vrf_hash_bitmap_free);
}
-void vrf_bitmap_set(vrf_bitmap_t bmap, vrf_id_t vrf_id)
+void vrf_bitmap_set(vrf_bitmap_t *pbmap, vrf_id_t vrf_id)
{
struct vrf_bit_set lookup = { .vrf_id = vrf_id };
- struct hash *vrf_hash = bmap;
+ struct hash *vrf_hash;
struct vrf_bit_set *bit;
- if (vrf_hash == NULL || vrf_id == VRF_UNKNOWN)
+ if (vrf_id == VRF_UNKNOWN)
return;
+ if (!*pbmap)
+ *pbmap = vrf_hash =
+ hash_create_size(2, vrf_hash_bitmap_key,
+ vrf_hash_bitmap_cmp, "VRF BIT HASH");
+ else
+ vrf_hash = *pbmap;
+
bit = hash_get(vrf_hash, &lookup, vrf_hash_bitmap_alloc);
bit->set = true;
}
-void vrf_bitmap_unset(vrf_bitmap_t bmap, vrf_id_t vrf_id)
+void vrf_bitmap_unset(vrf_bitmap_t *pbmap, vrf_id_t vrf_id)
{
struct vrf_bit_set lookup = { .vrf_id = vrf_id };
- struct hash *vrf_hash = bmap;
+ struct hash *vrf_hash;
struct vrf_bit_set *bit;
- if (vrf_hash == NULL || vrf_id == VRF_UNKNOWN)
+ if (vrf_id == VRF_UNKNOWN)
+ return;
+
+ /*
+ * If the hash is not created then unsetting is unnecessary
+ */
+ if (!*pbmap)
+ return;
+
+ vrf_hash = *pbmap;
+
+ /*
+ * If we can't look it up, no need to unset it!
+ */
+ bit = hash_lookup(vrf_hash, &lookup);
+ if (!bit)
return;
- bit = hash_get(vrf_hash, &lookup, vrf_hash_bitmap_alloc);
bit->set = false;
}
-int vrf_bitmap_check(vrf_bitmap_t bmap, vrf_id_t vrf_id)
+int vrf_bitmap_check(vrf_bitmap_t *pbmap, vrf_id_t vrf_id)
{
struct vrf_bit_set lookup = { .vrf_id = vrf_id };
- struct hash *vrf_hash = bmap;
+ struct hash *vrf_hash;
struct vrf_bit_set *bit;
- if (vrf_hash == NULL || vrf_id == VRF_UNKNOWN)
+ if (!*pbmap || vrf_id == VRF_UNKNOWN)
return 0;
+ vrf_hash = *pbmap;
bit = hash_lookup(vrf_hash, &lookup);
if (bit)
return bit->set;
/*
* VRF bit-map: maintaining flags, one bit per VRF ID
*/
-
typedef void *vrf_bitmap_t;
#define VRF_BITMAP_NULL NULL
-extern vrf_bitmap_t vrf_bitmap_init(void);
-extern void vrf_bitmap_free(vrf_bitmap_t);
-extern void vrf_bitmap_set(vrf_bitmap_t, vrf_id_t);
-extern void vrf_bitmap_unset(vrf_bitmap_t, vrf_id_t);
-extern int vrf_bitmap_check(vrf_bitmap_t, vrf_id_t);
+extern void vrf_bitmap_init(vrf_bitmap_t *pbmap);
+extern void vrf_bitmap_free(vrf_bitmap_t *pbmap);
+extern void vrf_bitmap_set(vrf_bitmap_t *pbmap, vrf_id_t vrf_id);
+extern void vrf_bitmap_unset(vrf_bitmap_t *pbmap, vrf_id_t vrf_id);
+extern int vrf_bitmap_check(vrf_bitmap_t *pbmap, vrf_id_t vrf_id);
/*
* VRF initializer/destructor
for (afi = AFI_IP; afi < AFI_MAX; afi++) {
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
- vrf_bitmap_free(zclient->redist[afi][i]);
+ vrf_bitmap_free(&zclient->redist[afi][i]);
zclient->redist[afi][i] = VRF_BITMAP_NULL;
}
redist_del_instance(
&zclient->mi_redist[afi][zclient->redist_default],
zclient->instance);
- vrf_bitmap_free(zclient->default_information[afi]);
+ vrf_bitmap_free(&zclient->default_information[afi]);
zclient->default_information[afi] = VRF_BITMAP_NULL;
}
}
/* Set unwanted redistribute route. */
for (afi = AFI_IP; afi < AFI_MAX; afi++)
- vrf_bitmap_set(zclient->redist[afi][zclient->redist_default],
+ vrf_bitmap_set(&zclient->redist[afi][zclient->redist_default],
vrf_id);
/* Flush all redistribute request. */
/* Resend all redistribute request. */
for (afi = AFI_IP; afi < AFI_MAX; afi++) {
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- if (i != zclient->redist_default
- && vrf_bitmap_check(zclient->redist[afi][i],
- vrf_id))
+ if (i != zclient->redist_default &&
+ vrf_bitmap_check(&zclient->redist[afi][i], vrf_id))
zebra_redistribute_send(ZEBRA_REDISTRIBUTE_ADD,
zclient, afi, i, 0,
vrf_id);
/* If default information is needed. */
- if (vrf_bitmap_check(zclient->default_information[afi], vrf_id))
+ if (vrf_bitmap_check(&zclient->default_information[afi],
+ vrf_id))
zebra_redistribute_default_send(
ZEBRA_REDISTRIBUTE_DEFAULT_ADD, zclient, afi,
vrf_id);
/* Set unwanted redistribute route. */
for (afi = AFI_IP; afi < AFI_MAX; afi++)
- vrf_bitmap_unset(zclient->redist[afi][zclient->redist_default],
+ vrf_bitmap_unset(&zclient->redist[afi][zclient->redist_default],
vrf_id);
/* Flush all redistribute request. */
/* Flush all redistribute request. */
for (afi = AFI_IP; afi < AFI_MAX; afi++) {
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- if (i != zclient->redist_default
- && vrf_bitmap_check(zclient->redist[afi][i],
- vrf_id))
+ if (i != zclient->redist_default &&
+ vrf_bitmap_check(&zclient->redist[afi][i], vrf_id))
zebra_redistribute_send(
ZEBRA_REDISTRIBUTE_DELETE, zclient, afi,
i, 0, vrf_id);
/* If default information is needed. */
- if (vrf_bitmap_check(zclient->default_information[afi], vrf_id))
+ if (vrf_bitmap_check(&zclient->default_information[afi],
+ vrf_id))
zebra_redistribute_default_send(
ZEBRA_REDISTRIBUTE_DEFAULT_DELETE, zclient, afi,
vrf_id);
/* Clear redistribution flags. */
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- zclient->redist[afi][i] = vrf_bitmap_init();
+ vrf_bitmap_init(&zclient->redist[afi][i]);
/* Set unwanted redistribute route. bgpd does not need BGP route
redistribution. */
instance);
/* Set default-information redistribute to zero. */
- zclient->default_information[afi] = vrf_bitmap_init();
+ vrf_bitmap_init(&zclient->default_information[afi]);
}
if (zclient_debug)
} else {
if (command == ZEBRA_REDISTRIBUTE_ADD) {
- if (vrf_bitmap_check(zclient->redist[afi][type],
+ if (vrf_bitmap_check(&zclient->redist[afi][type],
vrf_id))
return;
- vrf_bitmap_set(zclient->redist[afi][type], vrf_id);
+ vrf_bitmap_set(&zclient->redist[afi][type], vrf_id);
} else {
- if (!vrf_bitmap_check(zclient->redist[afi][type],
+ if (!vrf_bitmap_check(&zclient->redist[afi][type],
vrf_id))
return;
- vrf_bitmap_unset(zclient->redist[afi][type], vrf_id);
+ vrf_bitmap_unset(&zclient->redist[afi][type], vrf_id);
}
}
{
if (command == ZEBRA_REDISTRIBUTE_DEFAULT_ADD) {
- if (vrf_bitmap_check(zclient->default_information[afi], vrf_id))
+ if (vrf_bitmap_check(&zclient->default_information[afi],
+ vrf_id))
return;
- vrf_bitmap_set(zclient->default_information[afi], vrf_id);
+ vrf_bitmap_set(&zclient->default_information[afi], vrf_id);
} else {
- if (!vrf_bitmap_check(zclient->default_information[afi],
+ if (!vrf_bitmap_check(&zclient->default_information[afi],
vrf_id))
return;
- vrf_bitmap_unset(zclient->default_information[afi], vrf_id);
+ vrf_bitmap_unset(&zclient->default_information[afi], vrf_id);
}
if (zclient->sock > 0)
"%s: setting redist vrf %d bitmap for type %d",
__func__, ospf6->vrf_id, type);
if (set)
- vrf_bitmap_set(zclient->redist[AFI_IP6][type],
+ vrf_bitmap_set(&zclient->redist[AFI_IP6][type],
ospf6->vrf_id);
else
- vrf_bitmap_unset(zclient->redist[AFI_IP6][type],
+ vrf_bitmap_unset(&zclient->redist[AFI_IP6][type],
ospf6->vrf_id);
}
red_list = ospf6->redist[DEFAULT_ROUTE];
if (red_list) {
if (set)
- vrf_bitmap_set(zclient->default_information[AFI_IP6],
+ vrf_bitmap_set(&zclient->default_information[AFI_IP6],
ospf6->vrf_id);
else
- vrf_bitmap_unset(zclient->default_information[AFI_IP6],
+ vrf_bitmap_unset(&zclient->default_information[AFI_IP6],
ospf6->vrf_id);
}
}
/* redistribute function */
void ospf6_zebra_redistribute(int type, vrf_id_t vrf_id)
{
- if (vrf_bitmap_check(zclient->redist[AFI_IP6][type], vrf_id))
+ if (vrf_bitmap_check(&zclient->redist[AFI_IP6][type], vrf_id))
return;
- vrf_bitmap_set(zclient->redist[AFI_IP6][type], vrf_id);
+ vrf_bitmap_set(&zclient->redist[AFI_IP6][type], vrf_id);
if (zclient->sock > 0)
zebra_redistribute_send(ZEBRA_REDISTRIBUTE_ADD, zclient,
void ospf6_zebra_no_redistribute(int type, vrf_id_t vrf_id)
{
- if (!vrf_bitmap_check(zclient->redist[AFI_IP6][type], vrf_id))
+ if (!vrf_bitmap_check(&zclient->redist[AFI_IP6][type], vrf_id))
return;
- vrf_bitmap_unset(zclient->redist[AFI_IP6][type], vrf_id);
+ vrf_bitmap_unset(&zclient->redist[AFI_IP6][type], vrf_id);
if (zclient->sock > 0)
zebra_redistribute_send(ZEBRA_REDISTRIBUTE_DELETE, zclient,
AFI_IP6, type, 0, vrf_id);
json_object_int_add(json_zebra, "fail", zclient->fail);
json_object_int_add(
json_zebra, "redistributeDefault",
- vrf_bitmap_check(zclient->default_information[AFI_IP6],
+ vrf_bitmap_check(&zclient->default_information[AFI_IP6],
VRF_DEFAULT));
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
- if (vrf_bitmap_check(zclient->redist[AFI_IP6][i],
+ if (vrf_bitmap_check(&zclient->redist[AFI_IP6][i],
VRF_DEFAULT))
json_object_array_add(
json_array,
vty_out(vty, "Zebra Information\n");
vty_out(vty, " fail: %d\n", zclient->fail);
vty_out(vty, " redistribute default: %d\n",
- vrf_bitmap_check(zclient->default_information[AFI_IP6],
+ vrf_bitmap_check(&zclient->default_information[AFI_IP6],
VRF_DEFAULT));
vty_out(vty, " redistribute:");
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
- if (vrf_bitmap_check(zclient->redist[AFI_IP6][i],
+ if (vrf_bitmap_check(&zclient->redist[AFI_IP6][i],
VRF_DEFAULT))
vty_out(vty, " %s", zebra_route_string(i));
}
extern void ospf6_zebra_redistribute(int, vrf_id_t vrf_id);
extern void ospf6_zebra_no_redistribute(int, vrf_id_t vrf_id);
#define ospf6_zebra_is_redistribute(type, vrf_id) \
- vrf_bitmap_check(zclient->redist[AFI_IP6][type], vrf_id)
+ vrf_bitmap_check(&zclient->redist[AFI_IP6][type], vrf_id)
extern void ospf6_zebra_init(struct event_loop *tm);
extern void ospf6_zebra_import_default_route(struct ospf6 *ospf6, bool unreg);
extern void ospf6_zebra_add_discard(struct ospf6_route *request,
redist_on =
is_default_prefix4(&p)
? vrf_bitmap_check(
- zclient->default_information[AFI_IP],
- ospf->vrf_id)
- : (zclient->mi_redist[AFI_IP][type].enabled
- || vrf_bitmap_check(
- zclient->redist[AFI_IP][type],
+ &zclient->default_information[AFI_IP],
+ ospf->vrf_id)
+ : (zclient->mi_redist[AFI_IP][type].enabled ||
+ vrf_bitmap_check(
+ &zclient->redist[AFI_IP][type],
ospf->vrf_id));
// Pending: check for MI above.
if (redist_on) {
unsigned short instance)
{
return (DEFAULT_ROUTE_TYPE(type)
- ? vrf_bitmap_check(zclient->default_information[AFI_IP],
- ospf->vrf_id)
- : ((instance
- && redist_check_instance(
+ ? vrf_bitmap_check(
+ &zclient->default_information[AFI_IP],
+ ospf->vrf_id)
+ : ((instance &&
+ redist_check_instance(
&zclient->mi_redist[AFI_IP][type],
- instance))
- || (!instance
- && vrf_bitmap_check(
- zclient->redist[AFI_IP][type],
- ospf->vrf_id))));
+ instance)) ||
+ (!instance &&
+ vrf_bitmap_check(&zclient->redist[AFI_IP][type],
+ ospf->vrf_id))));
}
int ospf_redistribute_update(struct ospf *ospf, struct ospf_redist *red,
"%s: setting redist vrf %d bitmap for type %d",
__func__, ospf->vrf_id, type);
if (set)
- vrf_bitmap_set(zclient->redist[AFI_IP][type],
+ vrf_bitmap_set(&zclient->redist[AFI_IP][type],
ospf->vrf_id);
else
- vrf_bitmap_unset(zclient->redist[AFI_IP][type],
+ vrf_bitmap_unset(&zclient->redist[AFI_IP][type],
ospf->vrf_id);
}
red_list = ospf->redist[DEFAULT_ROUTE];
if (red_list) {
if (set)
- vrf_bitmap_set(zclient->default_information[AFI_IP],
+ vrf_bitmap_set(&zclient->default_information[AFI_IP],
ospf->vrf_id);
else
- vrf_bitmap_unset(zclient->default_information[AFI_IP],
+ vrf_bitmap_unset(&zclient->default_information[AFI_IP],
ospf->vrf_id);
}
}
for (afi = AFI_IP; afi <= AFI_IP6; afi++) {
- if (!vrf_bitmap_check(client->redist_default[afi], vrf_id))
+ if (!vrf_bitmap_check(&client->redist_default[afi], vrf_id))
continue;
/* Lookup table. */
/* If default route and redistributed */
if (is_default_prefix(&rn->p) &&
- vrf_bitmap_check(client->redist_default[afi], re->vrf_id))
+ vrf_bitmap_check(&client->redist_default[afi], re->vrf_id))
return true;
/* If redistribute in enabled for zebra route all */
- if (vrf_bitmap_check(client->redist[afi][ZEBRA_ROUTE_ALL], re->vrf_id))
+ if (vrf_bitmap_check(&client->redist[afi][ZEBRA_ROUTE_ALL], re->vrf_id))
return true;
/*
}
/* If redistribution is enabled for give route type. */
- if (vrf_bitmap_check(client->redist[afi][re->type], re->vrf_id))
+ if (vrf_bitmap_check(&client->redist[afi][re->type], re->vrf_id))
return true;
return false;
zvrf_id(zvrf), afi);
}
} else {
- if (!vrf_bitmap_check(client->redist[afi][type],
+ if (!vrf_bitmap_check(&client->redist[afi][type],
zvrf_id(zvrf))) {
if (IS_ZEBRA_DEBUG_EVENT)
zlog_debug(
"%s: setting vrf %s(%u) redist bitmap",
__func__, VRF_LOGNAME(zvrf->vrf),
zvrf_id(zvrf));
- vrf_bitmap_set(client->redist[afi][type],
+ vrf_bitmap_set(&client->redist[afi][type],
zvrf_id(zvrf));
zebra_redistribute(client, type, 0, zvrf_id(zvrf), afi);
}
if (instance)
redist_del_instance(&client->mi_redist[afi][type], instance);
else
- vrf_bitmap_unset(client->redist[afi][type], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->redist[afi][type], zvrf_id(zvrf));
stream_failure:
return;
return;
}
- vrf_bitmap_set(client->redist_default[afi], zvrf_id(zvrf));
+ vrf_bitmap_set(&client->redist_default[afi], zvrf_id(zvrf));
zebra_redistribute_default(client, zvrf_id(zvrf));
stream_failure:
return;
}
- vrf_bitmap_unset(client->redist_default[afi], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->redist_default[afi], zvrf_id(zvrf));
stream_failure:
return;
family2addrsize(sockunion_family(&ip)));
for (ALL_LIST_ELEMENTS(zrouter.client_list, node, nnode, client)) {
- if (!vrf_bitmap_check(client->nhrp_neighinfo[afi],
+ if (!vrf_bitmap_check(&client->nhrp_neighinfo[afi],
ifp->vrf->vrf_id))
continue;
struct stream *s;
/* Check this client need interface information. */
- if (!vrf_bitmap_check(client->ridinfo[afi], vrf_id))
+ if (!vrf_bitmap_check(&client->ridinfo[afi], vrf_id))
return 0;
s = stream_new(ZEBRA_MAX_PACKET_SIZ);
}
/* Router-id information is needed. */
- vrf_bitmap_set(client->ridinfo[afi], zvrf_id(zvrf));
+ vrf_bitmap_set(&client->ridinfo[afi], zvrf_id(zvrf));
router_id_get(afi, &p, zvrf);
goto stream_failure;
}
- vrf_bitmap_unset(client->ridinfo[afi], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->ridinfo[afi], zvrf_id(zvrf));
stream_failure:
return;
for (afi = AFI_IP; afi < AFI_MAX; afi++) {
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- vrf_bitmap_unset(client->redist[afi][i], zvrf_id(zvrf));
- vrf_bitmap_unset(client->redist_default[afi], zvrf_id(zvrf));
- vrf_bitmap_unset(client->ridinfo[afi], zvrf_id(zvrf));
- vrf_bitmap_unset(client->nhrp_neighinfo[afi], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->redist[afi][i],
+ zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->redist_default[afi], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->ridinfo[afi], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->nhrp_neighinfo[afi], zvrf_id(zvrf));
}
}
afi);
goto stream_failure;
}
- vrf_bitmap_set(client->nhrp_neighinfo[afi], zvrf_id(zvrf));
+ vrf_bitmap_set(&client->nhrp_neighinfo[afi], zvrf_id(zvrf));
stream_failure:
return;
}
afi);
goto stream_failure;
}
- vrf_bitmap_unset(client->nhrp_neighinfo[afi], zvrf_id(zvrf));
+ vrf_bitmap_unset(&client->nhrp_neighinfo[afi], zvrf_id(zvrf));
stream_failure:
return;
}
/* Free bitmaps. */
for (afi_t afi = AFI_IP; afi < AFI_MAX; afi++) {
for (int i = 0; i < ZEBRA_ROUTE_MAX; i++) {
- vrf_bitmap_free(client->redist[afi][i]);
+ vrf_bitmap_free(&client->redist[afi][i]);
redist_del_all_instances(&client->mi_redist[afi][i]);
}
- vrf_bitmap_free(client->redist_default[afi]);
- vrf_bitmap_free(client->ridinfo[afi]);
- vrf_bitmap_free(client->nhrp_neighinfo[afi]);
+ vrf_bitmap_free(&client->redist_default[afi]);
+ vrf_bitmap_free(&client->ridinfo[afi]);
+ vrf_bitmap_free(&client->nhrp_neighinfo[afi]);
}
/*
/* Initialize flags */
for (afi = AFI_IP; afi < AFI_MAX; afi++) {
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- client->redist[afi][i] = vrf_bitmap_init();
- client->redist_default[afi] = vrf_bitmap_init();
- client->ridinfo[afi] = vrf_bitmap_init();
- client->nhrp_neighinfo[afi] = vrf_bitmap_init();
+ vrf_bitmap_init(&client->redist[afi][i]);
+ vrf_bitmap_init(&client->redist_default[afi]);
+ vrf_bitmap_init(&client->ridinfo[afi]);
+ vrf_bitmap_init(&client->nhrp_neighinfo[afi]);
}
/* Add this client to linked list. */