arp: fix -H/-t handling.
While at it, shrank code. function old new delta arp_main 1558 1487 -71 Signed-off-by: Kuleshov Aleksey <rndfax@yandex.ru> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
6e29d07417
commit
a8816dafc4
@ -477,28 +477,33 @@ static int arp_show(char *name)
|
|||||||
int arp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int arp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int arp_main(int argc UNUSED_PARAM, char **argv)
|
int arp_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
const char *hw_type = "ether";
|
const char *hw_type;
|
||||||
const char *protocol;
|
const char *protocol;
|
||||||
unsigned opts;
|
unsigned opts;
|
||||||
|
|
||||||
INIT_G();
|
INIT_G();
|
||||||
|
|
||||||
xmove_fd(xsocket(AF_INET, SOCK_DGRAM, 0), sockfd);
|
xmove_fd(xsocket(AF_INET, SOCK_DGRAM, 0), sockfd);
|
||||||
|
|
||||||
ap = get_aftype(DFLT_AF);
|
ap = get_aftype(DFLT_AF);
|
||||||
if (!ap)
|
/* Defaults are always supported */
|
||||||
bb_error_msg_and_die("%s: %s not supported", DFLT_AF, "address family");
|
//if (!ap)
|
||||||
|
// bb_error_msg_and_die("%s: %s not supported", DFLT_AF, "address family");
|
||||||
|
hw = get_hwtype(DFLT_HW);
|
||||||
|
//if (!hw)
|
||||||
|
// bb_error_msg_and_die("%s: %s not supported", DFLT_HW, "hardware type");
|
||||||
|
|
||||||
opts = getopt32(argv, "A:p:H:t:i:adnDsv", &protocol, &protocol,
|
opts = getopt32(argv, "A:p:H:t:i:adnDsv", &protocol, &protocol,
|
||||||
&hw_type, &hw_type, &device);
|
&hw_type, &hw_type, &device);
|
||||||
argv += optind;
|
argv += optind;
|
||||||
if (opts & (ARP_OPT_A | ARP_OPT_p)) {
|
if (opts & (ARP_OPT_A | ARP_OPT_p)) {
|
||||||
ap = get_aftype(protocol);
|
ap = get_aftype(protocol);
|
||||||
if (ap == NULL)
|
if (!ap)
|
||||||
bb_error_msg_and_die("%s: unknown %s", protocol, "address family");
|
bb_error_msg_and_die("%s: unknown %s", protocol, "address family");
|
||||||
}
|
}
|
||||||
if (opts & (ARP_OPT_A | ARP_OPT_p)) {
|
if (opts & (ARP_OPT_H | ARP_OPT_t)) {
|
||||||
hw = get_hwtype(hw_type);
|
hw = get_hwtype(hw_type);
|
||||||
if (hw == NULL)
|
if (!hw)
|
||||||
bb_error_msg_and_die("%s: unknown %s", hw_type, "hardware type");
|
bb_error_msg_and_die("%s: unknown %s", hw_type, "hardware type");
|
||||||
hw_set = 1;
|
hw_set = 1;
|
||||||
}
|
}
|
||||||
@ -507,14 +512,6 @@ int arp_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
if (ap->af != AF_INET) {
|
if (ap->af != AF_INET) {
|
||||||
bb_error_msg_and_die("%s: kernel only supports 'inet'", ap->name);
|
bb_error_msg_and_die("%s: kernel only supports 'inet'", ap->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If no hw type specified get default */
|
|
||||||
if (!hw) {
|
|
||||||
hw = get_hwtype(DFLT_HW);
|
|
||||||
if (!hw)
|
|
||||||
bb_error_msg_and_die("%s: %s not supported", DFLT_HW, "hardware type");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hw->alen <= 0) {
|
if (hw->alen <= 0) {
|
||||||
bb_error_msg_and_die("%s: %s without ARP support",
|
bb_error_msg_and_die("%s: %s without ARP support",
|
||||||
hw->name, "hardware type");
|
hw->name, "hardware type");
|
||||||
@ -528,6 +525,7 @@ int arp_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
return arp_set(argv);
|
return arp_set(argv);
|
||||||
return arp_del(argv);
|
return arp_del(argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (opts & ARP_OPT_a) - default
|
//if (opts & ARP_OPT_a) - default
|
||||||
return arp_show(argv[0]);
|
return arp_show(argv[0]);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user