aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/processor/fibEntry.c
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/processor/fibEntry.c')
-rw-r--r--hicn-light/src/hicn/processor/fibEntry.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/hicn-light/src/hicn/processor/fibEntry.c b/hicn-light/src/hicn/processor/fibEntry.c
index 7412b4ccf..30bcc1f9a 100644
--- a/hicn-light/src/hicn/processor/fibEntry.c
+++ b/hicn-light/src/hicn/processor/fibEntry.c
@@ -64,8 +64,9 @@ struct fib_entry {
#endif /* WITH_POLICY */
#ifdef WITH_MAPME
NumberSet * previous_nexthops;
+ const void *userDataOwner;
void *userData;
- void (*userDataRelease)(void **userData);
+ void (*userDataRelease)(const void *owner, void **userData);
#endif /* WITH_MAPME */
};
@@ -101,6 +102,7 @@ FibEntry *fibEntry_Create(Name *name, strategy_type fwdStrategy) {
fibEntry->refcount = 1;
#ifdef WITH_MAPME
+ fibEntry->userDataOwner = NULL;
fibEntry->userData = NULL;
fibEntry->userDataRelease = NULL;
#endif /* WITH_MAPME */
@@ -136,7 +138,7 @@ void fibEntry_Release(FibEntry **fibEntryPtr) {
fibEntry->fwdStrategy->destroy(&(fibEntry->fwdStrategy));
#ifdef WITH_MAPME
if (fibEntry->userData) {
- fibEntry->userDataRelease(&fibEntry->userData);
+ fibEntry->userDataRelease(fibEntry->userDataOwner, &fibEntry->userData);
}
#endif /* WITH_MAPME */
#ifdef WITH_POLICY
@@ -881,9 +883,10 @@ void *fibEntry_getUserData(const FibEntry *fibEntry) {
return fibEntry->userData;
}
-void fibEntry_setUserData(FibEntry *fibEntry, const void *userData,
- void (*userDataRelease)(void **)) {
+void fibEntry_setUserData(FibEntry *fibEntry, const void *userDataOwner, const
+ void *userData, void (*userDataRelease)(const void *, void **)) {
parcAssertNotNull(fibEntry, "Parameter fibEntry must be non-null");
+ fibEntry->userDataOwner = userDataOwner;
fibEntry->userData = (void *)userData;
fibEntry->userDataRelease = userDataRelease;
}