Changes in uspace/srv/net/app/nettest2/nettest2.c [9d28b9c:aadf01e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/app/nettest2/nettest2.c
r9d28b9c raadf01e 65 65 * @returns EOK on success. 66 66 */ 67 int main( int argc, char * argv[]);67 int main(int argc, char * argv[]); 68 68 69 69 /** Prints the application help. 70 70 */ 71 void print_help( void);71 void print_help(void); 72 72 73 73 /** Translates the character string to the protocol family number. … … 76 76 * @returns EPFNOSUPPORTED if the protocol family is not supported. 77 77 */ 78 int parse_protocol_family( const char * name);78 int parse_protocol_family(const char * name); 79 79 80 80 /** Translates the character string to the socket type number. … … 83 83 * @returns ESOCKNOSUPPORTED if the socket type is not supported. 84 84 */ 85 int parse_socket_type( const char * name);85 int parse_socket_type(const char * name); 86 86 87 87 /** Refreshes the data. … … 90 90 * @param[in] size The data block size in bytes. 91 91 */ 92 void refresh_data( char * data, size_t size);92 void refresh_data(char * data, size_t size); 93 93 94 94 /** Creates new sockets. … … 101 101 * @returns Other error codes as defined for the socket() function. 102 102 */ 103 int sockets_create( int verbose, int * socket_ids, int sockets, int family, sock_type_t type);103 int sockets_create(int verbose, int * socket_ids, int sockets, int family, sock_type_t type); 104 104 105 105 /** Closes sockets. … … 110 110 * @returns Other error codes as defined for the closesocket() function. 111 111 */ 112 int sockets_close( int verbose, int * socket_ids, int sockets);112 int sockets_close(int verbose, int * socket_ids, int sockets); 113 113 114 114 /** Connects sockets. … … 121 121 * @returns Other error codes as defined for the connect() function. 122 122 */ 123 int sockets_connect( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen);123 int sockets_connect(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen); 124 124 125 125 /** Sends data via sockets. … … 135 135 * @returns Other error codes as defined for the sendto() function. 136 136 */ 137 int sockets_sendto( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages);137 int sockets_sendto(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages); 138 138 139 139 /** Receives data via sockets. … … 149 149 * @returns Other error codes as defined for the recvfrom() function. 150 150 */ 151 int sockets_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages);151 int sockets_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages); 152 152 153 153 /** Sends and receives data via sockets. … … 165 165 * @returns Other error codes as defined for the recvfrom() function. 166 166 */ 167 int sockets_sendto_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages);167 int sockets_sendto_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages); 168 168 169 169 /** Prints a mark. … … 171 171 * @param[in] index The index of the mark to be printed. 172 172 */ 173 void print_mark( int index);174 175 void print_help( void){173 void print_mark(int index); 174 175 void print_help(void){ 176 176 printf( 177 177 "Network Networking test 2 aplication - UDP transfer\n" \ … … 201 201 } 202 202 203 int parse_protocol_family( const char * name){204 if( str_lcmp( name, "PF_INET", 7 ) == 0){203 int parse_protocol_family(const char * name){ 204 if(str_lcmp(name, "PF_INET", 7) == 0){ 205 205 return PF_INET; 206 }else if( str_lcmp( name, "PF_INET6", 8 ) == 0){206 }else if(str_lcmp(name, "PF_INET6", 8) == 0){ 207 207 return PF_INET6; 208 208 } … … 210 210 } 211 211 212 int parse_socket_type( const char * name){213 if( str_lcmp( name, "SOCK_DGRAM", 11 ) == 0){212 int parse_socket_type(const char * name){ 213 if(str_lcmp(name, "SOCK_DGRAM", 11) == 0){ 214 214 return SOCK_DGRAM; 215 }else if( str_lcmp( name, "SOCK_STREAM", 12 ) == 0){215 }else if(str_lcmp(name, "SOCK_STREAM", 12) == 0){ 216 216 return SOCK_STREAM; 217 217 } … … 219 219 } 220 220 221 void refresh_data( char * data, size_t size){222 size_t 221 void refresh_data(char * data, size_t size){ 222 size_t length; 223 223 224 224 // fill the data 225 225 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 234 int 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 } 247 251 } 248 252 return EOK; 249 253 } 250 254 251 int sockets_close( int verbose, int * socket_ids, int sockets){255 int sockets_close(int verbose, int * socket_ids, int sockets){ 252 256 ERROR_DECLARE; 253 257 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"); 262 268 return ERROR_CODE; 263 269 } 264 if( verbose ) print_mark( index ); 270 if(verbose){ 271 print_mark(index); 272 } 265 273 } 266 274 return EOK; 267 275 } 268 276 269 int sockets_connect( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen){277 int sockets_connect(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen){ 270 278 ERROR_DECLARE; 271 279 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"); 279 289 return ERROR_CODE; 280 290 } 281 if( verbose ) print_mark( index ); 291 if(verbose){ 292 print_mark(index); 293 } 282 294 } 283 295 return EOK; 284 296 } 285 297 286 int sockets_sendto( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages){298 int sockets_sendto(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages){ 287 299 ERROR_DECLARE; 288 300 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"); 299 313 return ERROR_CODE; 300 314 } 301 315 } 302 if( verbose ) print_mark( index ); 316 if(verbose){ 317 print_mark(index); 318 } 303 319 } 304 320 return EOK; 305 321 } 306 322 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" ); 323 int 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"); 320 338 return value; 321 339 } 322 340 } 323 if( verbose ) print_mark( index ); 341 if(verbose){ 342 print_mark(index); 343 } 324 344 } 325 345 return EOK; 326 346 } 327 347 328 int sockets_sendto_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages){348 int sockets_sendto_recvfrom(int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages){ 329 349 ERROR_DECLARE; 330 350 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"); 342 364 return ERROR_CODE; 343 365 } 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"); 348 370 return value; 349 371 } 350 372 } 351 if( verbose ) print_mark( index ); 373 if(verbose){ 374 print_mark(index); 375 } 352 376 } 353 377 return EOK; 354 378 } 355 379 356 void print_mark( int index){357 if(( index + 1 ) % 10){358 printf( "*");380 void print_mark(int index){ 381 if((index + 1) % 10){ 382 printf("*"); 359 383 }else{ 360 printf( "|");361 } 362 fflush( stdout);363 } 364 365 int main( int argc, char * argv[]){384 printf("|"); 385 } 386 fflush(stdout); 387 } 388 389 int main(int argc, char * argv[]){ 366 390 ERROR_DECLARE; 367 391 368 size_t 369 int 370 sock_type_t 371 int 372 int 373 int 374 uint16_t 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 382 // char address_string[ INET6_ADDRSTRLEN];383 uint8_t * 384 385 int * 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; 386 410 char * data; 387 int 388 int 389 struct timeval 390 struct timeval 391 392 printf( 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){ 396 420 print_help(); 397 421 return EINVAL; 398 422 } 399 423 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; 446 479 default: 447 print_unrecognized( index, argv[ index ] + 1);480 print_unrecognized(index, argv[index] + 1); 448 481 print_help(); 449 482 return EINVAL; 450 483 } 451 484 }else{ 452 print_unrecognized( index, argv[ index ]);485 print_unrecognized(index, argv[index]); 453 486 print_help(); 454 487 return EINVAL; … … 456 489 } 457 490 458 bzero( address_data, max_length);459 switch( family){491 bzero(address_data, max_length); 492 switch(family){ 460 493 case PF_INET: 461 494 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); 465 498 break; 466 499 case PF_INET6: 467 500 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); 471 504 break; 472 505 default: 473 fprintf( stderr, "Address family is not supported\n");506 fprintf(stderr, "Address family is not supported\n"); 474 507 return EAFNOSUPPORT; 475 508 } 476 509 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); 479 512 return ERROR_CODE; 480 513 } 481 514 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); 484 517 size = 1024; 485 518 } 486 519 // 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"); 490 523 return ENOMEM; 491 524 } 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); 496 529 sockets = 2; 497 530 } 498 531 // 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"); 502 535 return ENOMEM; 503 536 } 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); 518 555 return ERROR_CODE; 519 556 } 520 557 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); 525 562 return ERROR_CODE; 526 563 } 527 564 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); 534 573 return ERROR_CODE; 535 574 } 536 575 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); 542 581 return ERROR_CODE; 543 582 } 544 583 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 } 552 595 553 596 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.