Ignore:
Timestamp:
2010-03-07T22:51:38Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
60ab6c3
Parents:
b5cbff4 (diff), 31c80a5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~lukasmejdrech/helenos/network.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/app/nettest2/nettest2.c

    rb5cbff4 r71b00dcc  
    6565 *  @returns EOK on success.
    6666 */
    67 int             main( int argc, char * argv[] );
     67int main(int argc, char * argv[]);
    6868
    6969/** Prints the application help.
    7070 */
    71 void    print_help( void );
     71void print_help(void);
    7272
    7373/** Translates the character string to the protocol family number.
     
    7676 *  @returns EPFNOSUPPORTED if the protocol family is not supported.
    7777 */
    78 int             parse_protocol_family( const char * name );
     78int parse_protocol_family(const char * name);
    7979
    8080/** Translates the character string to the socket type number.
     
    8383 *  @returns ESOCKNOSUPPORTED if the socket type is not supported.
    8484 */
    85 int             parse_socket_type( const char * name );
     85int parse_socket_type(const char * name);
    8686
    8787/** Refreshes the data.
     
    9090 *  @param[in] size The data block size in bytes.
    9191 */
    92 void    refresh_data( char * data, size_t size );
     92void refresh_data(char * data, size_t size);
    9393
    9494/** Creates new sockets.
     
    101101 *  @returns Other error codes as defined for the socket() function.
    102102 */
    103 int     sockets_create( int verbose, int * socket_ids, int sockets, int family, sock_type_t type );
     103int sockets_create(int verbose, int * socket_ids, int sockets, int family, sock_type_t type);
    104104
    105105/** Closes sockets.
     
    110110 *  @returns Other error codes as defined for the closesocket() function.
    111111 */
    112 int     sockets_close( int verbose, int * socket_ids, int sockets );
     112int sockets_close(int verbose, int * socket_ids, int sockets);
    113113
    114114/** Connects sockets.
     
    121121 *  @returns Other error codes as defined for the connect() function.
    122122 */
    123 int     sockets_connect( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen );
     123int sockets_connect(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen);
    124124
    125125/** Sends data via sockets.
     
    135135 *  @returns Other error codes as defined for the sendto() function.
    136136 */
    137 int     sockets_sendto( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages );
     137int sockets_sendto(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages);
    138138
    139139/** Receives data via sockets.
     
    149149 *  @returns Other error codes as defined for the recvfrom() function.
    150150 */
    151 int     sockets_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages );
     151int sockets_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages);
    152152
    153153/** Sends and receives data via sockets.
     
    165165 *  @returns Other error codes as defined for the recvfrom() function.
    166166 */
    167 int     sockets_sendto_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages );
     167int sockets_sendto_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages);
    168168
    169169/** Prints a mark.
     
    171171 *  @param[in] index The index of the mark to be printed.
    172172 */
    173 void    print_mark( int index );
    174 
    175 void print_help( void ){
     173void print_mark(int index);
     174
     175void print_help(void){
    176176        printf(
    177177                "Network Networking test 2 aplication - UDP transfer\n" \
     
    201201}
    202202
    203 int parse_protocol_family( const char * name ){
    204         if( str_lcmp( name, "PF_INET", 7 ) == 0 ){
     203int parse_protocol_family(const char * name){
     204        if(str_lcmp(name, "PF_INET", 7) == 0){
    205205                return PF_INET;
    206         }else if( str_lcmp( name, "PF_INET6", 8 ) == 0 ){
     206        }else if(str_lcmp(name, "PF_INET6", 8) == 0){
    207207                return PF_INET6;
    208208        }
     
    210210}
    211211
    212 int parse_socket_type( const char * name ){
    213         if( str_lcmp( name, "SOCK_DGRAM", 11 ) == 0 ){
     212int parse_socket_type(const char * name){
     213        if(str_lcmp(name, "SOCK_DGRAM", 11) == 0){
    214214                return SOCK_DGRAM;
    215         }else if( str_lcmp( name, "SOCK_STREAM", 12 ) == 0 ){
     215        }else if(str_lcmp(name, "SOCK_STREAM", 12) == 0){
    216216                return SOCK_STREAM;
    217217        }
     
    219219}
    220220
    221 void refresh_data( char * data, size_t size ){
    222         size_t  length;
     221void refresh_data(char * data, size_t size){
     222        size_t length;
    223223
    224224        // fill the data
    225225        length = 0;
    226         while( size > length + sizeof( NETTEST2_TEXT ) - 1 ){
    227                 memcpy( data + length, NETTEST2_TEXT, sizeof( NETTEST2_TEXT ) - 1 );
    228                 length += sizeof( NETTEST2_TEXT ) - 1;
    229         }
    230         memcpy( data + length, NETTEST2_TEXT, size - length );
    231         data[ size ] = '\0';
    232 }
    233 
    234 int sockets_create( int verbose, int * socket_ids, int sockets, int family, sock_type_t type ){
    235         int     index;
    236 
    237         if( verbose ) printf( "Create\t" );
    238         fflush( stdout );
    239         for( index = 0; index < sockets; ++ index ){
    240                 socket_ids[ index ] = socket( family, type, 0 );
    241                 if( socket_ids[ index ] < 0 ){
    242                         printf( "Socket %d (%d) error:\n", index, socket_ids[ index ] );
    243                         socket_print_error( stderr, socket_ids[ index ], "Socket create: ", "\n" );
    244                         return socket_ids[ index ];
    245                 }
    246                 if( verbose ) print_mark( index );
     226        while(size > length + sizeof(NETTEST2_TEXT) - 1){
     227                memcpy(data + length, NETTEST2_TEXT, sizeof(NETTEST2_TEXT) - 1);
     228                length += sizeof(NETTEST2_TEXT) - 1;
     229        }
     230        memcpy(data + length, NETTEST2_TEXT, size - length);
     231        data[size] = '\0';
     232}
     233
     234int sockets_create(int verbose, int * socket_ids, int sockets, int family, sock_type_t type){
     235        int index;
     236
     237        if(verbose){
     238                printf("Create\t");
     239        }
     240        fflush(stdout);
     241        for(index = 0; index < sockets; ++ index){
     242                socket_ids[index] = socket(family, type, 0);
     243                if(socket_ids[index] < 0){
     244                        printf("Socket %d (%d) error:\n", index, socket_ids[index]);
     245                        socket_print_error(stderr, socket_ids[index], "Socket create: ", "\n");
     246                        return socket_ids[index];
     247                }
     248                if(verbose){
     249                        print_mark(index);
     250                }
    247251        }
    248252        return EOK;
    249253}
    250254
    251 int sockets_close( int verbose, int * socket_ids, int sockets ){
     255int sockets_close(int verbose, int * socket_ids, int sockets){
    252256        ERROR_DECLARE;
    253257
    254         int     index;
    255 
    256         if( verbose ) printf( "\tClose\t" );
    257         fflush( stdout );
    258         for( index = 0; index < sockets; ++ index ){
    259                 if( ERROR_OCCURRED( closesocket( socket_ids[ index ] ))){
    260                         printf( "Socket %d (%d) error:\n", index, socket_ids[ index ] );
    261                         socket_print_error( stderr, ERROR_CODE, "Socket close: ", "\n" );
     258        int index;
     259
     260        if(verbose){
     261                printf("\tClose\t");
     262        }
     263        fflush(stdout);
     264        for(index = 0; index < sockets; ++ index){
     265                if(ERROR_OCCURRED(closesocket(socket_ids[index]))){
     266                        printf("Socket %d (%d) error:\n", index, socket_ids[index]);
     267                        socket_print_error(stderr, ERROR_CODE, "Socket close: ", "\n");
    262268                        return ERROR_CODE;
    263269                }
    264                 if( verbose ) print_mark( index );
     270                if(verbose){
     271                        print_mark(index);
     272                }
    265273        }
    266274        return EOK;
    267275}
    268276
    269 int sockets_connect( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen ){
     277int sockets_connect(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen){
    270278        ERROR_DECLARE;
    271279
    272         int     index;
    273 
    274         if( verbose ) printf( "\tConnect\t" );
    275         fflush( stdout );
    276         for( index = 0; index < sockets; ++ index ){
    277                 if( ERROR_OCCURRED( connect( socket_ids[ index ], address, addrlen ))){
    278                         socket_print_error( stderr, ERROR_CODE, "Socket connect: ", "\n" );
     280        int index;
     281
     282        if(verbose){
     283                printf("\tConnect\t");
     284        }
     285        fflush(stdout);
     286        for(index = 0; index < sockets; ++ index){
     287                if(ERROR_OCCURRED(connect(socket_ids[index], address, addrlen))){
     288                        socket_print_error(stderr, ERROR_CODE, "Socket connect: ", "\n");
    279289                        return ERROR_CODE;
    280290                }
    281                 if( verbose ) print_mark( index );
     291                if(verbose){
     292                        print_mark(index);
     293                }
    282294        }
    283295        return EOK;
    284296}
    285297
    286 int sockets_sendto( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages ){
     298int sockets_sendto(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages){
    287299        ERROR_DECLARE;
    288300
    289         int     index;
    290         int     message;
    291 
    292         if( verbose ) printf( "\tSendto\t" );
    293         fflush( stdout );
    294         for( index = 0; index < sockets; ++ index ){
    295                 for( message = 0; message < messages; ++ message ){
    296                         if( ERROR_OCCURRED( sendto( socket_ids[ index ], data, size, 0, address, addrlen ))){
    297                                 printf( "Socket %d (%d), message %d error:\n", index, socket_ids[ index ], message );
    298                                 socket_print_error( stderr, ERROR_CODE, "Socket send: ", "\n" );
     301        int index;
     302        int message;
     303
     304        if(verbose){
     305                printf("\tSendto\t");
     306        }
     307        fflush(stdout);
     308        for(index = 0; index < sockets; ++ index){
     309                for(message = 0; message < messages; ++ message){
     310                        if(ERROR_OCCURRED(sendto(socket_ids[index], data, size, 0, address, addrlen))){
     311                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
     312                                socket_print_error(stderr, ERROR_CODE, "Socket send: ", "\n");
    299313                                return ERROR_CODE;
    300314                        }
    301315                }
    302                 if( verbose ) print_mark( index );
     316                if(verbose){
     317                        print_mark(index);
     318                }
    303319        }
    304320        return EOK;
    305321}
    306322
    307 int sockets_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages ){
    308         int     value;
    309         int     index;
    310         int     message;
    311 
    312         if( verbose ) printf( "\tRecvfrom\t" );
    313         fflush( stdout );
    314         for( index = 0; index < sockets; ++ index ){
    315                 for( message = 0; message < messages; ++ message ){
    316                         value = recvfrom( socket_ids[ index ], data, size, 0, address, addrlen );
    317                         if( value < 0 ){
    318                                 printf( "Socket %d (%d), message %d error:\n", index, socket_ids[ index ], message );
    319                                 socket_print_error( stderr, value, "Socket receive: ", "\n" );
     323int sockets_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages){
     324        int value;
     325        int index;
     326        int message;
     327
     328        if(verbose){
     329                printf("\tRecvfrom\t");
     330        }
     331        fflush(stdout);
     332        for(index = 0; index < sockets; ++ index){
     333                for(message = 0; message < messages; ++ message){
     334                        value = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
     335                        if(value < 0){
     336                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
     337                                socket_print_error(stderr, value, "Socket receive: ", "\n");
    320338                                return value;
    321339                        }
    322340                }
    323                 if( verbose ) print_mark( index );
     341                if(verbose){
     342                        print_mark(index);
     343                }
    324344        }
    325345        return EOK;
    326346}
    327347
    328 int sockets_sendto_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages ){
     348int sockets_sendto_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages){
    329349        ERROR_DECLARE;
    330350
    331         int     value;
    332         int     index;
    333         int     message;
    334 
    335         if( verbose ) printf( "\tSendto and recvfrom\t" );
    336         fflush( stdout );
    337         for( index = 0; index < sockets; ++ index ){
    338                 for( message = 0; message < messages; ++ message ){
    339                         if( ERROR_OCCURRED( sendto( socket_ids[ index ], data, size, 0, address, * addrlen ))){
    340                                 printf( "Socket %d (%d), message %d error:\n", index, socket_ids[ index ], message );
    341                                 socket_print_error( stderr, ERROR_CODE, "Socket send: ", "\n" );
     351        int value;
     352        int index;
     353        int message;
     354
     355        if(verbose){
     356                printf("\tSendto and recvfrom\t");
     357        }
     358        fflush(stdout);
     359        for(index = 0; index < sockets; ++ index){
     360                for(message = 0; message < messages; ++ message){
     361                        if(ERROR_OCCURRED(sendto(socket_ids[index], data, size, 0, address, * addrlen))){
     362                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
     363                                socket_print_error(stderr, ERROR_CODE, "Socket send: ", "\n");
    342364                                return ERROR_CODE;
    343365                        }
    344                         value = recvfrom( socket_ids[ index ], data, size, 0, address, addrlen );
    345                         if( value < 0 ){
    346                                 printf( "Socket %d (%d), message %d error:\n", index, socket_ids[ index ], message );
    347                                 socket_print_error( stderr, value, "Socket receive: ", "\n" );
     366                        value = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
     367                        if(value < 0){
     368                                printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
     369                                socket_print_error(stderr, value, "Socket receive: ", "\n");
    348370                                return value;
    349371                        }
    350372                }
    351                 if( verbose ) print_mark( index );
     373                if(verbose){
     374                        print_mark(index);
     375                }
    352376        }
    353377        return EOK;
    354378}
    355379
    356 void print_mark( int index ){
    357         if(( index + 1 ) % 10 ){
    358                 printf( "*" );
     380void print_mark(int index){
     381        if((index + 1) % 10){
     382                printf("*");
    359383        }else{
    360                 printf( "|" );
    361         }
    362         fflush( stdout );
    363 }
    364 
    365 int main( int argc, char * argv[] ){
     384                printf("|");
     385        }
     386        fflush(stdout);
     387}
     388
     389int main(int argc, char * argv[]){
    366390        ERROR_DECLARE;
    367391
    368         size_t                          size                    = 28;
    369         int                                     verbose                 = 0;
    370         sock_type_t                     type                    = SOCK_DGRAM;
    371         int                                     sockets                 = 10;
    372         int                                     messages                = 10;
    373         int                                     family                  = PF_INET;
    374         uint16_t                        port                    = 7;
    375 
    376         socklen_t                       max_length              = sizeof( struct sockaddr_in6 );
    377         uint8_t                         address_data[ max_length ];
    378         struct sockaddr *               address         = ( struct sockaddr * ) address_data;
    379         struct sockaddr_in *    address_in              = ( struct sockaddr_in * ) address;
    380         struct sockaddr_in6 *   address_in6     = ( struct sockaddr_in6 * ) address;
    381         socklen_t                       addrlen;
    382 //      char                            address_string[ INET6_ADDRSTRLEN ];
    383         uint8_t *                       address_start;
    384 
    385         int *                           socket_ids;
     392        size_t size                     = 28;
     393        int verbose                     = 0;
     394        sock_type_t type                        = SOCK_DGRAM;
     395        int sockets                     = 10;
     396        int messages            = 10;
     397        int family                      = PF_INET;
     398        uint16_t port                   = 7;
     399
     400        socklen_t max_length            = sizeof(struct sockaddr_in6);
     401        uint8_t address_data[max_length];
     402        struct sockaddr * address               = (struct sockaddr *) address_data;
     403        struct sockaddr_in * address_in         = (struct sockaddr_in *) address;
     404        struct sockaddr_in6 * address_in6       = (struct sockaddr_in6 *) address;
     405        socklen_t addrlen;
     406//      char                            address_string[INET6_ADDRSTRLEN];
     407        uint8_t * address_start;
     408
     409        int * socket_ids;
    386410        char *                          data;
    387         int                                     value;
    388         int                                     index;
    389         struct timeval          time_before;
    390         struct timeval          time_after;
    391 
    392         printf( "Task %d - ", task_get_id());
    393         printf( "%s\n", NAME );
    394 
    395         if( argc <= 1 ){
     411        int value;
     412        int index;
     413        struct timeval time_before;
     414        struct timeval time_after;
     415
     416        printf("Task %d - ", task_get_id());
     417        printf("%s\n", NAME);
     418
     419        if(argc <= 1){
    396420                print_help();
    397421                return EINVAL;
    398422        }
    399423
    400         for( index = 1; ( index < argc - 1 ) || (( index == argc ) && ( argv[ index ][ 0 ] == '-' )); ++ index ){
    401                 if( argv[ index ][ 0 ] == '-' ){
    402                         switch( argv[ index ][ 1 ] ){
    403                                 case 'f':       ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & family, "protocol family", 0, parse_protocol_family ));
    404                                                         break;
    405                                 case 'h':       print_help();
    406                                                         return EOK;
    407                                                         break;
    408                                 case 'm':       ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & messages, "message count", 0 ));
    409                                                         break;
    410                                 case 'n':       ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & sockets, "socket count", 0 ));
    411                                                         break;
    412                                 case 'p':       ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "port number", 0 ));
    413                                                         port = ( uint16_t ) value;
    414                                                         break;
    415                                 case 's':       ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "packet size", 0 ));
    416                                                         size = (value >= 0 ) ? ( size_t ) value : 0;
    417                                                         break;
    418                                 case 't':       ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & value, "socket type", 0, parse_socket_type ));
    419                                                         type = ( sock_type_t ) value;
    420                                                         break;
    421                                 case 'v':       verbose = 1;
    422                                                         break;
    423                                 case '-':       if( str_lcmp( argv[ index ] + 2, "family=", 7 ) == 0 ){
    424                                                                 ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & family, "protocol family", 9, parse_protocol_family ));
    425                                                         }else if( str_lcmp( argv[ index ] + 2, "help", 5 ) == 0 ){
    426                                                                 print_help();
    427                                                                 return EOK;
    428                                                         }else if( str_lcmp( argv[ index ] + 2, "messages=", 6 ) == 0 ){
    429                                                                 ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & messages, "message count", 8 ));
    430                                                         }else if( str_lcmp( argv[ index ] + 2, "sockets=", 6 ) == 0 ){
    431                                                                 ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & sockets, "socket count", 8 ));
    432                                                         }else if( str_lcmp( argv[ index ] + 2, "port=", 5 ) == 0 ){
    433                                                                 ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "port number", 7 ));
    434                                                                 port = ( uint16_t ) value;
    435                                                         }else if( str_lcmp( argv[ index ] + 2, "type=", 5 ) == 0 ){
    436                                                                 ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & value, "socket type", 7, parse_socket_type ));
    437                                                                 type = ( sock_type_t ) value;
    438                                                         }else if( str_lcmp( argv[ index ] + 2, "verbose", 8 ) == 0 ){
    439                                                                 verbose = 1;
    440                                                         }else{
    441                                                                 print_unrecognized( index, argv[ index ] + 2 );
    442                                                                 print_help();
    443                                                                 return EINVAL;
    444                                                         }
    445                                                         break;
     424        for(index = 1; (index < argc - 1) || ((index == argc) && (argv[index][0] == '-')); ++ index){
     425                if(argv[index][0] == '-'){
     426                        switch(argv[index][1]){
     427                                case 'f':
     428                                        ERROR_PROPAGATE(parse_parameter_name_int(argc, argv, &index, &family, "protocol family", 0, parse_protocol_family));
     429                                        break;
     430                                case 'h':
     431                                        print_help();
     432                                        return EOK;
     433                                        break;
     434                                case 'm':
     435                                        ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &messages, "message count", 0));
     436                                        break;
     437                                case 'n':
     438                                        ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &sockets, "socket count", 0));
     439                                        break;
     440                                case 'p':
     441                                        ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &value, "port number", 0));
     442                                        port = (uint16_t) value;
     443                                        break;
     444                                case 's':
     445                                        ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &value, "packet size", 0));
     446                                        size = (value >= 0) ? (size_t) value : 0;
     447                                        break;
     448                                case 't':
     449                                        ERROR_PROPAGATE(parse_parameter_name_int(argc, argv, &index, &value, "socket type", 0, parse_socket_type));
     450                                        type = (sock_type_t) value;
     451                                        break;
     452                                case 'v':
     453                                        verbose = 1;
     454                                        break;
     455                                case '-':
     456                                        if(str_lcmp(argv[index] + 2, "family=", 7) == 0){
     457                                                ERROR_PROPAGATE(parse_parameter_name_int(argc, argv, &index, &family, "protocol family", 9, parse_protocol_family));
     458                                        }else if(str_lcmp(argv[index] + 2, "help", 5) == 0){
     459                                                print_help();
     460                                                return EOK;
     461                                        }else if(str_lcmp(argv[index] + 2, "messages=", 6) == 0){
     462                                                ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &messages, "message count", 8));
     463                                        }else if(str_lcmp(argv[index] + 2, "sockets=", 6) == 0){
     464                                                ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &sockets, "socket count", 8));
     465                                        }else if(str_lcmp(argv[index] + 2, "port=", 5) == 0){
     466                                                ERROR_PROPAGATE(parse_parameter_int(argc, argv, &index, &value, "port number", 7));
     467                                                port = (uint16_t) value;
     468                                        }else if(str_lcmp(argv[index] + 2, "type=", 5) == 0){
     469                                                ERROR_PROPAGATE(parse_parameter_name_int(argc, argv, &index, &value, "socket type", 7, parse_socket_type));
     470                                                type = (sock_type_t) value;
     471                                        }else if(str_lcmp(argv[index] + 2, "verbose", 8) == 0){
     472                                                verbose = 1;
     473                                        }else{
     474                                                print_unrecognized(index, argv[index] + 2);
     475                                                print_help();
     476                                                return EINVAL;
     477                                        }
     478                                        break;
    446479                                default:
    447                                         print_unrecognized( index, argv[ index ] + 1 );
     480                                        print_unrecognized(index, argv[index] + 1);
    448481                                        print_help();
    449482                                        return EINVAL;
    450483                        }
    451484                }else{
    452                         print_unrecognized( index, argv[ index ] );
     485                        print_unrecognized(index, argv[index]);
    453486                        print_help();
    454487                        return EINVAL;
     
    456489        }
    457490
    458         bzero( address_data, max_length );
    459         switch( family ){
     491        bzero(address_data, max_length);
     492        switch(family){
    460493                case PF_INET:
    461494                        address_in->sin_family = AF_INET;
    462                         address_in->sin_port = htons( port );
    463                         address_start = ( uint8_t * ) & address_in->sin_addr.s_addr;
    464                         addrlen = sizeof( struct sockaddr_in );
     495                        address_in->sin_port = htons(port);
     496                        address_start = (uint8_t *) &address_in->sin_addr.s_addr;
     497                        addrlen = sizeof(struct sockaddr_in);
    465498                        break;
    466499                case PF_INET6:
    467500                        address_in6->sin6_family = AF_INET6;
    468                         address_in6->sin6_port = htons( port );
    469                         address_start = ( uint8_t * ) & address_in6->sin6_addr.s6_addr;
    470                         addrlen = sizeof( struct sockaddr_in6 );
     501                        address_in6->sin6_port = htons(port);
     502                        address_start = (uint8_t *) &address_in6->sin6_addr.s6_addr;
     503                        addrlen = sizeof(struct sockaddr_in6);
    471504                        break;
    472505                default:
    473                         fprintf( stderr, "Address family is not supported\n" );
     506                        fprintf(stderr, "Address family is not supported\n");
    474507                        return EAFNOSUPPORT;
    475508        }
    476509
    477         if( ERROR_OCCURRED( inet_pton( family, argv[ argc - 1 ], address_start ))){
    478                 fprintf( stderr, "Address parse error %d\n", ERROR_CODE );
     510        if(ERROR_OCCURRED(inet_pton(family, argv[argc - 1], address_start))){
     511                fprintf(stderr, "Address parse error %d\n", ERROR_CODE);
    479512                return ERROR_CODE;
    480513        }
    481514
    482         if( size <= 0 ){
    483                 fprintf( stderr, "Data buffer size too small (%d). Using 1024 bytes instead.\n", size );
     515        if(size <= 0){
     516                fprintf(stderr, "Data buffer size too small (%d). Using 1024 bytes instead.\n", size);
    484517                size = 1024;
    485518        }
    486519        // size plus terminating null (\0)
    487         data = ( char * ) malloc( size + 1 );
    488         if( ! data ){
    489                 fprintf( stderr, "Failed to allocate data buffer.\n" );
     520        data = (char *) malloc(size + 1);
     521        if(! data){
     522                fprintf(stderr, "Failed to allocate data buffer.\n");
    490523                return ENOMEM;
    491524        }
    492         refresh_data( data, size );
    493 
    494         if( sockets <= 0 ){
    495                 fprintf( stderr, "Socket count too small (%d). Using 2 instead.\n", sockets );
     525        refresh_data(data, size);
     526
     527        if(sockets <= 0){
     528                fprintf(stderr, "Socket count too small (%d). Using 2 instead.\n", sockets);
    496529                sockets = 2;
    497530        }
    498531        // count plus terminating null (\0)
    499         socket_ids = ( int * ) malloc( sizeof( int ) * ( sockets + 1 ));
    500         if( ! socket_ids ){
    501                 fprintf( stderr, "Failed to allocate receive buffer.\n" );
     532        socket_ids = (int *) malloc(sizeof(int) * (sockets + 1));
     533        if(! socket_ids){
     534                fprintf(stderr, "Failed to allocate receive buffer.\n");
    502535                return ENOMEM;
    503536        }
    504         socket_ids[ sockets ] = NULL;
    505 
    506         if( verbose ) printf( "Starting tests\n" );
    507 
    508         ERROR_PROPAGATE( sockets_create( verbose, socket_ids, sockets, family, type ));
    509 
    510         if( type == SOCK_STREAM ){
    511                 ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, addrlen ));
    512         }
    513 
    514         if( verbose ) printf( "\n" );
    515 
    516         if( ERROR_OCCURRED( gettimeofday( & time_before, NULL ))){
    517                 fprintf( stderr, "Get time of day error %d\n", ERROR_CODE );
     537        socket_ids[sockets] = NULL;
     538
     539        if(verbose){
     540                printf("Starting tests\n");
     541        }
     542
     543        ERROR_PROPAGATE(sockets_create(verbose, socket_ids, sockets, family, type));
     544
     545        if(type == SOCK_STREAM){
     546                ERROR_PROPAGATE(sockets_connect(verbose, socket_ids, sockets, address, addrlen));
     547        }
     548
     549        if(verbose){
     550                printf("\n");
     551        }
     552
     553        if(ERROR_OCCURRED(gettimeofday(&time_before, NULL))){
     554                fprintf(stderr, "Get time of day error %d\n", ERROR_CODE);
    518555                return ERROR_CODE;
    519556        }
    520557
    521         ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, messages ));
    522 
    523         if( ERROR_OCCURRED( gettimeofday( & time_after, NULL ))){
    524                 fprintf( stderr, "Get time of day error %d\n", ERROR_CODE );
     558        ERROR_PROPAGATE(sockets_sendto_recvfrom(verbose, socket_ids, sockets, address, &addrlen, data, size, messages));
     559
     560        if(ERROR_OCCURRED(gettimeofday(&time_after, NULL))){
     561                fprintf(stderr, "Get time of day error %d\n", ERROR_CODE);
    525562                return ERROR_CODE;
    526563        }
    527564
    528         if( verbose ) printf( "\tOK\n" );
    529 
    530         printf( "sendto + recvfrom tested in %d microseconds\n", tv_sub( & time_after, & time_before ));
    531 
    532         if( ERROR_OCCURRED( gettimeofday( & time_before, NULL ))){
    533                 fprintf( stderr, "Get time of day error %d\n", ERROR_CODE );
     565        if(verbose){
     566                printf("\tOK\n");
     567        }
     568
     569        printf("sendto + recvfrom tested in %d microseconds\n", tv_sub(&time_after, &time_before));
     570
     571        if(ERROR_OCCURRED(gettimeofday(&time_before, NULL))){
     572                fprintf(stderr, "Get time of day error %d\n", ERROR_CODE);
    534573                return ERROR_CODE;
    535574        }
    536575
    537         ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, sockets, address, addrlen, data, size, messages ));
    538         ERROR_PROPAGATE( sockets_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, messages ));
    539 
    540         if( ERROR_OCCURRED( gettimeofday( & time_after, NULL ))){
    541                 fprintf( stderr, "Get time of day error %d\n", ERROR_CODE );
     576        ERROR_PROPAGATE(sockets_sendto(verbose, socket_ids, sockets, address, addrlen, data, size, messages));
     577        ERROR_PROPAGATE(sockets_recvfrom(verbose, socket_ids, sockets, address, &addrlen, data, size, messages));
     578
     579        if(ERROR_OCCURRED(gettimeofday(&time_after, NULL))){
     580                fprintf(stderr, "Get time of day error %d\n", ERROR_CODE);
    542581                return ERROR_CODE;
    543582        }
    544583
    545         if( verbose ) printf( "\tOK\n" );
    546 
    547         printf( "sendto, recvfrom tested in %d microseconds\n", tv_sub( & time_after, & time_before ));
    548 
    549         ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets ));
    550 
    551         if( verbose ) printf( "\nExiting\n" );
     584        if(verbose){
     585                printf("\tOK\n");
     586        }
     587
     588        printf("sendto, recvfrom tested in %d microseconds\n", tv_sub(&time_after, &time_before));
     589
     590        ERROR_PROPAGATE(sockets_close(verbose, socket_ids, sockets));
     591
     592        if(verbose){
     593                printf("\nExiting\n");
     594        }
    552595
    553596        return EOK;
Note: See TracChangeset for help on using the changeset viewer.