ndn-lite
fib.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018-2019 Zhiyi Zhang, 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_FIB_H_
10 #define FORWARDER_FIB_H_
11 
12 #include "../util/bit-operations.h"
13 #include "callback-funcs.h"
14 #include "name-tree.h"
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
29 typedef struct ndn_fib_entry {
33 
37 
40  void* userdata;
41 
47 
51 typedef struct ndn_fib {
55 } ndn_fib_t;
56 
57 #define NDN_FIB_RESERVE_SIZE(entry_count) \
58  (sizeof(ndn_fib_t) + sizeof(ndn_fib_entry_t) * (entry_count))
59 
60 void
61 ndn_fib_init(void* memory, ndn_table_id_t capacity, ndn_nametree_t* nametree);
62 
63 void
65 
67 ndn_fib_find_or_insert(ndn_fib_t* self, uint8_t* prefix, size_t length);
68 
70 ndn_fib_find(ndn_fib_t* self, uint8_t* prefix, size_t length);
71 
72 void
74 
76 ndn_fib_prefix_match(ndn_fib_t* self, uint8_t* prefix, size_t length);
77 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #endif // FORWARDER_FIB_H
ndn_on_interest_func on_interest
OnOnterest callback function if registered.
Definition: fib.h:36
ndn_fib_entry_t * ndn_fib_find(ndn_fib_t *self, uint8_t *prefix, size_t length)
Definition: fib.c:90
void ndn_fib_init(void *memory, ndn_table_id_t capacity, ndn_nametree_t *nametree)
Definition: fib.c:21
void * userdata
User defined data.
Definition: fib.h:40
ndn_bitset_t nexthop
A bitset recording all next hops.
Definition: fib.h:32
ndn_fib_entry_t slots[]
Definition: fib.h:54
ndn_fib_entry_t * ndn_fib_find_or_insert(ndn_fib_t *self, uint8_t *prefix, size_t length)
Definition: fib.c:74
struct ndn_fib ndn_fib_t
Forwarding Information Base (FIB).
Forwarding Information Base (FIB).
Definition: fib.h:51
void ndn_fib_unregister_face(ndn_fib_t *self, ndn_table_id_t face_id)
Definition: fib.c:51
ndn_fib_entry_t * ndn_fib_prefix_match(ndn_fib_t *self, uint8_t *prefix, size_t length)
Definition: fib.c:100
struct ndn_fib_entry ndn_fib_entry_t
FIB entry.
Definition: name-splay.h:38
void ndn_fib_remove_entry_if_empty(ndn_fib_t *self, ndn_fib_entry_t *entry)
Definition: fib.c:40
ndn_table_id_t capacity
Definition: fib.h:53
ndn_table_id_t nametree_id
NameTree entry's ID.
Definition: fib.h:45
uint64_t ndn_bitset_t
Definition: bit-operations.h:14
uint16_t ndn_table_id_t
Definition: ndn-constants.h:39
int(* ndn_on_interest_func)(const uint8_t *interest, uint32_t interest_size, void *userdata)
The onInterest callback function.
Definition: callback-funcs.h:24
FIB entry.
Definition: fib.h:29
ndn_nametree_t * nametree
Definition: fib.h:52