ndn-lite
name-splay.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 Xinyu Ma
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v3.0. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #ifndef FORWARDER_NAME_SPLAY_H
10 #define FORWARDER_NAME_SPLAY_H
11 
12 #include "../ndn-constants.h"
13 #include <stdint.h>
14 #include <stddef.h>
15 
16 // TODO: Rename; use compilation flags
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
25 
27 };
28 
29 
30 typedef struct nametree_entry{
32  struct nametree_entry* sub;
33  struct nametree_entry* cop[2];
37 
38 typedef struct ndn_nametree{
42 
43 #define NDN_NAMETREE_RESERVE_SIZE(entry_count) \
44  (sizeof(nametree_entry_t) * (entry_count) + sizeof(ndn_nametree_t))
45 
46 void
47 ndn_nametree_init(void* memory, ndn_table_id_t capacity);
48 
50 ndn_nametree_find_or_insert(ndn_nametree_t *self, uint8_t name[], size_t len);
51 
53 ndn_nametree_find(ndn_nametree_t *self, uint8_t name[], size_t len);
54 
57  ndn_nametree_t *self,
58  uint8_t name[],
59  size_t len,
60  enum NDN_NAMETREE_ENTRY_TYPE entry_type);
61 
64 
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 
72 #endif
nametree_entry_t * root
Definition: name-splay.h:39
void ndn_nametree_init(void *memory, ndn_table_id_t capacity)
Definition: name-splay.c:30
Definition: name-splay.h:24
ndn_table_id_t fib_id
Corresponding FIB entry's id.
Definition: name-splay.h:35
NDN_NAMETREE_ENTRY_TYPE
Definition: name-splay.h:22
nametree_entry_t pool[]
Definition: name-splay.h:40
nametree_entry_t * ndn_nametree_prefix_match(ndn_nametree_t *self, uint8_t name[], size_t len, enum NDN_NAMETREE_ENTRY_TYPE entry_type)
Definition: name-splay.c:206
ndn_table_id_t pit_id
Child or parent.
Definition: name-splay.h:34
struct ndn_nametree ndn_nametree_t
nametree_entry_t * nil
Definition: name-splay.h:39
#define NDN_NAME_COMPONENT_BLOCK_SIZE
Definition: ndn-constants.h:16
nametree_entry_t * ndn_nametree_find_or_insert(ndn_nametree_t *self, uint8_t name[], size_t len)
Definition: name-splay.c:160
struct nametree_entry nametree_entry_t
ndn_table_id_t ndn_nametree_getid(ndn_nametree_t *self, nametree_entry_t *entry)
Definition: name-splay.c:256
Definition: name-splay.h:38
Definition: name-splay.h:23
struct nametree_entry * sub
Definition: name-splay.h:32
uint16_t ndn_table_id_t
Definition: ndn-constants.h:39
uint8_t val[NDN_NAME_COMPONENT_BLOCK_SIZE]
Name component of this node.
Definition: name-splay.h:31
Definition: name-splay.h:26
NameTree node.
Definition: name-splay.h:30
nametree_entry_t * ndn_nametree_at(ndn_nametree_t *self, ndn_table_id_t id)
Definition: name-splay.c:251
nametree_entry_t * ndn_nametree_find(ndn_nametree_t *self, uint8_t name[], size_t len)
Definition: name-splay.c:182
struct nametree_entry * cop[2]
Subtree.
Definition: name-splay.h:33