Exemple #1
0
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");
}
Exemple #2
0
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");

}
Exemple #3
0
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 -- */