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: usage(argv);
case 1: return 1;
}
else if ((count = atoi(argv[1])) > 0) {
if (argc < 3) {
usage(argv); usage(argv);
return 1; return 1;
}
param_offset = 1;
}
else {
count = 3;
}
case 2: addr_str = argv[1 + param_offset];
addr_str = argv[1];
break;
case 3: if (argc > (2 + param_offset)) {
count = atoi(argv[1]); payload_len = atoi(argv[2 + param_offset]);
if (count > 0) { }
addr_str = argv[2]; if (argc > (3 + param_offset)) {
} _a_to_timex(&delay, argv[3 + param_offset]);
else {
count = 3;
addr_str = argv[1];
payload_len = atoi(argv[2]);
}
break;
case 4:
count = atoi(argv[1]);
if (count > 0) {
addr_str = argv[2];
payload_len = atoi(argv[3]);
}
else {
count = 3;
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)) {