Changeset b5cf742a in mainline for uspace/app/nettest1/nettest1.c
- Timestamp:
- 2013-06-28T16:22:42Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- edf0d27
- Parents:
- e52b4b5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/nettest1/nettest1.c
re52b4b5 rb5cf742a 54 54 55 55 /** Echo module name. */ 56 #define NAME "Nettest1"56 #define NAME "nettest1" 57 57 58 58 /** Packet data pattern. */ 59 #define NETTEST1_TEXT 59 #define NETTEST1_TEXT "Networking test 1 - sockets" 60 60 61 61 static int family = PF_INET; … … 114 114 int value; 115 115 int rc; 116 116 117 117 switch (argv[*index][1]) { 118 118 /* … … 120 120 */ 121 121 case 'f': 122 rc = arg_parse_name_int(argc, argv, index, &family, 0, socket_parse_protocol_family); 123 if (rc != EOK) 124 return rc; 122 rc = arg_parse_name_int(argc, argv, index, &value, 0, 123 socket_parse_protocol_family); 124 if (rc != EOK) 125 return rc; 126 127 family = (uint16_t) value; 125 128 break; 126 129 case 'h': … … 131 134 if (rc != EOK) 132 135 return rc; 136 133 137 break; 134 138 case 'n': … … 136 140 if (rc != EOK) 137 141 return rc; 142 138 143 break; 139 144 case 'p': … … 141 146 if (rc != EOK) 142 147 return rc; 148 143 149 port = (uint16_t) value; 144 150 break; … … 147 153 if (rc != EOK) 148 154 return rc; 155 149 156 size = (value >= 0) ? (size_t) value : 0; 150 157 break; 151 158 case 't': 152 rc = arg_parse_name_int(argc, argv, index, &value, 0, socket_parse_socket_type); 153 if (rc != EOK) 154 return rc; 159 rc = arg_parse_name_int(argc, argv, index, &value, 0, 160 socket_parse_socket_type); 161 if (rc != EOK) 162 return rc; 163 155 164 type = (sock_type_t) value; 156 165 break; … … 158 167 verbose = 1; 159 168 break; 169 160 170 /* 161 171 * Long options with double dash ('-') … … 163 173 case '-': 164 174 if (str_lcmp(argv[*index] + 2, "family=", 7) == 0) { 165 rc = arg_parse_name_int(argc, argv, index, & family, 9,175 rc = arg_parse_name_int(argc, argv, index, &value, 9, 166 176 socket_parse_protocol_family); 167 177 if (rc != EOK) 168 178 return rc; 179 180 family = (uint16_t) value; 169 181 } else if (str_lcmp(argv[*index] + 2, "help", 5) == 0) { 170 182 nettest1_print_help(); … … 182 194 if (rc != EOK) 183 195 return rc; 196 184 197 port = (uint16_t) value; 185 198 } else if (str_lcmp(argv[*index] + 2, "type=", 5) == 0) { … … 188 201 if (rc != EOK) 189 202 return rc; 203 190 204 type = (sock_type_t) value; 191 205 } else if (str_lcmp(argv[*index] + 2, "verbose", 8) == 0) { … … 200 214 return EINVAL; 201 215 } 202 216 203 217 return EOK; 204 218 } … … 211 225 static void nettest1_fill_buffer(char *buffer, size_t size) 212 226 { 213 size_t length; 214 215 length = 0; 227 size_t length = 0; 216 228 while (size > length + sizeof(NETTEST1_TEXT) - 1) { 217 229 memcpy(buffer + length, NETTEST1_TEXT, … … 219 231 length += sizeof(NETTEST1_TEXT) - 1; 220 232 } 221 233 222 234 memcpy(buffer + length, NETTEST1_TEXT, size - length); 223 235 buffer[size] = '\0'; … … 226 238 static int nettest1_test(int *socket_ids, int nsockets, int nmessages) 227 239 { 228 int rc;229 230 240 if (verbose) 231 241 printf("%d sockets, %d messages\n", nsockets, nmessages); 232 233 rc = sockets_create(verbose, socket_ids, nsockets, family, type);234 if (rc != EOK) 235 return rc; 236 242 243 int rc = sockets_create(verbose, socket_ids, nsockets, family, type); 244 if (rc != EOK) 245 return rc; 246 237 247 if (type == SOCK_STREAM) { 238 248 rc = sockets_connect(verbose, socket_ids, nsockets, address, … … 241 251 return rc; 242 252 } 243 253 244 254 rc = sockets_sendto_recvfrom(verbose, socket_ids, nsockets, address, 245 255 &addrlen, data, size, nmessages); 246 256 if (rc != EOK) 247 257 return rc; 248 258 249 259 rc = sockets_close(verbose, socket_ids, nsockets); 250 260 if (rc != EOK) 251 261 return rc; 252 262 253 263 if (verbose) 254 264 printf("\tOK\n"); 255 265 256 266 /****/ 257 267 258 268 rc = sockets_create(verbose, socket_ids, nsockets, family, type); 259 269 if (rc != EOK) 260 270 return rc; 261 271 262 272 if (type == SOCK_STREAM) { 263 273 rc = sockets_connect(verbose, socket_ids, nsockets, address, … … 266 276 return rc; 267 277 } 268 278 269 279 rc = sockets_sendto(verbose, socket_ids, nsockets, address, addrlen, 270 280 data, size, nmessages); 271 281 if (rc != EOK) 272 282 return rc; 273 283 274 284 rc = sockets_recvfrom(verbose, socket_ids, nsockets, address, &addrlen, 275 285 data, size, nmessages); 276 286 if (rc != EOK) 277 287 return rc; 278 288 279 289 rc = sockets_close(verbose, socket_ids, nsockets); 280 290 if (rc != EOK) 281 291 return rc; 282 292 283 293 if (verbose) 284 294 printf("\tOK\n"); 285 295 286 296 return EOK; 287 297 } … … 320 330 } 321 331 } 322 332 323 333 /* If not before the last argument containing the host */ 324 334 if (index >= argc) { … … 366 376 } 367 377 } 368 378 369 379 /* Check data buffer size */ 370 380 if (size <= 0) { … … 373 383 size = 1024; 374 384 } 375 385 376 386 /* 377 387 * Prepare data buffer. Allocate size bytes plus one for the … … 384 394 } 385 395 nettest1_fill_buffer(data, size); 386 396 387 397 /* Check socket count */ 388 398 if (sockets <= 0) { … … 391 401 sockets = 2; 392 402 } 393 403 394 404 /* 395 405 * Prepare socket buffer. Allocate count fields plus the terminating … … 401 411 return ENOMEM; 402 412 } 413 403 414 socket_ids[sockets] = 0; 404 415 405 416 if (verbose) 406 417 printf("Starting tests\n"); 407 418 408 419 rc = gettimeofday(&time_before, NULL); 409 420 if (rc != EOK) { … … 411 422 return rc; 412 423 } 413 424 414 425 nettest1_test(socket_ids, 1, 1); 415 426 nettest1_test(socket_ids, 1, messages); 416 427 nettest1_test(socket_ids, sockets, 1); 417 428 nettest1_test(socket_ids, sockets, messages); 418 429 419 430 rc = gettimeofday(&time_after, NULL); 420 431 if (rc != EOK) { … … 422 433 return rc; 423 434 } 424 435 425 436 printf("Tested in %ld microseconds\n", tv_sub(&time_after, 426 437 &time_before)); 427 438 428 439 if (verbose) 429 440 printf("Exiting\n"); 430 441 431 442 return EOK; 432 443 } 433 444 434 435 445 /** @} 436 446 */
Note:
See TracChangeset
for help on using the changeset viewer.