mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 06:59:21 +00:00
lib: remove unused ns code
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
58ac32e2d5
commit
1fbe3e585d
211
lib/ns.c
211
lib/ns.c
@ -310,217 +310,6 @@ ns_add_hook (int type, int (*func)(ns_id_t, void **))
|
||||
}
|
||||
}
|
||||
|
||||
/* Return the iterator of the first NS. */
|
||||
ns_iter_t
|
||||
ns_first (void)
|
||||
{
|
||||
struct route_node *rn;
|
||||
|
||||
for (rn = route_top (ns_table); rn; rn = route_next (rn))
|
||||
if (rn->info)
|
||||
{
|
||||
route_unlock_node (rn); /* top/next */
|
||||
return (ns_iter_t)rn;
|
||||
}
|
||||
return NS_ITER_INVALID;
|
||||
}
|
||||
|
||||
/* Return the next NS iterator to the given iterator. */
|
||||
ns_iter_t
|
||||
ns_next (ns_iter_t iter)
|
||||
{
|
||||
struct route_node *rn = NULL;
|
||||
|
||||
/* Lock it first because route_next() will unlock it. */
|
||||
if (iter != NS_ITER_INVALID)
|
||||
rn = route_next (route_lock_node ((struct route_node *)iter));
|
||||
|
||||
for (; rn; rn = route_next (rn))
|
||||
if (rn->info)
|
||||
{
|
||||
route_unlock_node (rn); /* next */
|
||||
return (ns_iter_t)rn;
|
||||
}
|
||||
return NS_ITER_INVALID;
|
||||
}
|
||||
|
||||
/* Return the NS iterator of the given NS ID. If it does not exist,
|
||||
* the iterator of the next existing NS is returned. */
|
||||
ns_iter_t
|
||||
ns_iterator (ns_id_t ns_id)
|
||||
{
|
||||
struct prefix p;
|
||||
struct route_node *rn;
|
||||
|
||||
ns_build_key (ns_id, &p);
|
||||
rn = route_node_get (ns_table, &p);
|
||||
if (rn->info)
|
||||
{
|
||||
/* OK, the NS exists. */
|
||||
route_unlock_node (rn); /* get */
|
||||
return (ns_iter_t)rn;
|
||||
}
|
||||
|
||||
/* Find the next NS. */
|
||||
for (rn = route_next (rn); rn; rn = route_next (rn))
|
||||
if (rn->info)
|
||||
{
|
||||
route_unlock_node (rn); /* next */
|
||||
return (ns_iter_t)rn;
|
||||
}
|
||||
|
||||
return NS_ITER_INVALID;
|
||||
}
|
||||
|
||||
/* Obtain the NS ID from the given NS iterator. */
|
||||
ns_id_t
|
||||
ns_iter2id (ns_iter_t iter)
|
||||
{
|
||||
struct route_node *rn = (struct route_node *) iter;
|
||||
return (rn && rn->info) ? ((struct ns *)rn->info)->ns_id : NS_DEFAULT;
|
||||
}
|
||||
|
||||
/* Obtain the data pointer from the given NS iterator. */
|
||||
void *
|
||||
ns_iter2info (ns_iter_t iter)
|
||||
{
|
||||
struct route_node *rn = (struct route_node *) iter;
|
||||
return (rn && rn->info) ? ((struct ns *)rn->info)->info : NULL;
|
||||
}
|
||||
|
||||
/* Obtain the interface list from the given NS iterator. */
|
||||
struct list *
|
||||
ns_iter2iflist (ns_iter_t iter)
|
||||
{
|
||||
struct route_node *rn = (struct route_node *) iter;
|
||||
return (rn && rn->info) ? ((struct ns *)rn->info)->iflist : NULL;
|
||||
}
|
||||
|
||||
/* Get the data pointer of the specified NS. If not found, create one. */
|
||||
void *
|
||||
ns_info_get (ns_id_t ns_id)
|
||||
{
|
||||
struct ns *ns = ns_get (ns_id);
|
||||
return ns->info;
|
||||
}
|
||||
|
||||
/* Look up the data pointer of the specified NS. */
|
||||
void *
|
||||
ns_info_lookup (ns_id_t ns_id)
|
||||
{
|
||||
struct ns *ns = ns_lookup (ns_id);
|
||||
return ns ? ns->info : NULL;
|
||||
}
|
||||
|
||||
/* Look up the interface list in a NS. */
|
||||
struct list *
|
||||
ns_iflist (ns_id_t ns_id)
|
||||
{
|
||||
struct ns * ns = ns_lookup (ns_id);
|
||||
return ns ? ns->iflist : NULL;
|
||||
}
|
||||
|
||||
/* Get the interface list of the specified NS. Create one if not find. */
|
||||
struct list *
|
||||
ns_iflist_get (ns_id_t ns_id)
|
||||
{
|
||||
struct ns * ns = ns_get (ns_id);
|
||||
return ns->iflist;
|
||||
}
|
||||
|
||||
/*
|
||||
* NS bit-map
|
||||
*/
|
||||
|
||||
#define NS_BITMAP_NUM_OF_GROUPS 8
|
||||
#define NS_BITMAP_NUM_OF_BITS_IN_GROUP \
|
||||
(UINT16_MAX / NS_BITMAP_NUM_OF_GROUPS)
|
||||
#define NS_BITMAP_NUM_OF_BYTES_IN_GROUP \
|
||||
(NS_BITMAP_NUM_OF_BITS_IN_GROUP / CHAR_BIT + 1) /* +1 for ensure */
|
||||
|
||||
#define NS_BITMAP_GROUP(_id) \
|
||||
((_id) / NS_BITMAP_NUM_OF_BITS_IN_GROUP)
|
||||
#define NS_BITMAP_BIT_OFFSET(_id) \
|
||||
((_id) % NS_BITMAP_NUM_OF_BITS_IN_GROUP)
|
||||
|
||||
#define NS_BITMAP_INDEX_IN_GROUP(_bit_offset) \
|
||||
((_bit_offset) / CHAR_BIT)
|
||||
#define NS_BITMAP_FLAG(_bit_offset) \
|
||||
(((u_char)1) << ((_bit_offset) % CHAR_BIT))
|
||||
|
||||
struct ns_bitmap
|
||||
{
|
||||
u_char *groups[NS_BITMAP_NUM_OF_GROUPS];
|
||||
};
|
||||
|
||||
ns_bitmap_t
|
||||
ns_bitmap_init (void)
|
||||
{
|
||||
return (ns_bitmap_t) XCALLOC (MTYPE_NS_BITMAP, sizeof (struct ns_bitmap));
|
||||
}
|
||||
|
||||
void
|
||||
ns_bitmap_free (ns_bitmap_t bmap)
|
||||
{
|
||||
struct ns_bitmap *bm = (struct ns_bitmap *) bmap;
|
||||
int i;
|
||||
|
||||
if (bmap == NS_BITMAP_NULL)
|
||||
return;
|
||||
|
||||
for (i = 0; i < NS_BITMAP_NUM_OF_GROUPS; i++)
|
||||
if (bm->groups[i])
|
||||
XFREE (MTYPE_NS_BITMAP, bm->groups[i]);
|
||||
|
||||
XFREE (MTYPE_NS_BITMAP, bm);
|
||||
}
|
||||
|
||||
void
|
||||
ns_bitmap_set (ns_bitmap_t bmap, ns_id_t ns_id)
|
||||
{
|
||||
struct ns_bitmap *bm = (struct ns_bitmap *) bmap;
|
||||
u_char group = NS_BITMAP_GROUP (ns_id);
|
||||
u_char offset = NS_BITMAP_BIT_OFFSET (ns_id);
|
||||
|
||||
if (bmap == NS_BITMAP_NULL)
|
||||
return;
|
||||
|
||||
if (bm->groups[group] == NULL)
|
||||
bm->groups[group] = XCALLOC (MTYPE_NS_BITMAP,
|
||||
NS_BITMAP_NUM_OF_BYTES_IN_GROUP);
|
||||
|
||||
SET_FLAG (bm->groups[group][NS_BITMAP_INDEX_IN_GROUP (offset)],
|
||||
NS_BITMAP_FLAG (offset));
|
||||
}
|
||||
|
||||
void
|
||||
ns_bitmap_unset (ns_bitmap_t bmap, ns_id_t ns_id)
|
||||
{
|
||||
struct ns_bitmap *bm = (struct ns_bitmap *) bmap;
|
||||
u_char group = NS_BITMAP_GROUP (ns_id);
|
||||
u_char offset = NS_BITMAP_BIT_OFFSET (ns_id);
|
||||
|
||||
if (bmap == NS_BITMAP_NULL || bm->groups[group] == NULL)
|
||||
return;
|
||||
|
||||
UNSET_FLAG (bm->groups[group][NS_BITMAP_INDEX_IN_GROUP (offset)],
|
||||
NS_BITMAP_FLAG (offset));
|
||||
}
|
||||
|
||||
int
|
||||
ns_bitmap_check (ns_bitmap_t bmap, ns_id_t ns_id)
|
||||
{
|
||||
struct ns_bitmap *bm = (struct ns_bitmap *) bmap;
|
||||
u_char group = NS_BITMAP_GROUP (ns_id);
|
||||
u_char offset = NS_BITMAP_BIT_OFFSET (ns_id);
|
||||
|
||||
if (bmap == NS_BITMAP_NULL || bm->groups[group] == NULL)
|
||||
return 0;
|
||||
|
||||
return CHECK_FLAG (bm->groups[group][NS_BITMAP_INDEX_IN_GROUP (offset)],
|
||||
NS_BITMAP_FLAG (offset)) ? 1 : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* NS realization with NETNS
|
||||
*/
|
||||
|
74
lib/ns.h
74
lib/ns.h
@ -30,15 +30,8 @@ typedef u_int16_t ns_id_t;
|
||||
/* The default NS ID */
|
||||
#define NS_DEFAULT 0
|
||||
|
||||
/*
|
||||
* The command strings
|
||||
*/
|
||||
/* Default netns directory (Linux) */
|
||||
#define NS_RUN_DIR "/var/run/netns"
|
||||
#define NS_CMD_STR "logical-router <0-65535>"
|
||||
#define NS_CMD_HELP_STR "Specify the Logical-Router\nThe Logical-Router ID\n"
|
||||
|
||||
#define NS_ALL_CMD_STR "logical-router all"
|
||||
#define NS_ALL_CMD_HELP_STR "Specify the logical-router\nAll logical-router's\n"
|
||||
|
||||
/*
|
||||
* NS hooks
|
||||
@ -59,71 +52,6 @@ typedef u_int16_t ns_id_t;
|
||||
*/
|
||||
extern void ns_add_hook (int, int (*)(ns_id_t, void **));
|
||||
|
||||
/*
|
||||
* NS iteration
|
||||
*/
|
||||
|
||||
typedef void * ns_iter_t;
|
||||
#define NS_ITER_INVALID NULL /* invalid value of the iterator */
|
||||
|
||||
/*
|
||||
* NS iteration utilities. Example for the usage:
|
||||
*
|
||||
* ns_iter_t iter = ns_first();
|
||||
* for (; iter != NS_ITER_INVALID; iter = ns_next (iter))
|
||||
*
|
||||
* or
|
||||
*
|
||||
* ns_iter_t iter = ns_iterator (<a given NS ID>);
|
||||
* for (; iter != NS_ITER_INVALID; iter = ns_next (iter))
|
||||
*/
|
||||
|
||||
/* Return the iterator of the first NS. */
|
||||
extern ns_iter_t ns_first (void);
|
||||
/* Return the next NS iterator to the given iterator. */
|
||||
extern ns_iter_t ns_next (ns_iter_t);
|
||||
/* Return the NS iterator of the given NS ID. If it does not exist,
|
||||
* the iterator of the next existing NS is returned. */
|
||||
extern ns_iter_t ns_iterator (ns_id_t);
|
||||
|
||||
/*
|
||||
* NS iterator to properties
|
||||
*/
|
||||
extern ns_id_t ns_iter2id (ns_iter_t);
|
||||
extern void *ns_iter2info (ns_iter_t);
|
||||
extern struct list *ns_iter2iflist (ns_iter_t);
|
||||
|
||||
/*
|
||||
* Utilities to obtain the user data
|
||||
*/
|
||||
|
||||
/* Get the data pointer of the specified NS. If not found, create one. */
|
||||
extern void *ns_info_get (ns_id_t);
|
||||
/* Look up the data pointer of the specified NS. */
|
||||
extern void *ns_info_lookup (ns_id_t);
|
||||
|
||||
/*
|
||||
* Utilities to obtain the interface list
|
||||
*/
|
||||
|
||||
/* Look up the interface list of the specified NS. */
|
||||
extern struct list *ns_iflist (ns_id_t);
|
||||
/* Get the interface list of the specified NS. Create one if not find. */
|
||||
extern struct list *ns_iflist_get (ns_id_t);
|
||||
|
||||
/*
|
||||
* NS bit-map: maintaining flags, one bit per NS ID
|
||||
*/
|
||||
|
||||
typedef void * ns_bitmap_t;
|
||||
#define NS_BITMAP_NULL NULL
|
||||
|
||||
extern ns_bitmap_t ns_bitmap_init (void);
|
||||
extern void ns_bitmap_free (ns_bitmap_t);
|
||||
extern void ns_bitmap_set (ns_bitmap_t, ns_id_t);
|
||||
extern void ns_bitmap_unset (ns_bitmap_t, ns_id_t);
|
||||
extern int ns_bitmap_check (ns_bitmap_t, ns_id_t);
|
||||
|
||||
/*
|
||||
* NS initializer/destructor
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user