aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/fib/fib_node.c
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2016-12-19 23:05:39 +0100
committerDamjan Marion <damarion@cisco.com>2016-12-28 12:25:14 +0100
commit7cd468a3d7dee7d6c92f69a0bb7061ae208ec727 (patch)
tree5de62f8dbd3a752f5a676ca600e43d2652d1ff1a /vnet/vnet/fib/fib_node.c
parent696f1adec0df3b8f161862566dd9c86174302658 (diff)
Reorganize source tree to use single autotools instance
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23 Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'vnet/vnet/fib/fib_node.c')
-rw-r--r--vnet/vnet/fib/fib_node.c277
1 files changed, 0 insertions, 277 deletions
diff --git a/vnet/vnet/fib/fib_node.c b/vnet/vnet/fib/fib_node.c
deleted file mode 100644
index db3e22bb3b8..00000000000
--- a/vnet/vnet/fib/fib_node.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <vnet/fib/fib_node.h>
-#include <vnet/fib/fib_node_list.h>
-
-/*
- * The per-type vector of virtual function tables
- */
-static fib_node_vft_t *fn_vfts;
-
-/**
- * The last registered new type
- */
-static fib_node_type_t last_new_type = FIB_NODE_TYPE_LAST;
-
-/*
- * the node type names
- */
-static const char *fn_type_names[] = FIB_NODE_TYPES;
-
-const char*
-fib_node_type_get_name (fib_node_type_t type)
-{
- if (type < FIB_NODE_TYPE_LAST)
- return (fn_type_names[type]);
- else
- {
- if (NULL != fn_vfts[type].fnv_format)
- {
- return ("fixme");
- }
- else
- {
- return ("unknown");
- }
- }
-}
-
-/**
- * fib_node_register_type
- *
- * Register the function table for a given type
- */
-void
-fib_node_register_type (fib_node_type_t type,
- const fib_node_vft_t *vft)
-{
- /*
- * assert that one only registration is made per-node type
- */
- if (vec_len(fn_vfts) > type)
- ASSERT(NULL == fn_vfts[type].fnv_get);
-
- /*
- * Assert that we are getting each of the required functions
- */
- ASSERT(NULL != vft->fnv_get);
- ASSERT(NULL != vft->fnv_last_lock);
-
- vec_validate(fn_vfts, type);
- fn_vfts[type] = *vft;
-}
-
-fib_node_type_t
-fib_node_register_new_type (const fib_node_vft_t *vft)
-{
- fib_node_type_t new_type;
-
- new_type = ++last_new_type;
-
- fib_node_register_type(new_type, vft);
-
- return (new_type);
-}
-
-static u8*
-fib_node_format (fib_node_ptr_t *fnp, u8*s)
-{
- return (format(s, "{%s:%d}", fn_type_names[fnp->fnp_type], fnp->fnp_index));
-}
-
-u32
-fib_node_child_add (fib_node_type_t parent_type,
- fib_node_index_t parent_index,
- fib_node_type_t type,
- fib_node_index_t index)
-{
- fib_node_t *parent;
-
- parent = fn_vfts[parent_type].fnv_get(parent_index);
-
- /*
- * return the index of the sibling in the child list
- */
- fib_node_lock(parent);
-
- if (FIB_NODE_INDEX_INVALID == parent->fn_children)
- {
- parent->fn_children = fib_node_list_create();
- }
-
- return (fib_node_list_push_front(parent->fn_children,
- 0, type,
- index));
-}
-
-void
-fib_node_child_remove (fib_node_type_t parent_type,
- fib_node_index_t parent_index,
- fib_node_index_t sibling_index)
-{
- fib_node_t *parent;
-
- parent = fn_vfts[parent_type].fnv_get(parent_index);
-
- fib_node_list_remove(parent->fn_children, sibling_index);
-
- if (0 == fib_node_list_get_size(parent->fn_children))
- {
- fib_node_list_destroy(&parent->fn_children);
- }
-
- fib_node_unlock(parent);
-}
-
-u32
-fib_node_get_n_children (fib_node_type_t parent_type,
- fib_node_index_t parent_index)
-{
- fib_node_t *parent;
-
- parent = fn_vfts[parent_type].fnv_get(parent_index);
-
- return (fib_node_list_get_size(parent->fn_children));
-}
-
-
-fib_node_back_walk_rc_t
-fib_node_back_walk_one (fib_node_ptr_t *ptr,
- fib_node_back_walk_ctx_t *ctx)
-{
- fib_node_t *node;
-
- node = fn_vfts[ptr->fnp_type].fnv_get(ptr->fnp_index);
-
- return (fn_vfts[ptr->fnp_type].fnv_back_walk(node, ctx));
-}
-
-static int
-fib_node_ptr_format_one_child (fib_node_ptr_t *ptr,
- void *arg)
-{
- u8 **s = (u8**) arg;
-
- *s = fib_node_format(ptr, *s);
-
- return (1);
-}
-
-u8*
-fib_node_children_format (fib_node_list_t list,
- u8 *s)
-{
- fib_node_list_walk(list, fib_node_ptr_format_one_child, (void*)&s);
-
- return (s);
-}
-
-void
-fib_node_init (fib_node_t *node,
- fib_node_type_t type)
-{
-#if CLIB_DEBUG > 0
- /**
- * The node's type. make sure we are dynamic/down casting correctly
- */
- node->fn_type = type;
-#endif
- node->fn_locks = 0;
- node->fn_vft = &fn_vfts[type];
- node->fn_children = FIB_NODE_INDEX_INVALID;
-}
-
-void
-fib_node_deinit (fib_node_t *node)
-{
- fib_node_list_destroy(&node->fn_children);
-}
-
-void
-fib_node_lock (fib_node_t *node)
-{
- node->fn_locks++;
-}
-
-void
-fib_node_unlock (fib_node_t *node)
-{
- node->fn_locks--;
-
- if (0 == node->fn_locks)
- {
- node->fn_vft->fnv_last_lock(node);
- }
-}
-
-void
-fib_show_memory_usage (const char *name,
- u32 in_use_elts,
- u32 allocd_elts,
- size_t size_elt)
-{
- vlib_cli_output (vlib_get_main(), "%=30s %=5d %=8d/%=9d %d/%d ",
- name, size_elt,
- in_use_elts, allocd_elts,
- in_use_elts*size_elt, allocd_elts*size_elt);
-}
-
-static clib_error_t *
-fib_memory_show (vlib_main_t * vm,
- unformat_input_t * input,
- vlib_cli_command_t * cmd)
-{
- fib_node_vft_t *vft;
-
- vlib_cli_output (vm, "FIB memory");
- vlib_cli_output (vm, "%=30s %=5s %=8s/%=9s totals",
- "Name","Size", "in-use", "allocated");
-
- vec_foreach(vft, fn_vfts)
- {
- if (NULL != vft->fnv_mem_show)
- vft->fnv_mem_show();
- }
-
- fib_node_list_memory_show();
-
- return (NULL);
-}
-
-/* *INDENT-OFF* */
-/*?
- * The '<em>sh fib memory </em>' command displays the memory usage for each
- * FIB object type.
- *
- * @cliexpar
- * @cliexstart{show fib memory}
- * FIB memory
- * Name Size in-use /allocated totals
- * Entry 120 11 / 11 1320/1320
- * Entry Source 32 11 / 11 352/352
- * Entry Path-Extensions 44 0 / 0 0/0
- * Path-list 40 11 / 11 440/440
- * Path 88 11 / 11 968/968
- * Node-list elements 20 11 / 11 220/220
- * Node-list heads 8 13 / 13 104/104
- * @cliexend
-?*/
-VLIB_CLI_COMMAND (show_fib_memory, static) = {
- .path = "show fib memory",
- .function = fib_memory_show,
- .short_help = "show fib memory",
-};
-/* *INDENT-ON* */