21int fn_NetSim_DSR_UpdateRouteCache(
unsigned int length,
22 NETSIM_IPAddress* address,
25 NETSIM_ID nDeviceId = pstruEventDetails->nDeviceId;
26 DSR_DEVICE_VAR* devVar = DSR_DEV_VAR(nDeviceId);
27 DSR_ROUTE_CACHE* cache = ROUTECACHE_ALLOC();
28 unsigned int count = 0;
31 if(!IP_COMPARE(address[count],dsr_get_curr_ip()))
36 cache->nLength = count;
38 cache->address = calloc(count,
sizeof* cache->address);
41 cache->address[count] = IP_COPY(address[--length]);
50DSR_ROUTE_CACHE* fn_NetSim_DSR_FindCache(DSR_DEVICE_VAR* devVar,NETSIM_IPAddress address,
double dTime)
58 DSR_ROUTE_CACHE* temp = cache;
59 cache = (DSR_ROUTE_CACHE*)LIST_NEXT(cache);
63 for(nLoop=0;nLoop<cache->nLength;nLoop++)
65 if(!IP_COMPARE(cache->address[nLoop],address))
71 cache = LIST_NEXT(cache);
78bool fn_NetSim_DSR_ValidateRouteCache(DSR_ROUTE_CACHE* cache,NETSIM_IPAddress* addList,
int count)
82 for(loop=0;loop<cache->nLength;loop++)
84 for(loop2=0;loop2<count;loop2++)
86 if(!IP_COMPARE(cache->address[loop],addList[loop2]))
95int fn_NetSim_DSR_DeleteEntryFromRouteCache(DSR_ROUTE_CACHE** ppcache,
99 DSR_ROUTE_CACHE* cache = *ppcache;
104 for(loop=0;loop<cache->nLength-1;loop++)
106 if(!IP_COMPARE(ip1,cache->address[loop]) &&
107 !IP_COMPARE(ip2,cache->address[loop+1]))
112 for(loop2=0;loop2<cache->nLength;loop2++)
113 IP_FREE(cache->address[loop2]);
114 free(cache->address);
115 LIST_FREE((
void**)ppcache,cache);
123 cache = (DSR_ROUTE_CACHE*)LIST_NEXT(cache);
struct stru_DSR_RouteCache * pstruRouteCache
List of routes to particular destination.