40 #include <hicn/core/name.h>
44 #include <hicn/core/connectionTable.h>
48 #include <parc/algol/parc_EventTimer.h>
49 #include <parc/algol/parc_Iterator.h>
53 typedef struct fib_entry FibEntry;
57 FibEntry *fibEntry_Create(Name *name, strategy_type fwdStrategy,
const struct forwarder * table);
59 FibEntry *fibEntry_Create(Name *name, strategy_type fwdStrategy);
82 void fibEntry_SetStrategy(FibEntry *fibEntry, strategy_type strategy,
83 unsigned related_prefixes_len,
84 Name **related_prefixes);
86 void fibEntry_AddNexthop(FibEntry *fibEntry,
unsigned connectionId);
88 void fibEntry_RemoveNexthopByConnectionId(FibEntry *fibEntry,
89 unsigned connectionId);
91 size_t fibEntry_NexthopCount(
const FibEntry *fibEntry);
103 void fibEntry_ReceiveObjectMessage(FibEntry *fibEntry,
105 void fibEntry_ReceiveObjectMessage(
const FibEntry *fibEntry,
107 const NumberSet *egressId,
108 const Message *objectMessage,
109 Ticks pitEntryCreation,
114 void fibEntry_ReconsiderPolicy(FibEntry *fibEntry);
115 void fibEntry_SetPolicy(FibEntry *fibEntry,
hicn_policy_t policy);
116 void fibEntry_UpdateStats(FibEntry *fibEntry, uint64_t now);
117 NumberSet * fibEntry_GetAvailableNextHops(
const FibEntry *fibEntry,
unsigned in_connection);
118 NumberSet * fibEntry_GetPreviousNextHops(
const FibEntry *fibEntry);
119 void fibEntry_SetPreviousNextHops(FibEntry *fibEntry,
const NumberSet * nexthops);
121 void fibEntry_OnTimeout(FibEntry *fibEntry,
const NumberSet *egressId);
122 const NumberSet *fibEntry_GetNexthopsFromForwardingStrategy(
123 FibEntry *fibEntry,
const Message *interestMessage,
bool is_retransmission);
126 void fibEntry_OnTimeout(
const FibEntry *fibEntry,
const NumberSet *egressId);
127 const NumberSet *fibEntry_GetNexthopsFromForwardingStrategy(
128 const FibEntry *fibEntry,
const Message *interestMessage);
132 strategy_type fibEntry_GetFwdStrategyType(
const FibEntry *fibEntry);
134 StrategyImpl *fibEntry_GetFwdStrategy(
const FibEntry *fibEntry);
151 void *fibEntry_getUserData(
const FibEntry *fibEntry);
161 void fibEntry_setUserData(FibEntry *fibEntry,
const void *userDataOwner,
162 const void *userData,
void (*userDataRelease)(
const void *,
void **));