mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-14 05:11:15 +08:00
ping6: Do not use signals
This commit is contained in:
@@ -287,7 +287,9 @@ static void fill(char *, char *);
|
|||||||
static int get_hoplim(struct msghdr *);
|
static int get_hoplim(struct msghdr *);
|
||||||
static int get_pathmtu(struct msghdr *);
|
static int get_pathmtu(struct msghdr *);
|
||||||
static struct in6_pktinfo *get_rcvpktinfo(struct msghdr *);
|
static struct in6_pktinfo *get_rcvpktinfo(struct msghdr *);
|
||||||
|
#ifndef __rtems__
|
||||||
static void onsignal(int);
|
static void onsignal(int);
|
||||||
|
#endif /* __rtems__ */
|
||||||
static void onint(int);
|
static void onint(int);
|
||||||
static size_t pingerlen(void);
|
static size_t pingerlen(void);
|
||||||
static int pinger(void);
|
static int pinger(void);
|
||||||
@@ -347,7 +349,9 @@ main(int argc, char *argv[])
|
|||||||
struct timespec last, intvl;
|
struct timespec last, intvl;
|
||||||
struct sockaddr_in6 from, *sin6;
|
struct sockaddr_in6 from, *sin6;
|
||||||
struct addrinfo hints, *res;
|
struct addrinfo hints, *res;
|
||||||
|
#ifndef __rtems__
|
||||||
struct sigaction si_sa;
|
struct sigaction si_sa;
|
||||||
|
#endif /* __rtems__ */
|
||||||
int cc, i;
|
int cc, i;
|
||||||
int almost_done, ch, hold, packlen, preload, optval, error;
|
int almost_done, ch, hold, packlen, preload, optval, error;
|
||||||
int nig_oldmcprefix = -1;
|
int nig_oldmcprefix = -1;
|
||||||
@@ -374,7 +378,9 @@ main(int argc, char *argv[])
|
|||||||
char *policy_out = NULL;
|
char *policy_out = NULL;
|
||||||
#endif
|
#endif
|
||||||
double t;
|
double t;
|
||||||
|
#ifndef __rtems__
|
||||||
u_long alarmtimeout;
|
u_long alarmtimeout;
|
||||||
|
#endif /* __rtems__ */
|
||||||
size_t rthlen;
|
size_t rthlen;
|
||||||
#ifdef IPV6_USE_MIN_MTU
|
#ifdef IPV6_USE_MIN_MTU
|
||||||
int mflag = 0;
|
int mflag = 0;
|
||||||
@@ -400,7 +406,9 @@ main(int argc, char *argv[])
|
|||||||
intvl.tv_sec = interval / 1000;
|
intvl.tv_sec = interval / 1000;
|
||||||
intvl.tv_nsec = interval % 1000 * 1000000;
|
intvl.tv_nsec = interval % 1000 * 1000000;
|
||||||
|
|
||||||
|
#ifndef __rtems__
|
||||||
alarmtimeout = preload = 0;
|
alarmtimeout = preload = 0;
|
||||||
|
#endif /* __rtems__ */
|
||||||
datap = &outpack[ICMP6ECHOLEN + ICMP6ECHOTMLEN];
|
datap = &outpack[ICMP6ECHOLEN + ICMP6ECHOTMLEN];
|
||||||
capdns = capdns_setup();
|
capdns = capdns_setup();
|
||||||
#ifndef IPSEC
|
#ifndef IPSEC
|
||||||
@@ -628,6 +636,7 @@ main(int argc, char *argv[])
|
|||||||
options |= F_WAITTIME;
|
options |= F_WAITTIME;
|
||||||
waittime = (int)t;
|
waittime = (int)t;
|
||||||
break;
|
break;
|
||||||
|
#ifndef __rtems__
|
||||||
case 't':
|
case 't':
|
||||||
alarmtimeout = strtoul(optarg, &e, 0);
|
alarmtimeout = strtoul(optarg, &e, 0);
|
||||||
if ((alarmtimeout < 1) || (alarmtimeout == ULONG_MAX))
|
if ((alarmtimeout < 1) || (alarmtimeout == ULONG_MAX))
|
||||||
@@ -638,6 +647,7 @@ main(int argc, char *argv[])
|
|||||||
optarg, MAXALARM);
|
optarg, MAXALARM);
|
||||||
alarm((int)alarmtimeout);
|
alarm((int)alarmtimeout);
|
||||||
break;
|
break;
|
||||||
|
#endif /* __rtems__ */
|
||||||
#ifdef IPSEC
|
#ifdef IPSEC
|
||||||
#ifdef IPSEC_POLICY_IPSEC
|
#ifdef IPSEC_POLICY_IPSEC
|
||||||
case 'P':
|
case 'P':
|
||||||
@@ -1174,6 +1184,7 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
clock_gettime(CLOCK_MONOTONIC, &last);
|
clock_gettime(CLOCK_MONOTONIC, &last);
|
||||||
|
|
||||||
|
#ifndef __rtems__
|
||||||
sigemptyset(&si_sa.sa_mask);
|
sigemptyset(&si_sa.sa_mask);
|
||||||
si_sa.sa_flags = 0;
|
si_sa.sa_flags = 0;
|
||||||
si_sa.sa_handler = onsignal;
|
si_sa.sa_handler = onsignal;
|
||||||
@@ -1189,6 +1200,7 @@ main(int argc, char *argv[])
|
|||||||
if (sigaction(SIGALRM, &si_sa, 0) == -1)
|
if (sigaction(SIGALRM, &si_sa, 0) == -1)
|
||||||
err(EX_OSERR, "sigaction SIGALRM");
|
err(EX_OSERR, "sigaction SIGALRM");
|
||||||
}
|
}
|
||||||
|
#endif /* __rtems__ */
|
||||||
if (options & F_FLOOD) {
|
if (options & F_FLOOD) {
|
||||||
intvl.tv_sec = 0;
|
intvl.tv_sec = 0;
|
||||||
intvl.tv_nsec = 10000000;
|
intvl.tv_nsec = 10000000;
|
||||||
@@ -1310,11 +1322,13 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifndef __rtems__
|
||||||
sigemptyset(&si_sa.sa_mask);
|
sigemptyset(&si_sa.sa_mask);
|
||||||
si_sa.sa_flags = 0;
|
si_sa.sa_flags = 0;
|
||||||
si_sa.sa_handler = SIG_IGN;
|
si_sa.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGINT, &si_sa, 0);
|
sigaction(SIGINT, &si_sa, 0);
|
||||||
sigaction(SIGALRM, &si_sa, 0);
|
sigaction(SIGALRM, &si_sa, 0);
|
||||||
|
#endif /* __rtems__ */
|
||||||
summary();
|
summary();
|
||||||
|
|
||||||
if(packet != NULL)
|
if(packet != NULL)
|
||||||
@@ -1323,6 +1337,7 @@ main(int argc, char *argv[])
|
|||||||
exit(nreceived == 0 ? 2 : 0);
|
exit(nreceived == 0 ? 2 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __rtems__
|
||||||
static void
|
static void
|
||||||
onsignal(int sig)
|
onsignal(int sig)
|
||||||
{
|
{
|
||||||
@@ -1339,6 +1354,7 @@ onsignal(int sig)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* __rtems__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pinger --
|
* pinger --
|
||||||
|
Reference in New Issue
Block a user