13cde9171SAlan Somers /*- 24d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 33cde9171SAlan Somers * 43cde9171SAlan Somers * Copyright (C) 2019 Jan Sucan <jansucan@FreeBSD.org> 53cde9171SAlan Somers * All rights reserved. 63cde9171SAlan Somers * 73cde9171SAlan Somers * Redistribution and use in source and binary forms, with or without 83cde9171SAlan Somers * modification, are permitted provided that the following conditions 93cde9171SAlan Somers * are met: 103cde9171SAlan Somers * 1. Redistributions of source code must retain the above copyright 113cde9171SAlan Somers * notice, this list of conditions and the following disclaimer. 123cde9171SAlan Somers * 2. Redistributions in binary form must reproduce the above copyright 133cde9171SAlan Somers * notice, this list of conditions and the following disclaimer in the 143cde9171SAlan Somers * documentation and/or other materials provided with the distribution. 153cde9171SAlan Somers * 163cde9171SAlan Somers * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 173cde9171SAlan Somers * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 183cde9171SAlan Somers * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 193cde9171SAlan Somers * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 203cde9171SAlan Somers * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 213cde9171SAlan Somers * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 223cde9171SAlan Somers * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 233cde9171SAlan Somers * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 243cde9171SAlan Somers * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 253cde9171SAlan Somers * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 263cde9171SAlan Somers * SUCH DAMAGE. 273cde9171SAlan Somers */ 283cde9171SAlan Somers 293cde9171SAlan Somers #ifndef MAIN_H 303cde9171SAlan Somers #define MAIN_H 1 313cde9171SAlan Somers 329ce201f2SAlan Somers #ifdef IPSEC 339ce201f2SAlan Somers #include <netipsec/ipsec.h> 349ce201f2SAlan Somers #endif /*IPSEC*/ 359ce201f2SAlan Somers 369ce201f2SAlan Somers #if defined(INET) && defined(IPSEC) && defined(IPSEC_POLICY_IPSEC) 379ce201f2SAlan Somers #define PING4ADDOPTS "P:" 389ce201f2SAlan Somers #else 399ce201f2SAlan Somers #define PING4ADDOPTS 409ce201f2SAlan Somers #endif 41d399eb3eSPiotr Pawel Stefaniak #define PING4OPTS ".::4AaC:c:DdfG:g:Hh:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:" PING4ADDOPTS 429ce201f2SAlan Somers 439ce201f2SAlan Somers #if defined(INET6) && defined(IPSEC) && defined(IPSEC_POLICY_IPSEC) 449ce201f2SAlan Somers #define PING6ADDOPTS "P:" 459ce201f2SAlan Somers #elif defined(INET6) && defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC) 469ce201f2SAlan Somers #define PING6ADDOPTS "ZE" 479ce201f2SAlan Somers #else 489ce201f2SAlan Somers #define PING6ADDOPTS 499ce201f2SAlan Somers #endif 50d399eb3eSPiotr Pawel Stefaniak #define PING6OPTS ".::6Aab:C:c:Dde:fHI:i:k:l:m:nNoOp:qS:s:t:uvyYW:z:" PING6ADDOPTS 519ce201f2SAlan Somers 52*03d4d1c7SJose Luis Duran /* various options */ 53*03d4d1c7SJose Luis Duran extern u_int options; 54*03d4d1c7SJose Luis Duran #define F_HOSTNAME 0x0004 55*03d4d1c7SJose Luis Duran 56*03d4d1c7SJose Luis Duran extern char *hostname; 57*03d4d1c7SJose Luis Duran 58*03d4d1c7SJose Luis Duran /* counters */ 59*03d4d1c7SJose Luis Duran extern long nreceived; /* # of packets we got back */ 60*03d4d1c7SJose Luis Duran extern long nrepeats; /* number of duplicates */ 61*03d4d1c7SJose Luis Duran extern long ntransmitted; /* sequence # for outbound packets = #sent */ 62*03d4d1c7SJose Luis Duran extern long nrcvtimeout; /* # of packets we got back after waittime */ 63*03d4d1c7SJose Luis Duran 64*03d4d1c7SJose Luis Duran /* nonzero if we've been told to finish up */ 65*03d4d1c7SJose Luis Duran extern volatile sig_atomic_t seenint; 66*03d4d1c7SJose Luis Duran extern volatile sig_atomic_t seeninfo; 67*03d4d1c7SJose Luis Duran 68*03d4d1c7SJose Luis Duran /* timing */ 69*03d4d1c7SJose Luis Duran extern int timing; /* flag to do timing */ 70*03d4d1c7SJose Luis Duran extern double tmin; /* minimum round trip time */ 71*03d4d1c7SJose Luis Duran extern double tmax; /* maximum round trip time */ 72*03d4d1c7SJose Luis Duran extern double tsum; /* sum of all times, for doing average */ 73*03d4d1c7SJose Luis Duran extern double tsumsq; /* sum of all times squared, for std. dev. */ 74*03d4d1c7SJose Luis Duran 75*03d4d1c7SJose Luis Duran void onsignal(int); 76*03d4d1c7SJose Luis Duran void pr_summary(FILE * __restrict); 773cde9171SAlan Somers void usage(void) __dead2; 783cde9171SAlan Somers 793cde9171SAlan Somers #endif 80