static void sr_load_rt_wrap(struct sr_instance* sr, char* rtable) { if(sr_load_rt(sr, rtable) != 0) { fprintf(stderr,"Error setting up routing table from file %s\n", rtable); exit(1); } printf("Loading routing table\n"); //printf("-----------------------------------------------------------------------\n"); sr_print_routing_table(sr); //printf("-----------------------------------------------------------------------\n"); }
void test_lpm(struct sr_instance *sr){ sr_print_routing_table(sr); test_match(sr, 107, 23, 53, 142, true, "eth1"); test_match(sr, 107, 23, 77, 72, true, "eth2"); test_match(sr, 192, 32, 11, 12, true, "eth3"); test_match(sr, 122, 12, 15, 16, true, "eth3"); test_match(sr, 112, 8, 0, 0, true, "eth3"); test_match(sr, 107, 23, 77, 71, true, "eth3"); test_match(sr, 0, 0, 0, 0, true, "eth3"); printf("-------------------All LPM tests passed----------------------\n"); }
int main(int argc, char **argv) { int c; char *host = DEFAULT_HOST; char *client = 0; char *server = DEFAULT_SERVER; char *rtable = DEFAULT_RTABLE; unsigned int port = DEFAULT_PORT; unsigned int topo = DEFAULT_TOPO; char *logfile = 0; struct sr_instance sr; while ((c = getopt(argc, argv, "hs:v:p:c:t:r:l:")) != EOF) { switch (c) { case 'h': usage(argv[0]); exit(0); break; case 'p': port = atoi((char *) optarg); break; case 't': topo = atoi((char *) optarg); break; case 'v': host = optarg; break; case 'c': client = optarg; break; case 's': server = optarg; break; case 'l': logfile = optarg; break; case 'r': rtable = optarg; break; } /* switch */ } /* -- while -- */ /* -- zero out sr instance -- */ sr_init_instance(&sr); /* -- set up routing table from file -- */ if(sr_load_rt(&sr, rtable) != 0) { fprintf(stderr,"Error setting up routing table from file %s\n", rtable); exit(1); } printf("Loading routing table\n"); printf("---------------------------------------------\n"); sr_print_routing_table(&sr); printf("---------------------------------------------\n"); sr.topo_id = topo; strncpy(sr.host,host,32); if(! client ) { sr_set_user(&sr); } else { strncpy(sr.user, client, 32); } /* -- set up file pointer for logging of raw packets -- */ if(logfile != 0) { sr.logfile = sr_dump_open(logfile,0,PACKET_DUMP_SIZE); if(!sr.logfile) { fprintf(stderr,"Error opening up dump file %s\n", logfile); exit(1); } } Debug("Client %s connecting to Server %s:%d\n", sr.user, server, port); Debug("Requesting topology %d\n", topo); /* connect to server and negotiate session */ if(sr_connect_to_server(&sr,port,server) == -1) { return 1; } /* call router init (for arp subsystem etc.) */ sr_init(&sr); /* -- whizbang main loop ;-) */ while( sr_read_from_server(&sr) == 1); sr_destroy_instance(&sr); return 0; }/* -- main -- */