aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/processor
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/processor')
-rw-r--r--hicn-light/src/hicn/processor/fibEntry.c11
-rw-r--r--hicn-light/src/hicn/processor/fibEntry.h4
2 files changed, 9 insertions, 6 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;
}
diff --git a/hicn-light/src/hicn/processor/fibEntry.h b/hicn-light/src/hicn/processor/fibEntry.h
index 3f78f47dd..cf267d6a6 100644
--- a/hicn-light/src/hicn/processor/fibEntry.h
+++ b/hicn-light/src/hicn/processor/fibEntry.h
@@ -158,8 +158,8 @@ void *fibEntry_getUserData(const FibEntry *fibEntry);
* @param [in@ userDataRelease - Callback used to release user data upon change
* of FIB entry removal.
*/
-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 **));
#endif /* WITH_MAPME */