void sr_vns_init_log(struct sr_instance* sr, char* logfile) { if (!logfile) { return; } sr->logfile = sr_dump_open(logfile, 0, SR_PACKET_DUMP_SIZE); if(!sr->logfile) { fprintf(stderr,"Error opening up dump file %s\n", logfile); exit(1); } } /* -- sr_init_log -- */
int main(int argc, char **argv) { int c; char *host = ((char*)(DEFAULT_HOST)); char *user = 0; char *server = ((char*)(DEFAULT_SERVER)); char *rtable = ((char*)(DEFAULT_RTABLE)); char *sr_template = NULL; unsigned int port = DEFAULT_PORT; unsigned int topo = DEFAULT_TOPO; char *logfile = 0; struct sr_instance sr; sr.f_interface[0] = 'n'; sr.f_interface[1] = 'o'; sr.f_interface[2] = '\0'; sr.number_of_lsus = 5; printf("Using %s\n", VERSION_INFO); while ((c = getopt(argc, argv, "hs:v:p:u:t:r:l:T:f:c:")) != 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 'u': user = optarg; break; case 's': server = optarg; break; case 'l': logfile = optarg; break; case 'r': rtable = optarg; break; case 'T': sr_template = optarg; break; case 'f': for (unsigned int i = 0; i < strlen(optarg); i++) { sr.f_interface[i] = optarg[i]; } sr.f_interface[strlen(optarg)] = '\0'; break; case 'c': sr.number_of_lsus = atoi((char *) optarg); break; } /* switch */ } /* -- while -- */ /* -- zero out sr instance -- */ sr_init_instance(&sr); /* -- set up routing table from file -- */ if(sr_template == NULL) { sr.sr_template[0] = '\0'; sr_load_rt_wrap(&sr, rtable); } else strncpy(sr.sr_template, sr_template, 30); sr.topo_id = topo; strncpy(sr.host,host,32); if(! user ) { sr_set_user(&sr); } else { strncpy(sr.user, user, 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); if(sr_template) Debug("Requesting topology template %s\n", sr_template); else { Debug("Requesting topology %d\n", topo); port = 12345; /* DGU TMP: use old port (no auth needed) */ Debug("(falling back to original port for -t type connection)\n"); } /* connect to server and negotiate session */ if(sr_connect_to_server(&sr,port,server) == -1) { return 1; } if(sr_template != NULL) { /* we've recv'd the rtable now, so read it in */ Debug("Connected to new instantiation of topology template %s\n", sr_template); sr_load_rt_wrap(&sr, ((char*)("rtable.vrhost"))); } /* 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 -- */
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 -- */