void sr_init(struct sr_instance* sr) { /* REQUIRES */ assert(sr); /* Initialize cache and cache cleanup thread */ sr_arpcache_init(&(sr->cache)); pthread_attr_init(&(sr->attr)); pthread_attr_setdetachstate(&(sr->attr), PTHREAD_CREATE_JOINABLE); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_t thread; pthread_create(&thread, &(sr->attr), sr_arpcache_timeout, sr); /* Add initialization code here! */ /*adding interfaces in the routing table to sr instance. */ /* struct sr_rt* rt_walker = sr->routing_table; while (rt_walker) { sr_add_interface(sr,rt_walker->interface); rt_walker = rt_walker->next; }*/ /*everything else in sr_instance struct is initialized in main.c */ } /* -- sr_init -- */
/*--------------------------------------------------------------------- * Method: sr_init(void) * Scope: Global * * Initialize the routing subsystem * *---------------------------------------------------------------------*/ void sr_init(struct sr_instance* sr){ // REQUIRES assert(sr); // Initialize cache and cache cleanup thread sr_arpcache_init(&(sr->cache)); pthread_attr_init(&(sr->attr)); pthread_attr_setdetachstate(&(sr->attr), PTHREAD_CREATE_JOINABLE); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_t thread; pthread_create(&thread, &(sr->attr), sr_arpcache_timeout, sr); }
void sr_init(struct sr_instance* sr) { /* REQUIRES */ assert(sr); /* Add initialization code here! */ /* Initialize ARP cache and start its time out deamon thread. */ pthread_t arp_thread; sr_arpcache_init(&(sr->arpcache)); pthread_attr_init(&(sr->attr)); pthread_attr_setdetachstate(&(sr->attr), PTHREAD_CREATE_JOINABLE); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_create(&arp_thread, &(sr->attr), sr_arpcache_timeout_handler, sr); } /* -- sr_init -- */
void sr_init(struct sr_instance* sr) { /* REQUIRES */ assert(sr); /* Initialize cache and cache cleanup thread */ sr_arpcache_init(&(sr->cache)); pthread_attr_init(&(sr->attr)); pthread_attr_setdetachstate(&(sr->attr), PTHREAD_CREATE_JOINABLE); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_t thread; pthread_create(&thread, &(sr->attr), sr_arpcache_timeout, sr); /* Add initialization code here! */ } /* -- sr_init -- */
void sr_init(struct sr_instance* sr) { /* REQUIRES */ assert(sr); /* Initialize cache and cache cleanup thread */ sr_arpcache_init(&(sr->cache)); pthread_attr_init(&(sr->attr)); pthread_attr_setdetachstate(&(sr->attr), PTHREAD_CREATE_JOINABLE); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_t thread; pthread_create(&thread, &(sr->attr), sr_arpcache_timeout, sr); /* Add initialization code here! */ printf("TESTING: HOST_UNREACHABLE TYPE: %d CODE: %d\n", ICMP_HOST_UNREACHABLE.type, ICMP_HOST_UNREACHABLE.code); } /* -- sr_init -- */
void sr_init(struct sr_instance* sr) { /* REQUIRES */ assert(sr); /* Initialize cache and cache cleanup thread */ sr_arpcache_init(&(sr->cache)); /* If we're using a NAT, then initialize it */ if (sr->use_nat) { sr_nat_init(&(sr->nat)); sr->nat.sr = sr; } pthread_attr_init(&(sr->attr)); pthread_attr_setdetachstate(&(sr->attr), PTHREAD_CREATE_JOINABLE); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_attr_setscope(&(sr->attr), PTHREAD_SCOPE_SYSTEM); pthread_t thread; pthread_create(&thread, &(sr->attr), sr_arpcache_timeout, sr); } /* -- sr_init -- */