void ccnl_simu_cleanup(void *dummy, void *dummy2) { printf("Simulation ended; press ENTER to terminate\n"); while (getchar() != '\n'); int i; for (i = 0; i < 5; i++) { struct ccnl_relay_s *relay = relays + i; if (relay->aux) { ccnl_free(relay->aux); relay->aux = NULL; } ccnl_core_cleanup(relay); } while(eventqueue) ccnl_rem_timer(eventqueue); while(etherqueue) { struct ccnl_ethernet_s *e = etherqueue->next; ccnl_free(etherqueue); etherqueue = e; } #ifdef USE_SCHEDULER ccnl_sched_cleanup(); #endif #ifdef USE_DEBUG_MALLOC debug_memdump(); #endif }
int main(int argc, char **argv) { int opt, max_cache_entries = -1, httpport = -1; int udpport1 = -1, udpport2 = -1; char *datadir = NULL, *ethdev = NULL, *crypto_sock_path = NULL; #ifdef USE_UNIXSOCKET char *uxpath = CCNL_DEFAULT_UNIXSOCKNAME; #else char *uxpath = NULL; #endif #ifdef USE_ECHO char *echopfx = NULL; #endif time(&theRelay.startup_time); srandom(time(NULL)); while ((opt = getopt(argc, argv, "hc:d:e:g:i:o:p:s:t:u:v:x:")) != -1) { switch (opt) { case 'c': max_cache_entries = atoi(optarg); break; case 'd': datadir = optarg; break; case 'e': ethdev = optarg; break; case 'g': inter_pkt_interval = atoi(optarg); break; case 'i': inter_ccn_interval = atoi(optarg); break; #ifdef USE_ECHO case 'o': echopfx = optarg; break; #endif case 'p': crypto_sock_path = optarg; break; case 's': suite = ccnl_str2suite(optarg); if (!ccnl_isSuite(suite)) goto usage; break; case 't': httpport = atoi(optarg); break; case 'u': if (udpport1 == -1) udpport1 = atoi(optarg); else udpport2 = atoi(optarg); break; case 'v': #ifdef USE_LOGGING if (isdigit(optarg[0])) debug_level = atoi(optarg); else debug_level = ccnl_debug_str2level(optarg); #endif break; case 'x': uxpath = optarg; break; case 'h': default: usage: fprintf(stderr, "usage: %s [options]\n" " -c MAX_CONTENT_ENTRIES\n" " -d databasedir\n" " -e ethdev\n" " -g MIN_INTER_PACKET_INTERVAL\n" " -h\n" " -i MIN_INTER_CCNMSG_INTERVAL\n" #ifdef USE_ECHO " -o echo_prefix\n" #endif " -p crypto_face_ux_socket\n" " -s SUITE (ccnb, ccnx2015, cisco2015, iot2014, ndn2013)\n" " -t tcpport (for HTML status page)\n" " -u udpport (can be specified twice)\n" #ifdef USE_LOGGING " -v DEBUG_LEVEL (fatal, error, warning, info, debug, verbose, trace)\n" #endif #ifdef USE_UNIXSOCKET " -x unixpath\n" #endif , argv[0]); exit(EXIT_FAILURE); } } opt = ccnl_suite2defaultPort(suite); if (udpport1 < 0) udpport1 = opt; if (httpport < 0) httpport = opt; ccnl_core_init(); DEBUGMSG(INFO, "This is ccn-lite-relay, starting at %s", ctime(&theRelay.startup_time) + 4); DEBUGMSG(INFO, " ccnl-core: %s\n", CCNL_VERSION); DEBUGMSG(INFO, " compile time: %s %s\n", __DATE__, __TIME__); DEBUGMSG(INFO, " compile options: %s\n", compile_string); DEBUGMSG(INFO, "Abhinav - Modified CCN lite"); // DEBUGMSG(INFO, "using suite %s\n", ccnl_suite2str(suite)); ccnl_relay_config(&theRelay, ethdev, udpport1, udpport2, httpport, uxpath, suite, max_cache_entries, crypto_sock_path); if (datadir) ccnl_populate_cache(&theRelay, datadir); #ifdef USE_ECHO if (echopfx) { struct ccnl_prefix_s *pfx; char *dup = ccnl_strdup(echopfx); pfx = ccnl_URItoPrefix(dup, suite, NULL, NULL); if (pfx) ccnl_echo_add(&theRelay, pfx); ccnl_free(dup); } #endif ccnl_io_loop(&theRelay); while (eventqueue) ccnl_rem_timer(eventqueue); ccnl_core_cleanup(&theRelay); #ifdef USE_HTTP_STATUS theRelay.http = ccnl_http_cleanup(theRelay.http); #endif #ifdef USE_DEBUG_MALLOC debug_memdump(); #endif return 0; }
int main(int argc, char **argv) { int opt; int max_cache_entries = -1; int udpport = CCN_UDP_PORT; int tcpport = CCN_UDP_PORT; char *datadir = NULL; char *ethdev = NULL; char *crypto_sock_path = 0; #ifdef USE_UNIXSOCKET char *uxpath = CCNL_DEFAULT_UNIXSOCKNAME; #else char *uxpath = NULL; #endif time(&theRelay.startup_time); srandom(time(NULL)); while ((opt = getopt(argc, argv, "hc:d:e:g:i:s:u:v:x:p:")) != -1) { switch (opt) { case 'c': max_cache_entries = atoi(optarg); break; case 'd': datadir = optarg; break; case 'e': ethdev = optarg; break; case 'g': inter_pkt_interval = atoi(optarg); break; case 'i': inter_ccn_interval = atoi(optarg); break; case 's': tcpport = atoi(optarg); break; case 'u': udpport = atoi(optarg); break; case 'v': debug_level = atoi(optarg); break; case 'x': uxpath = optarg; break; case 'p': crypto_sock_path = optarg; break; case 'h': default: fprintf(stderr, "usage: %s [-h] [-c MAX_CONTENT_ENTRIES]" " [-d databasedir]" " [-e ethdev]" " [-g MIN_INTER_PACKET_INTERVAL]" " [-i MIN_INTER_CCNMSG_INTERVAL]" " [-s tcpport]" " [-u udpport]" " [-v DEBUG_LEVEL]" #ifdef USE_UNIXSOCKET " [-p crypto_face_ux_socket]" " [-x unixpath]" #endif "\n", argv[0]); exit(EXIT_FAILURE); } } DEBUGMSG(1, "This is ccn-lite-relay, starting at %s", ctime(&theRelay.startup_time) + 4); DEBUGMSG(1, " ccnl-core: %s\n", CCNL_VERSION); DEBUGMSG(1, " compile time: %s %s\n", __DATE__, __TIME__); DEBUGMSG(1, " compile options: %s\n", compile_string()); ccnl_relay_config(&theRelay, ethdev, udpport, tcpport, uxpath, max_cache_entries, crypto_sock_path); if (datadir) ccnl_populate_cache(&theRelay, datadir); ccnl_io_loop(&theRelay); while (eventqueue) ccnl_rem_timer(eventqueue); ccnl_core_cleanup(&theRelay); #ifdef USE_HTTP_STATUS theRelay.http = ccnl_http_cleanup(theRelay.http); #endif #ifdef USE_DEBUG_MALLOC debug_memdump(); #endif return 0; }
JNIEXPORT void JNICALL Java_ch_unibas_ccn_1lite_1android_CcnLiteAndroid_relayDump(JNIEnv* env, jobject thiz) { debug_memdump(); }