mirror of
https://github.com/sheumann/hush.git
synced 2024-12-22 14:30:31 +00:00
Cleanup error messages
This commit is contained in:
parent
e3e2a7b41c
commit
8b6024449f
@ -41,13 +41,11 @@ static int do_ioctl_get_ifindex(char *dev)
|
|||||||
{
|
{
|
||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
int fd;
|
int fd;
|
||||||
int err;
|
|
||||||
|
|
||||||
strcpy(ifr.ifr_name, dev);
|
strcpy(ifr.ifr_name, dev);
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
err = ioctl(fd, SIOCGIFINDEX, &ifr);
|
if (ioctl(fd, SIOCGIFINDEX, &ifr)) {
|
||||||
if (err) {
|
perror_msg("ioctl");
|
||||||
perror("ioctl");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
@ -58,13 +56,11 @@ static int do_ioctl_get_iftype(char *dev)
|
|||||||
{
|
{
|
||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
int fd;
|
int fd;
|
||||||
int err;
|
|
||||||
|
|
||||||
strcpy(ifr.ifr_name, dev);
|
strcpy(ifr.ifr_name, dev);
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
err = ioctl(fd, SIOCGIFHWADDR, &ifr);
|
if (ioctl(fd, SIOCGIFHWADDR, &ifr)) {
|
||||||
if (err) {
|
perror_msg("ioctl");
|
||||||
perror("ioctl");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
@ -72,17 +68,15 @@ static int do_ioctl_get_iftype(char *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static char * do_ioctl_get_ifname(int idx)
|
static char *do_ioctl_get_ifname(int idx)
|
||||||
{
|
{
|
||||||
static struct ifreq ifr;
|
static struct ifreq ifr;
|
||||||
int fd;
|
int fd;
|
||||||
int err;
|
|
||||||
|
|
||||||
ifr.ifr_ifindex = idx;
|
ifr.ifr_ifindex = idx;
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
err = ioctl(fd, SIOCGIFNAME, &ifr);
|
if (ioctl(fd, SIOCGIFNAME, &ifr)) {
|
||||||
if (err) {
|
perror_msg("ioctl");
|
||||||
perror("ioctl");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
@ -101,8 +95,9 @@ static int do_get_ioctl(char *basedev, struct ip_tunnel_parm *p)
|
|||||||
ifr.ifr_ifru.ifru_data = (void*)p;
|
ifr.ifr_ifru.ifru_data = (void*)p;
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
err = ioctl(fd, SIOCGETTUNNEL, &ifr);
|
err = ioctl(fd, SIOCGETTUNNEL, &ifr);
|
||||||
if (err)
|
if (err) {
|
||||||
perror("ioctl");
|
perror_msg("ioctl");
|
||||||
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -113,15 +108,17 @@ static int do_add_ioctl(int cmd, char *basedev, struct ip_tunnel_parm *p)
|
|||||||
int fd;
|
int fd;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (cmd == SIOCCHGTUNNEL && p->name[0])
|
if (cmd == SIOCCHGTUNNEL && p->name[0]) {
|
||||||
strcpy(ifr.ifr_name, p->name);
|
strcpy(ifr.ifr_name, p->name);
|
||||||
else
|
} else {
|
||||||
strcpy(ifr.ifr_name, basedev);
|
strcpy(ifr.ifr_name, basedev);
|
||||||
|
}
|
||||||
ifr.ifr_ifru.ifru_data = (void*)p;
|
ifr.ifr_ifru.ifru_data = (void*)p;
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
err = ioctl(fd, cmd, &ifr);
|
err = ioctl(fd, cmd, &ifr);
|
||||||
if (err)
|
if (err) {
|
||||||
perror("ioctl");
|
perror_msg("ioctl");
|
||||||
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -132,15 +129,17 @@ static int do_del_ioctl(char *basedev, struct ip_tunnel_parm *p)
|
|||||||
int fd;
|
int fd;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (p->name[0])
|
if (p->name[0]) {
|
||||||
strcpy(ifr.ifr_name, p->name);
|
strcpy(ifr.ifr_name, p->name);
|
||||||
else
|
} else {
|
||||||
strcpy(ifr.ifr_name, basedev);
|
strcpy(ifr.ifr_name, basedev);
|
||||||
|
}
|
||||||
ifr.ifr_ifru.ifru_data = (void*)p;
|
ifr.ifr_ifru.ifru_data = (void*)p;
|
||||||
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
err = ioctl(fd, SIOCDELTUNNEL, &ifr);
|
err = ioctl(fd, SIOCDELTUNNEL, &ifr);
|
||||||
if (err)
|
if (err) {
|
||||||
perror("ioctl");
|
perror_msg("ioctl");
|
||||||
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -149,7 +148,6 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
char medium[IFNAMSIZ];
|
char medium[IFNAMSIZ];
|
||||||
|
|
||||||
memset(p, 0, sizeof(*p));
|
memset(p, 0, sizeof(*p));
|
||||||
memset(&medium, 0, sizeof(medium));
|
memset(&medium, 0, sizeof(medium));
|
||||||
|
|
||||||
@ -166,26 +164,26 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
if (strcmp(*argv, "ipip") == 0 ||
|
if (strcmp(*argv, "ipip") == 0 ||
|
||||||
strcmp(*argv, "ip/ip") == 0) {
|
strcmp(*argv, "ip/ip") == 0) {
|
||||||
if (p->iph.protocol && p->iph.protocol != IPPROTO_IPIP) {
|
if (p->iph.protocol && p->iph.protocol != IPPROTO_IPIP) {
|
||||||
fprintf(stderr,"You managed to ask for more than one tunnel mode.\n");
|
error_msg("You managed to ask for more than one tunnel mode.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
p->iph.protocol = IPPROTO_IPIP;
|
p->iph.protocol = IPPROTO_IPIP;
|
||||||
} else if (strcmp(*argv, "gre") == 0 ||
|
} else if (strcmp(*argv, "gre") == 0 ||
|
||||||
strcmp(*argv, "gre/ip") == 0) {
|
strcmp(*argv, "gre/ip") == 0) {
|
||||||
if (p->iph.protocol && p->iph.protocol != IPPROTO_GRE) {
|
if (p->iph.protocol && p->iph.protocol != IPPROTO_GRE) {
|
||||||
fprintf(stderr,"You managed to ask for more than one tunnel mode.\n");
|
error_msg("You managed to ask for more than one tunnel mode.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
p->iph.protocol = IPPROTO_GRE;
|
p->iph.protocol = IPPROTO_GRE;
|
||||||
} else if (strcmp(*argv, "sit") == 0 ||
|
} else if (strcmp(*argv, "sit") == 0 ||
|
||||||
strcmp(*argv, "ipv6/ip") == 0) {
|
strcmp(*argv, "ipv6/ip") == 0) {
|
||||||
if (p->iph.protocol && p->iph.protocol != IPPROTO_IPV6) {
|
if (p->iph.protocol && p->iph.protocol != IPPROTO_IPV6) {
|
||||||
fprintf(stderr,"You managed to ask for more than one tunnel mode.\n");
|
error_msg("You managed to ask for more than one tunnel mode.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
p->iph.protocol = IPPROTO_IPV6;
|
p->iph.protocol = IPPROTO_IPV6;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,"Cannot guess tunnel mode.\n");
|
error_msg("Cannot guess tunnel mode.");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
} else if (strcmp(*argv, "key") == 0) {
|
} else if (strcmp(*argv, "key") == 0) {
|
||||||
@ -197,7 +195,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
p->i_key = p->o_key = get_addr32(*argv);
|
p->i_key = p->o_key = get_addr32(*argv);
|
||||||
else {
|
else {
|
||||||
if (get_unsigned(&uval, *argv, 0)<0) {
|
if (get_unsigned(&uval, *argv, 0)<0) {
|
||||||
fprintf(stderr, "invalid value of \"key\"\n");
|
error_msg("invalid value of \"key\"");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
p->i_key = p->o_key = htonl(uval);
|
p->i_key = p->o_key = htonl(uval);
|
||||||
@ -210,7 +208,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
p->o_key = get_addr32(*argv);
|
p->o_key = get_addr32(*argv);
|
||||||
else {
|
else {
|
||||||
if (get_unsigned(&uval, *argv, 0)<0) {
|
if (get_unsigned(&uval, *argv, 0)<0) {
|
||||||
fprintf(stderr, "invalid value of \"ikey\"\n");
|
error_msg("invalid value of \"ikey\"");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
p->i_key = htonl(uval);
|
p->i_key = htonl(uval);
|
||||||
@ -223,7 +221,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
p->o_key = get_addr32(*argv);
|
p->o_key = get_addr32(*argv);
|
||||||
else {
|
else {
|
||||||
if (get_unsigned(&uval, *argv, 0)<0) {
|
if (get_unsigned(&uval, *argv, 0)<0) {
|
||||||
fprintf(stderr, "invalid value of \"okey\"\n");
|
error_msg("invalid value of \"okey\"");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
p->o_key = htonl(uval);
|
p->o_key = htonl(uval);
|
||||||
@ -308,7 +306,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
|
|
||||||
if (p->iph.protocol == IPPROTO_IPIP || p->iph.protocol == IPPROTO_IPV6) {
|
if (p->iph.protocol == IPPROTO_IPIP || p->iph.protocol == IPPROTO_IPV6) {
|
||||||
if ((p->i_flags & GRE_KEY) || (p->o_flags & GRE_KEY)) {
|
if ((p->i_flags & GRE_KEY) || (p->o_flags & GRE_KEY)) {
|
||||||
fprintf(stderr, "Keys are not allowed with ipip and sit.\n");
|
error_msg("Keys are not allowed with ipip and sit.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,7 +326,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip_tunnel_parm *p)
|
|||||||
p->o_flags |= GRE_KEY;
|
p->o_flags |= GRE_KEY;
|
||||||
}
|
}
|
||||||
if (IN_MULTICAST(ntohl(p->iph.daddr)) && !p->iph.saddr) {
|
if (IN_MULTICAST(ntohl(p->iph.daddr)) && !p->iph.saddr) {
|
||||||
fprintf(stderr, "Broadcast tunnel requires a source address.\n");
|
error_msg("Broadcast tunnel requires a source address.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -343,7 +341,7 @@ static int do_add(int cmd, int argc, char **argv)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (p.iph.ttl && p.iph.frag_off == 0) {
|
if (p.iph.ttl && p.iph.frag_off == 0) {
|
||||||
fprintf(stderr, "ttl != 0 and noptmudisc are incompatible\n");
|
error_msg("ttl != 0 and noptmudisc are incompatible");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,7 +353,7 @@ static int do_add(int cmd, int argc, char **argv)
|
|||||||
case IPPROTO_IPV6:
|
case IPPROTO_IPV6:
|
||||||
return do_add_ioctl(cmd, "sit0", &p);
|
return do_add_ioctl(cmd, "sit0", &p);
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "cannot determine tunnel mode (ipip, gre or sit)\n");
|
error_msg("cannot determine tunnel mode (ipip, gre or sit)");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -464,7 +462,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
|
|||||||
buf[sizeof(buf) - 1] = 0;
|
buf[sizeof(buf) - 1] = 0;
|
||||||
if ((ptr = strchr(buf, ':')) == NULL ||
|
if ((ptr = strchr(buf, ':')) == NULL ||
|
||||||
(*ptr++ = 0, sscanf(buf, "%s", name) != 1)) {
|
(*ptr++ = 0, sscanf(buf, "%s", name) != 1)) {
|
||||||
fprintf(stderr, "Wrong format of /proc/net/dev. Sorry.\n");
|
error_msg("Wrong format of /proc/net/dev. Sorry.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sscanf(ptr, "%ld%ld%ld%ld%ld%ld%ld%*d%ld%ld%ld%ld%ld%ld%ld",
|
if (sscanf(ptr, "%ld%ld%ld%ld%ld%ld%ld%*d%ld%ld%ld%ld%ld%ld%ld",
|
||||||
@ -477,7 +475,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
|
|||||||
continue;
|
continue;
|
||||||
type = do_ioctl_get_iftype(name);
|
type = do_ioctl_get_iftype(name);
|
||||||
if (type == -1) {
|
if (type == -1) {
|
||||||
fprintf(stderr, "Failed to get type of [%s]\n", name);
|
error_msg("Failed to get type of [%s]", name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (type != ARPHRD_TUNNEL && type != ARPHRD_IPGRE && type != ARPHRD_SIT)
|
if (type != ARPHRD_TUNNEL && type != ARPHRD_IPGRE && type != ARPHRD_SIT)
|
||||||
@ -543,6 +541,6 @@ int do_iptunnel(int argc, char **argv)
|
|||||||
} else
|
} else
|
||||||
return do_show(0, NULL);
|
return do_show(0, NULL);
|
||||||
|
|
||||||
fprintf(stderr, "Command \"%s\" is unknown, try \"ip tunnel help\".\n", *argv);
|
error_msg("Command \"%s\" is unknown, try \"ip tunnel help\".", *argv);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user