Пример #1
0
void check_arp()
{
    struct ether_addr * dst_eth_addr = NULL;
    static arp_resolv_count = 0;
    dst_eth_addr = tw_search_arp_entry(ip); //checks if address exist in arp table against this IP.
    if(dst_eth_addr == NULL)
    {
        tw_send_arp_request(tw_convert_ip_str_to_dec(ip), "tw0");
        arp_resolv_count++;
    }
    else
    {
        printf("MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n", dst_eth_addr->addr_bytes[0],
               dst_eth_addr->addr_bytes[1], dst_eth_addr->addr_bytes[2],
               dst_eth_addr->addr_bytes[3], dst_eth_addr->addr_bytes[4],
               dst_eth_addr->addr_bytes[5]);
        exit(0);

    }
    if(arp_flag == 1 && arp_resolv_count > 5)
    {
        printf("arp not resolved.\n");
        exit(1);
    }
}
Пример #2
0
bool isSameNetwork(char* ip)
{
    uint32_t ipp = tw_convert_ip_str_to_dec(ip);
    uint32_t desAnd = ipp & tw_get_subnet_mask("tw0");
    uint32_t souAnd = tw_get_ip_addr("tw0") & tw_get_subnet_mask("tw0");
    return desAnd == souAnd;
}
Пример #3
0
void check_arp() {
    static arp_resolv_count = 0;    
    arp_resolv_count++;
    tw_send_arp_request(tw_convert_ip_str_to_dec(ip), "tw0");
    if ( arp_flag == 1 && arp_resolv_count > 4 ) {
        printf("arp not resolved.\n");
        exit(1);
    }    
}
Пример #4
0
int parse_user_params(char * file_name) {
    uint8_t i;
    cJSON * json_file = tw_parse_json_file(file_name);
    if (!json_file) {
        printf("Error before: [%s]n",cJSON_GetErrorPtr());
        return -1;
    }
    for (i = 0 ; i < cJSON_GetArraySize(json_file) ; i++) {
        cJSON * subitem = cJSON_GetArrayItem(json_file, i);
        user_params.server_ip = tw_convert_ip_str_to_dec(cJSON_GetObjectItem(subitem, "ServerIP")->valuestring);
        user_params.server_port = tw_convert_str_to_int(cJSON_GetObjectItem(subitem, "ServerPort")->valuestring,
                                                      strlen(cJSON_GetObjectItem(subitem, "ServerPort")->valuestring));
        user_params.payload_size = tw_convert_str_to_int(cJSON_GetObjectItem(subitem, "Payload")->valuestring,
                                                      strlen(cJSON_GetObjectItem(subitem, "Payload")->valuestring));
        user_params.test_runtime = tw_convert_str_to_int(cJSON_GetObjectItem(subitem, "testRuntime")->valuestring,
                                                      strlen(cJSON_GetObjectItem(subitem, "testRuntime")->valuestring));
        user_params.pps_limit = tw_convert_str_to_int(cJSON_GetObjectItem(subitem, "ppsLimit")->valuestring, 
                                                      strlen(cJSON_GetObjectItem(subitem, "ppsLimit")->valuestring));

        global_stats_option.payload_size=user_params.payload_size ;
    }
    return 0;
}
Пример #5
0
int twiperf_parse_arguments(struct iperf_test *test, int argc, char **argv) /*parsing user given arguments*/
{
    int udp_flag, ethernet_flag;
    static struct option longopts[] = { { "udp", no_argument, NULL, 'u' }, { "ethernet",
    no_argument, NULL, 'e' }, { "server", no_argument, NULL, 's' }, { "client",
    required_argument, NULL, 'c' }, { "help", no_argument, NULL, 'h' }, { "port",
    required_argument, NULL, 'p' }, { "bytes", required_argument, NULL, 'n' }, { "bandwith", required_argument, NULL, 'b'},
    { NULL, 0, NULL, 0 } };
    int flag;
    server_flag = client_flag = udp_flag = ethernet_flag = 0;
    test->packet_size = 1500; //initialized to default value of 64 bytes pcket size
    test->server_port = 5001;  //initialized to default port of 5001
    test->client_port = 7777;  //initialized to default port of 5001
    test->test_runtime = 0;  //initialized to default infinite runtime

    udp_flag = 1;
    test->protocol_id = 2;

    while ((flag = getopt_long(argc, argv, "b:n:p:uec:hs", longopts, NULL)) != -1)
    {
        switch (flag)
        {
            case 'p':
                test->server_port = atoi(optarg);
                break;
            case 'n':
                test->packet_size = atoi(optarg);
                break;
            case 'b':
                test->rate = unit_atof_rate(optarg);
                rate_flag = 1;
                client_flag = 1;
                break;
            case 'c':
                client_flag = 1;
                test->role = 2;
                test->client_mac = tw_get_ether_addr("tw0");
                test->server_ip = tw_cpu_to_be_32(tw_convert_ip_str_to_dec(strdup(optarg)));

                if(test->server_ip == 0)
                {
                    twiperf_usage();
                    exit(1);
                }

                test->client_ip = tw_cpu_to_be_32(tw_get_ip_addr("tw0"));
                break;
            case 's':
                server_flag = 1;
                test->role = 1;
                test->server_mac = tw_get_ether_addr("tw0");
                test->server_ip = tw_cpu_to_be_32(tw_get_ip_addr("tw0"));
                break;
            case 'e':
                ethernet_flag = 1;
                udp_flag = 0;
                test->protocol_id = 1;
                break;
            case 'u':
                udp_flag = 1;
                test->protocol_id = 2;
                break;
            case 'h':
                twiperf_usage();
                exit(1);
                break;
            default:
                twiperf_usage();
                exit(1);
        }
    }

    if(server_flag == 1 && client_flag == 1 || udp_flag == 1 && ethernet_flag == 1)
    {
        twiperf_usage();
        exit(1);
    }

    if(server_flag == 0 && client_flag == 0 || udp_flag == 0 && ethernet_flag == 0)
    {
        twiperf_usage();
        exit(1);
    }

    if((test->role != 1) && (test->role != 2))
    {
        i_errno = IENOROLE;
        return -1;
    }

    if(udp_flag == 1 && test->packet_size > MAX_UDP_BLOCKSIZE)
    {
        i_errno = IEUDPBLOCKSIZE;
        return -1;
    }
    return 0;
}