diff options
author | 2016-09-13 07:16:49 +0000 | |
---|---|---|
committer | 2016-09-13 07:16:49 +0000 | |
commit | 77ab7aa6c1ff6899ca0e1a1ce82d51b087cbbd0f (patch) | |
tree | eb2350d1077b2c077b6ff7074c2a3a97f6b7e7c2 | |
parent | Like in ping(8) there is no need to have the destination global. In (diff) | |
download | wireguard-openbsd-77ab7aa6c1ff6899ca0e1a1ce82d51b087cbbd0f.tar.xz wireguard-openbsd-77ab7aa6c1ff6899ca0e1a1ce82d51b087cbbd0f.zip |
Make the raw socket non-global and pass it to retransmit()/pinger().
-rw-r--r-- | sbin/ping/ping.c | 23 | ||||
-rw-r--r-- | sbin/ping6/ping6.c | 23 |
2 files changed, 22 insertions, 24 deletions
diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c index cfe03c032f0..3b4f3ccb40b 100644 --- a/sbin/ping/ping.c +++ b/sbin/ping/ping.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ping.c,v 1.182 2016/09/13 07:15:03 florian Exp $ */ +/* $OpenBSD: ping.c,v 1.183 2016/09/13 07:16:49 florian Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -162,7 +162,6 @@ int mx_dup_ck = MAX_DUP_CHK; char rcvd_tbl[MAX_DUP_CHK / 8]; int datalen = DEFDATALEN; -int s; /* socket file descriptor */ u_char outpackhdr[IP_MAXPACKET]; /* Max packet size = 65535 */ u_char *outpack = outpackhdr+sizeof(struct ip); char BSPACE = '\b'; /* characters written for flood */ @@ -200,8 +199,8 @@ volatile sig_atomic_t seeninfo; void fill(char *, char *); void summary(void); void onsignal(int); -void retransmit(void); -int pinger(void); +void retransmit(int); +int pinger(int); const char *pr_addr(struct sockaddr *, socklen_t); void pr_pack(u_char *, int, struct msghdr *); __dead void usage(void); @@ -223,7 +222,7 @@ main(int argc, char *argv[]) struct sockaddr_in from, from4, dst; socklen_t maxsizelen; int64_t preload; - int ch, i, optval = 1, packlen, maxsize, error; + int ch, i, optval = 1, packlen, maxsize, error, s; int df = 0, tos = 0, bufspace = IP_MAXPACKET; u_char *datap, *packet, loop = 1; u_char ttl = MAXTTL; @@ -575,7 +574,7 @@ main(int argc, char *argv[]) smsghdr.msg_iovlen = 1; while (preload--) /* Fire off them quickies. */ - pinger(); + pinger(s); (void)signal(SIGINT, onsignal); (void)signal(SIGINFO, onsignal); @@ -586,7 +585,7 @@ main(int argc, char *argv[]) itimer.it_value = interval; (void)setitimer(ITIMER_REAL, &itimer, NULL); if (ntransmitted == 0) - retransmit(); + retransmit(s); } seenalrm = seenint = 0; @@ -607,7 +606,7 @@ main(int argc, char *argv[]) if (seenint) break; if (seenalrm) { - retransmit(); + retransmit(s); seenalrm = 0; if (ntransmitted - nreceived - 1 > nmissedmax) { nmissedmax = ntransmitted - nreceived - 1; @@ -624,7 +623,7 @@ main(int argc, char *argv[]) } if (options & F_FLOOD) { - (void)pinger(); + (void)pinger(s); timeout = 10; } else timeout = INFTIM; @@ -760,7 +759,7 @@ pr_addr(struct sockaddr *addr, socklen_t addrlen) * This routine transmits another ping. */ void -retransmit(void) +retransmit(int s) { struct itimerval itimer; static int last_time = 0; @@ -770,7 +769,7 @@ retransmit(void) return; } - if (pinger() == 0) + if (pinger(s) == 0) return; /* @@ -802,7 +801,7 @@ retransmit(void) * byte-order, to compute the round-trip time. */ int -pinger(void) +pinger(int s) { struct icmp *icp; int cc, i; diff --git a/sbin/ping6/ping6.c b/sbin/ping6/ping6.c index 07a42d0b7b8..522a3debe75 100644 --- a/sbin/ping6/ping6.c +++ b/sbin/ping6/ping6.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ping6.c,v 1.194 2016/09/13 07:15:56 florian Exp $ */ +/* $OpenBSD: ping6.c,v 1.195 2016/09/13 07:16:49 florian Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -162,7 +162,6 @@ int mx_dup_ck = MAX_DUP_CHK; char rcvd_tbl[MAX_DUP_CHK / 8]; int datalen = DEFDATALEN; -int s; /* socket file descriptor */ u_char outpack[IPV6_MAXPACKET]; char BSPACE = '\b'; /* characters written for flood */ char DOT = '.'; @@ -200,8 +199,8 @@ volatile sig_atomic_t seeninfo; void fill(char *, char *); void summary(void); void onsignal(int); -void retransmit(void); -int pinger(void); +void retransmit(int); +int pinger(int); const char *pr_addr(struct sockaddr *, socklen_t); void pr_pack(u_char *, int, struct msghdr *); __dead void usage(void); @@ -225,7 +224,7 @@ main(int argc, char *argv[]) struct in6_pktinfo *pktinfo = NULL; socklen_t maxsizelen; int64_t preload; - int ch, i, optval = 1, packlen, maxsize, error; + int ch, i, optval = 1, packlen, maxsize, error, s; u_char *datap, *packet, loop = 1; char *e, *target, hbuf[NI_MAXHOST], *source = NULL; const char *errstr; @@ -630,7 +629,7 @@ main(int argc, char *argv[]) smsghdr.msg_iovlen = 1; while (preload--) /* Fire off them quickies. */ - pinger(); + pinger(s); (void)signal(SIGINT, onsignal); (void)signal(SIGINFO, onsignal); @@ -641,7 +640,7 @@ main(int argc, char *argv[]) itimer.it_value = interval; (void)setitimer(ITIMER_REAL, &itimer, NULL); if (ntransmitted == 0) - retransmit(); + retransmit(s); } seenalrm = seenint = 0; @@ -662,7 +661,7 @@ main(int argc, char *argv[]) if (seenint) break; if (seenalrm) { - retransmit(); + retransmit(s); seenalrm = 0; if (ntransmitted - nreceived - 1 > nmissedmax) { nmissedmax = ntransmitted - nreceived - 1; @@ -679,7 +678,7 @@ main(int argc, char *argv[]) } if (options & F_FLOOD) { - (void)pinger(); + (void)pinger(s); timeout = 10; } else timeout = INFTIM; @@ -830,7 +829,7 @@ pr_addr(struct sockaddr *addr, socklen_t addrlen) * This routine transmits another ping6. */ void -retransmit(void) +retransmit(int s) { struct itimerval itimer; static int last_time = 0; @@ -840,7 +839,7 @@ retransmit(void) return; } - if (pinger() == 0) + if (pinger(s) == 0) return; /* @@ -872,7 +871,7 @@ retransmit(void) * byte-order, to compute the round-trip time. */ int -pinger(void) +pinger(int s) { struct icmp6_hdr *icp; int cc, i; |