shell: simplify ping6 parameter parsing

Removes some duplication.
This commit is contained in:
Oleg Hahm 2015-10-23 14:59:06 +00:00
parent d8cefaf97f
commit 025c85f8dc

View File

@ -143,51 +143,30 @@ int _icmpv6_ping(int argc, char **argv)
timex_t min_rtt = { UINT32_MAX, UINT32_MAX }, max_rtt = { 0, 0 }; timex_t min_rtt = { UINT32_MAX, UINT32_MAX }, max_rtt = { 0, 0 };
timex_t sum_rtt = { 0, 0 }; timex_t sum_rtt = { 0, 0 };
timex_t start, stop; timex_t start, stop;
int param_offset = 0;
switch (argc) { if (argc < 2) {
case 0:
case 1:
usage(argv); usage(argv);
return 1; return 1;
}
case 2: else if ((count = atoi(argv[1])) > 0) {
addr_str = argv[1]; if (argc < 3) {
break; usage(argv);
return 1;
case 3: }
count = atoi(argv[1]); param_offset = 1;
if (count > 0) {
addr_str = argv[2];
} }
else { else {
count = 3; count = 3;
addr_str = argv[1];
payload_len = atoi(argv[2]);
} }
break; addr_str = argv[1 + param_offset];
case 4: if (argc > (2 + param_offset)) {
count = atoi(argv[1]); payload_len = atoi(argv[2 + param_offset]);
if (count > 0) {
addr_str = argv[2];
payload_len = atoi(argv[3]);
} }
else { if (argc > (3 + param_offset)) {
count = 3; _a_to_timex(&delay, argv[3 + param_offset]);
addr_str = argv[1];
payload_len = atoi(argv[2]);
_a_to_timex(&delay, argv[3]);
}
break;
case 5:
default:
count = atoi(argv[1]);
addr_str = argv[2];
payload_len = atoi(argv[3]);
_a_to_timex(&delay, argv[4]);
break;
} }
if ((ipv6_addr_from_str(&addr, addr_str) == NULL) || (((int)payload_len) < 0)) { if ((ipv6_addr_from_str(&addr, addr_str) == NULL) || (((int)payload_len) < 0)) {