ndn-embeds 0.1.0
Lightweight NDN protocol stack for embedded systems
Loading...
Searching...
No Matches
fib.hpp
Go to the documentation of this file.
1
12#pragma once
13
14#include "ndn/common.hpp"
15#include "ndn/name.hpp"
16
17namespace ndn {
18
20constexpr size_t FIB_MAX_ENTRIES = 30;
21
23constexpr size_t FIB_MAX_NEXTHOPS = 3;
24
30struct FibNexthop {
32 uint8_t cost = 0;
33};
34
41class FibEntry {
42public:
47 const Name& prefix() const { return prefix_; }
48
57 size_t nexthopCount() const { return numNexthops_; }
58
64 const FibNexthop& nexthop(size_t index) const;
65
75 bool addNexthop(FaceId faceId, uint8_t cost = 0);
76
82 bool removeNexthop(FaceId faceId);
85private:
86 friend class Fib;
87 Name prefix_;
88 std::array<FibNexthop, FIB_MAX_NEXTHOPS> nexthops_{};
89 uint8_t numNexthops_ = 0;
90 bool inUse_ = false;
91};
92
119class Fib {
120public:
136 Error addRoute(const Name& prefix, FaceId faceId, uint8_t cost = 0);
137
143 void removeRoute(const Name& prefix, FaceId faceId);
144
149 void removeRoute(const Name& prefix);
150
158 void removeFace(FaceId faceId);
174 const FibEntry* findLongestMatch(const Name& name) const;
175
181 const FibEntry* findExact(const Name& prefix) const;
182
188 FibEntry* findExact(const Name& prefix);
199 size_t size() const { return size_; }
200
205 size_t capacity() const { return FIB_MAX_ENTRIES; }
208private:
209 std::array<FibEntry, FIB_MAX_ENTRIES> entries_{};
210 size_t size_ = 0;
211};
212
213} // namespace ndn
FIB entry.
Definition fib.hpp:41
const FibNexthop & nexthop(size_t index) const
Get the next-hop at a given index.
Definition fib.cpp:13
size_t nexthopCount() const
Get the number of next-hops.
Definition fib.hpp:57
bool removeNexthop(FaceId faceId)
Remove a next-hop.
Definition fib.cpp:40
bool addNexthop(FaceId faceId, uint8_t cost=0)
Add a next-hop.
Definition fib.cpp:20
const Name & prefix() const
Get the Name prefix.
Definition fib.hpp:47
Forwarding Information Base.
Definition fib.hpp:119
const FibEntry * findLongestMatch(const Name &name) const
Look up using Longest Prefix Match.
Definition fib.cpp:117
void removeRoute(const Name &prefix, FaceId faceId)
Remove a specific next-hop.
Definition fib.cpp:81
size_t size() const
Get the current number of entries.
Definition fib.hpp:199
const FibEntry * findExact(const Name &prefix) const
Look up using exact match.
Definition fib.cpp:134
void removeFace(FaceId faceId)
Remove a specified Face from all entries.
Definition fib.cpp:105
Error addRoute(const Name &prefix, FaceId faceId, uint8_t cost=0)
Add a route.
Definition fib.cpp:56
size_t capacity() const
Get the maximum number of entries.
Definition fib.hpp:205
NDN Name class.
Definition name.hpp:64
Common definitions for the NDN protocol stack.
constexpr FaceId FACE_ID_INVALID
Invalid Face ID.
Definition common.hpp:99
uint16_t FaceId
Face identifier.
Definition common.hpp:96
Error
Error codes.
Definition common.hpp:24
constexpr size_t FIB_MAX_NEXTHOPS
Maximum number of next-hops per FIB entry.
Definition fib.hpp:23
constexpr size_t FIB_MAX_ENTRIES
Maximum number of FIB entries.
Definition fib.hpp:20
NDN Name class.
FIB Nexthop.
Definition fib.hpp:30
FaceId faceId
Next-hop Face ID.
Definition fib.hpp:31
uint8_t cost
Cost (lower is preferred)
Definition fib.hpp:32