diff options
Diffstat (limited to 'hicn-light/src/hicn/processor')
-rw-r--r-- | hicn-light/src/hicn/processor/fibEntry.c | 11 | ||||
-rw-r--r-- | hicn-light/src/hicn/processor/fibEntry.h | 4 |
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 */ |