示例#1
0
void sr_integ_hw_setup(struct sr_instance* sr)
{
    printf(" ** sr_integ_hw(..) called \n");
    struct sr_router* subsystem = (struct sr_router*)sr_get_subsystem(sr);
    printf(" ** sr_integ_hw(..) adding entries to static rtable \n");
    // read rtable file
    sr_load_rt(sr, sr->rtable);
    // add static entries to routing table
    printf(" ** sr_integ_hw(..) initial state of routing table\n");
    llist_display_all(subsystem->rtable->rtable_list, display_route_t);
    // set link state info
    uint32_t area_id = PWOSPF_AREA_ID;
    uint16_t lsuint = PWOSPF_LSU_INTERVAL;
    set_ls_info_id(subsystem, area_id, lsuint);
    // get hardware fds for each hw interface
    #ifdef _CPUMODE_
    sr_cpu_init_interface_socket(subsystem);
    #endif
     // initialize neighbor db
    neighbor_db_init(subsystem);
    // display initial state of neighbor db
    printf(" ** sr_integ_hw(..) initial state of neighbor db\n");
    display_neighbor_vertices(subsystem);
    // initialize pwospf
    pwospf_init(subsystem);
} /* -- sr_integ_hw_setup -- */
示例#2
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");
}
示例#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 -- */