Cleanup on usr.sbin/arp/arp.c

* 'blackhole' and 'reject' are mutually exclusive, replace printf() by errx()
  when both are selected.
* 'trail' option is no longer supported since first import of arp from 4.4BSD.
  XXX message was added 13 years ago in r128192. I believe it's time to remove
  it.
* Use warnx() to print some informative messages instead of printf()
* Replace strncmp() by strcmp() when validating parameters and exit when invalid
  parameter is found

Reviewed by:	allanjude, vangyzen, cem
Approved by:	allanjude
MFC after:	1 week
Sponsored by:	Rubicon Communications (Netgate)
Differential Revision:	https://reviews.freebsd.org/D9504
This commit is contained in:
Renato Botelho 2017-02-09 19:58:12 +00:00
parent 2a3c5de4f7
commit 7814b3b8a1

View File

@ -319,7 +319,7 @@ set(int argc, char **argv)
return (1);
doing_proxy = flags = expire_time = 0;
while (argc-- > 0) {
if (strncmp(argv[0], "temp", 4) == 0) {
if (strcmp(argv[0], "temp") == 0) {
struct timespec tp;
int max_age;
size_t len = sizeof(max_age);
@ -329,10 +329,10 @@ set(int argc, char **argv)
&max_age, &len, NULL, 0) != 0)
err(1, "sysctlbyname");
expire_time = tp.tv_sec + max_age;
} else if (strncmp(argv[0], "pub", 3) == 0) {
} else if (strcmp(argv[0], "pub") == 0) {
flags |= RTF_ANNOUNCE;
doing_proxy = 1;
if (argc && strncmp(argv[1], "only", 3) == 0) {
if (argc && strcmp(argv[1], "only") == 0) {
/*
* Compatibility: in pre FreeBSD 8 times
* the "only" keyword used to mean that
@ -341,29 +341,28 @@ set(int argc, char **argv)
*/
argc--; argv++;
}
} else if (strncmp(argv[0], "blackhole", 9) == 0) {
} else if (strcmp(argv[0], "blackhole") == 0) {
if (flags & RTF_REJECT) {
printf("Choose one of blackhole or reject, "
errx(1, "Choose one of blackhole or reject, "
"not both.");
}
flags |= RTF_BLACKHOLE;
} else if (strncmp(argv[0], "reject", 6) == 0) {
} else if (strcmp(argv[0], "reject") == 0) {
if (flags & RTF_BLACKHOLE) {
printf("Choose one of blackhole or reject, "
errx(1, "Choose one of blackhole or reject, "
"not both.");
}
flags |= RTF_REJECT;
} else if (strncmp(argv[0], "trail", 5) == 0) {
/* XXX deprecated and undocumented feature */
printf("%s: Sending trailers is no longer supported\n",
host);
} else {
warnx("Invalid parameter '%s'", argv[0]);
usage();
}
argv++;
}
ea = (struct ether_addr *)LLADDR(&sdl_m);
if (doing_proxy && !strcmp(eaddr, "auto")) {
if (!get_ether_addr(dst->sin_addr.s_addr, ea)) {
printf("no interface found for %s\n",
warnx("no interface found for %s",
inet_ntoa(dst->sin_addr));
return (1);
}
@ -399,7 +398,7 @@ set(int argc, char **argv)
if ((sdl->sdl_family != AF_LINK) ||
(rtm->rtm_flags & RTF_GATEWAY) ||
!valid_type(sdl->sdl_type)) {
printf("cannot intuit interface index and type for %s\n", host);
warnx("cannot intuit interface index and type for %s", host);
return (1);
}
sdl_m.sdl_type = sdl->sdl_type;
@ -487,7 +486,7 @@ delete(char *host)
* is a proxy-arp entry to remove.
*/
if (flags & RTF_ANNOUNCE) {
fprintf(stderr, "delete: cannot locate %s\n", host);
warnx("delete: cannot locate %s", host);
return (1);
}
@ -870,9 +869,8 @@ get_ether_addr(in_addr_t ipaddr, struct ether_addr *hwaddr)
*/
dla = (struct sockaddr_dl *) &ifr->ifr_addr;
memcpy(hwaddr, LLADDR(dla), dla->sdl_alen);
printf("using interface %s for proxy with address ",
ifp->ifr_name);
printf("%s\n", ether_ntoa(hwaddr));
printf("using interface %s for proxy with address %s\n", ifp->ifr_name,
ether_ntoa(hwaddr));
retval = dla->sdl_alen;
done:
close(sock);