NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
nexthop-filter.h
Go to the documentation of this file.
1#ifndef NDNDPDK_FIB_NEXTHOP_FILTER_H
2#define NDNDPDK_FIB_NEXTHOP_FILTER_H
3
5
6#include "entry.h"
7
13typedef uint32_t FibNexthopFilter;
14
15static_assert(CHAR_BIT * sizeof(FibNexthopFilter) >= FibMaxNexthops, "");
16
22__attribute__((nonnull)) static inline int
23FibNexthopFilter_Reject(FibNexthopFilter* filter, const FibEntry* entry, FaceID nh) {
24 for (uint8_t i = 0; i < entry->nNexthops; ++i) {
25 if (entry->nexthops[i] == nh) {
26 rte_bit_set(filter, i);
27 break;
28 }
29 }
30 static_assert(__builtin_types_compatible_p(typeof(*filter), uint32_t), "");
31 return entry->nNexthops - rte_popcount32(*filter);
32}
33
34#endif // NDNDPDK_FIB_NEXTHOP_FILTER_H
uint16_t FaceID
Numeric face identifier.
Definition faceid.h:13
@ FibMaxNexthops
Definition enum.h:8
uint32_t FibNexthopFilter
A filter over FIB nexthops.
Definition nexthop-filter.h:13
A FIB entry.
Definition entry.h:27
uint8_t nNexthops
number of nexthops
Definition entry.h:50
FaceID nexthops[FibMaxNexthops]
Definition entry.h:61