Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FreeBSD 13.1 check_icmp -4|-6 broken #658

Closed
sonduko opened this issue May 31, 2022 · 3 comments · Fixed by #659
Closed

FreeBSD 13.1 check_icmp -4|-6 broken #658

sonduko opened this issue May 31, 2022 · 3 comments · Fixed by #659
Labels
Milestone

Comments

@sonduko
Copy link

sonduko commented May 31, 2022

I ran into a problem after upgrade of Nagios Server OS FreeBSD 13.0 to 13.1

check_icmp -4|-6 seems to be broken:

root@pm-watcher01:/usr/local/libexec/nagios # ./check_icmp -H 127.0.0.1
CRITICAL - 127.0.0.1: rta nan, lost 100%|rta=0.000ms;200.000;500.000;0; pl=100%;40;80;0;100 rtmax=0.000ms;;;; rtmin=0.000ms;;;;
root@pm-watcher01:/usr/local/libexec/nagios # truss -a -o ~/check_icmp_out ./check_icmp -vH 127.0.0.1
address_family: 2 (IPv4 = 2; IPv6 = 10)
setsockopt failed
Setting alarm timeout to 10 seconds
packets: 5, targets: 1
target_interval: 0.000, pkt_interval 80.000
crit.rta: 500.000
max_completion_time: 3400.000
crit = {500000, 80%}, warn = {200000, 40%}
pkt_interval: 80000  target_interval: 0  retry_interval: 0
icmp_pkt_size: 76  timeout: 10
Failed to send ping to 127.0.0.1 = Invalid argument
Failed to send ping to 127.0.0.1 = Invalid argument
Failed to send ping to 127.0.0.1 = Invalid argument
Failed to send ping to 127.0.0.1 = Invalid argument
Failed to send ping to 127.0.0.1 = Invalid argument
icmp_sent: 0  icmp_recv: 0  icmp_lost: 0
targets: 1  targets_alive: 1
CRITICAL -
127.0.0.1: rta nan, lost 100%|
rta=0.000ms;200.000;500.000;0; pl=100%;40;80;0;100 rtmax=0.000ms;;;; rtmin=0.000ms;;;;
targets: 1, targets_alive: 0, hosts_ok: 0, hosts_warn: 0, min_hosts_alive: -1
root@pm-watcher01:/usr/local/libexec/nagios #
cat check_icmp_out
mmap(0x0,135168,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34362044416 (0x800233000)
mprotect(0x800230000,4096,PROT_READ)             = 0 (0x0)
issetugid()                                      = 0 (0x0)
sigfastblock(0x1,0x8002328f0)                    = 0 (0x0)
__sysctl("kern.ostype",2,0x800232242,0x7fffffffded0,0x0,0) = 0 (0x0)
__sysctl("kern.hostname",2,0x800232342,0x7fffffffded0,0x0,0) = 0 (0x0)
__sysctl("kern.osrelease",2,0x800232442,0x7fffffffded0,0x0,0) = 0 (0x0)
__sysctl("kern.version",2,0x800232542,0x7fffffffded0,0x0,0) = 0 (0x0)
__sysctl("hw.machine",2,0x800232642,0x7fffffffded0,0x0,0) = 0 (0x0)
open("/etc/libmap.conf",O_RDONLY|O_CLOEXEC,010660030) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=27608173,size=47,blksize=32768 }) = 0 (0x0)
read(3,"# $FreeBSD$\nincludedir /usr/loc"...,47) = 47 (0x2f)
close(3)                                         = 0 (0x0)
open("/usr/local/etc/libmap.d",O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC,0165) ERR#2 'No such file or directory'
open("/usr/local/lib/libintl.so.8",O_RDONLY|O_CLOEXEC|O_VERIFY,066000) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=5618053,size=56288,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,61440,PROT_NONE,MAP_GUARD,-1,0x0)       = 34362183680 (0x800255000)
mmap(0x800255000,16384,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362183680 (0x800255000)
mmap(0x800259000,28672,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x3000) = 34362200064 (0x800259000)
mmap(0x800260000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x9000) = 34362228736 (0x800260000)
mmap(0x800261000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x9000) = 34362232832 (0x800261000)
mmap(0x800262000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34362236928 (0x800262000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libssl.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",O_RDONLY|O_CLOEXEC,010013167) = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0\M^@\0\0"...,128) = 128 (0x80)
fstat(3,{ mode=-r--r--r-- ,inode=34355747,size=256,blksize=32768 }) = 0 (0x0)
pread(3,"/lib:/usr/lib:/usr/lib/compat:/u"...,128,0x80) = 128 (0x80)
close(3)                                         = 0 (0x0)
open("/lib/libssl.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) ERR#2 'No such file or directory'
open("/usr/lib/libssl.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=5216673,size=610528,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,622592,PROT_NONE,MAP_GUARD,-1,0x0)      = 34362245120 (0x800264000)
mmap(0x800264000,233472,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362245120 (0x800264000)
mmap(0x80029d000,331776,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x38000) = 34362478592 (0x80029d000)
mmap(0x8002ee000,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x88000) = 34362810368 (0x8002ee000)
mmap(0x8002f6000,24576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x8f000) = 34362843136 (0x8002f6000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libcrypto.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/lib/libcrypto.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=92133984,size=3068304,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,3092480,PROT_NONE,MAP_GUARD,-1,0x0)     = 34362867712 (0x8002fc000)
mmap(0x8002fc000,1142784,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362867712 (0x8002fc000)
mmap(0x800414000,1732608,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x117000) = 34364014592 (0x800414000)
mmap(0x8005bb000,172032,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2bd000) = 34365747200 (0x8005bb000)
mmap(0x8005e5000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2e6000) = 34365919232 (0x8005e5000)
mmap(0x8005ec000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34365947904 (0x8005ec000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libthr.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) ERR#2 'No such file or directory'
open("/lib/libthr.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=92133923,size=128224,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,188416,PROT_NONE,MAP_GUARD,-1,0x0)      = 34365960192 (0x8005ef000)
mmap(0x8005ef000,53248,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34365960192 (0x8005ef000)
mmap(0x8005fc000,73728,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0xc000) = 34366013440 (0x8005fc000)
mmap(0x80060e000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1d000) = 34366087168 (0x80060e000)
mmap(0x800610000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1e000) = 34366095360 (0x800610000)
mmap(0x800611000,49152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34366099456 (0x800611000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libdl.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/lib/libdl.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/libdl.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=5219726,size=6240,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,16384,PROT_NONE,MAP_GUARD,-1,0x0)       = 34366148608 (0x80061d000)
mmap(0x80061d000,4096,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34366148608 (0x80061d000)
mmap(0x80061e000,4096,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34366152704 (0x80061e000)
mmap(0x80061f000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x0) = 34366156800 (0x80061f000)
mmap(0x800620000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x0) = 34366160896 (0x800620000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libc.so.7",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/lib/libc.so.7",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=92133891,size=1955744,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,4235264,PROT_NONE,MAP_GUARD,-1,0x0)     = 34366164992 (0x800621000)
mmap(0x800621000,540672,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34366164992 (0x800621000)
mmap(0x8006a5000,1359872,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x83000) = 34366705664 (0x8006a5000)
mmap(0x8007f1000,36864,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1ce000) = 34368065536 (0x8007f1000)
mmap(0x8007fa000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1d6000) = 34368102400 (0x8007fa000)
mmap(0x800801000,2269184,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368131072 (0x800801000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
mprotect(0x800260000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8002ee000,28672,PROT_READ)            = 0 (0x0)
munmap(0x800241000,77824)                        = 0 (0x0)
mmap(0x0,262144,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34370400256 (0x800a2b000)
mprotect(0x8005bb000,167936,PROT_READ)           = 0 (0x0)
mprotect(0x80060e000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8007f1000,32768,PROT_READ)            = 0 (0x0)
mprotect(0x8007f1000,32768,PROT_READ|PROT_WRITE) = 0 (0x0)
mprotect(0x8007f1000,32768,PROT_READ)            = 0 (0x0)
readlink("/etc/malloc.conf",0x7fffffffd6a0,1024) ERR#2 'No such file or directory'
issetugid()                                      = 0 (0x0)
__sysctl("vm.overcommit",2,0x7fffffffbc2c,0x7fffffffbc20,0x0,0) = 0 (0x0)
mmap(0x0,2097152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(21),-1,0x0) = 34372321280 (0x800c00000)
mmap(0x0,2097152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(12),-1,0x0) = 34374418432 (0x800e00000)
mmap(0x0,4194304,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(21),-1,0x0) = 34376515584 (0x801000000)
__sysctl("kern.usrstack",2,0x800610c88,0x7fffffffdb28,0x0,0) = 0 (0x0)
getrlimit(RLIMIT_STACK,{ cur=536870912,max=536870912 }) = 0 (0x0)
thr_self(0x800e12000)                            = 0 (0x0)
mmap(0x7fffdfffe000,4096,PROT_NONE,MAP_ANON,-1,0x0) = 140736951476224 (0x7fffdfffe000)
rtprio_thread(RTP_LOOKUP,100381,0x7fffffffdae8)  = 0 (0x0)
sigaction(SIGTHR,{ 0x800608b50 SA_SIGINFO ss_t },0x0) = 0 (0x0)
sigprocmask(SIG_UNBLOCK,{ },0x0)                 = 0 (0x0)
_umtx_op(0x7fffffffdae0,UMTX_OP_WAKE,0x1,0x0,0x0) = 0 (0x0)
mprotect(0x0,0,PROT_NONE)                        = 0 (0x0)
getpid()                                         = 7199 (0x1c1f)
getpid()                                         = 7199 (0x1c1f)
sigprocmask(SIG_BLOCK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigfastblock(0x3,0x0)                            = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigfastblock(0x1,0x800e12038)                    = 0 (0x0)
getcontext(0x7fffffffce80)                       = 0 (0x0)
sysarch(AMD64_GET_XFPUSTATE,0x7fffffffce48)      = 0 (0x0)
open("/usr/share/locale/C.UTF-8/LC_CTYPE",O_RDONLY|O_CLOEXEC,013720646057) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=5056574,size=51056,blksize=32768 }) = 0 (0x0)
mmap(0x0,51056,PROT_READ,MAP_PRIVATE,3,0x0)      = 34362101760 (0x800241000)
close(3)                                         = 0 (0x0)
munmap(0x800241000,51056)                        = 0 (0x0)
geteuid()                                        = 0 (0x0)
socket(PF_INET,SOCK_RAW,IPPROTO_ICMP)            = 3 (0x3)
getuid()                                         = 0 (0x0)
setuid(0x0)                                      = 0 (0x0)
setsockopt(3,SOL_SOCKET,SO_TIMESTAMP,0x7fffffffeaac,4) = 0 (0x0)
getpid()                                         = 7199 (0x1c1f)
fstat(1,{ mode=crw--w---- ,inode=138,size=0,blksize=4096 }) = 0 (0x0)
ioctl(1,TIOCGETA,0x7fffffffe410)                 = 0 (0x0)
write(1,"address_family: 2 (IPv4 = 2; IPv"...,40) = 40 (0x28)
setsockopt(3,IPPROTO_IP,IP_TTL,0x213830,1)       ERR#22 'Invalid argument'
write(1,"setsockopt failed\n",18)                = 18 (0x12)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGINT,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGHUP,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGTERM,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGALRM,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
write(1,"Setting alarm timeout to 10 seco"...,36) = 36 (0x24)
setitimer(0,{ 0.000000, 10.000000 },{ 0.000000, 0.000000 }) = 0 (0x0)
gettimeofday({ 1653987375.509502 },0x213850)     = 0 (0x0)
write(1,"packets: 5, targets: 1\n",23)           = 23 (0x17)
write(1,"target_interval: 0.000, pkt_inte"...,44) = 44 (0x2c)
write(1,"crit.rta: 500.000\n",18)                = 18 (0x12)
write(1,"max_completion_time: 3400.000\n",30)    = 30 (0x1e)
write(1,"crit = {500000, 80%}, warn = {20"...,43) = 43 (0x2b)
write(1,"pkt_interval: 80000  target_inte"...,59) = 59 (0x3b)
write(1,"icmp_pkt_size: 76  timeout: 10\n",31)   = 31 (0x1f)
gettimeofday({ 1653987375.509847 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET 127.0.0.1:0 },128,[{"\b\0m\M-^\^\\^_\0\0/\M-X\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
fstatat(AT_FDCWD,"/usr/share/nls/C.UTF-8/libc.cat",0x7fffffffe830,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/share/nls/libc/C.UTF-8",0x7fffffffe830,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/share/nls/C.UTF-8/libc.cat",0x7fffffffe830,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/share/nls/libc/C.UTF-8",0x7fffffffe830,0x0) ERR#2 'No such file or directory'
write(1,"Failed to send ping to 127.0.0.1"...,52) = 52 (0x34)
gettimeofday({ 1653987375.510259 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET 127.0.0.1:0 },128,[{"\b\0\M-Q\M-[\^\\^_\0\^A/\M-X\M^U"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to 127.0.0.1"...,52) = 52 (0x34)
gettimeofday({ 1653987375.510457 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET 127.0.0.1:0 },128,[{"\b\0\v\M-Z\^\\^_\0\^B/\M-X\M^Ub"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to 127.0.0.1"...,52) = 52 (0x34)
gettimeofday({ 1653987375.510644 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET 127.0.0.1:0 },128,[{"\b\0P\M-X\^\\^_\0\^C/\M-X\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to 127.0.0.1"...,52) = 52 (0x34)
gettimeofday({ 1653987375.510828 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET 127.0.0.1:0 },128,[{"\b\0\M^X\M-V\^\\^_\0\^D/\M-X\M^U"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to 127.0.0.1"...,52) = 52 (0x34)
setitimer(0,{ 0.000000, 0.000000 },{ 0.000000, 9.998449 }) = 0 (0x0)
close(3)                                         = 0 (0x0)
close(0)                                         = 0 (0x0)
close(0)                                         ERR#9 'Bad file descriptor'
write(1,"icmp_sent: 0  icmp_recv: 0  icmp"...,41) = 41 (0x29)
write(1,"targets: 1  targets_alive: 1\n",29)     = 29 (0x1d)
write(1,"CRITICAL - \n",12)                      = 12 (0xc)
write(1,"127.0.0.1: rta nan, lost 100%|\n",31)   = 31 (0x1f)
write(1,"rta=0.000ms;200.000;500.000;0; p"...,88) = 88 (0x58)
write(1,"targets: 1, targets_alive: 0, ho"...,78) = 78 (0x4e)
exit(0x2)
process exit, rval = 2
./check_icmp -6 fe80::1
CRITICAL - fe80::1: rta nan, lost 100%|rta=0.000ms;200.000;500.000;0; pl=100%;40;80;0;100 rtmax=0.000ms;;;; rtmin=0.000ms;;;;
./check_icmp -v -6 fe80::1
address_family: 28 (IPv4 = 2; IPv6 = 10)
setsockopt failed
Setting alarm timeout to 10 seconds
packets: 5, targets: 1
target_interval: 0.000, pkt_interval 80.000
crit.rta: 500.000
max_completion_time: 3400.000
crit = {500000, 80%}, warn = {200000, 40%}
pkt_interval: 80000  target_interval: 0  retry_interval: 0
icmp_pkt_size: 76  timeout: 10
Failed to send ping to fe80::1 = Invalid argument
Failed to send ping to fe80::1 = Invalid argument
Failed to send ping to fe80::1 = Invalid argument
Failed to send ping to fe80::1 = Invalid argument
Failed to send ping to fe80::1 = Invalid argument
icmp_sent: 0  icmp_recv: 0  icmp_lost: 0
targets: 1  targets_alive: 1
CRITICAL -
fe80::1: rta nan, lost 100%|
rta=0.000ms;200.000;500.000;0; pl=100%;40;80;0;100 rtmax=0.000ms;;;; rtmin=0.000ms;;;;
targets: 1, targets_alive: 0, hosts_ok: 0, hosts_warn: 0, min_hosts_alive: -1
cat check_icmp_out
mmap(0x0,135168,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34362044416 (0x800233000)
mprotect(0x800230000,4096,PROT_READ)             = 0 (0x0)
issetugid()                                      = 0 (0x0)
sigfastblock(0x1,0x8002328f0)                    = 0 (0x0)
__sysctl("kern.ostype",2,0x800232242,0x7fffffffdec0,0x0,0) = 0 (0x0)
__sysctl("kern.hostname",2,0x800232342,0x7fffffffdec0,0x0,0) = 0 (0x0)
__sysctl("kern.osrelease",2,0x800232442,0x7fffffffdec0,0x0,0) = 0 (0x0)
__sysctl("kern.version",2,0x800232542,0x7fffffffdec0,0x0,0) = 0 (0x0)
__sysctl("hw.machine",2,0x800232642,0x7fffffffdec0,0x0,0) = 0 (0x0)
open("/etc/libmap.conf",O_RDONLY|O_CLOEXEC,010660030) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=27608173,size=47,blksize=32768 }) = 0 (0x0)
read(3,"# $FreeBSD$\nincludedir /usr/loc"...,47) = 47 (0x2f)
close(3)                                         = 0 (0x0)
open("/usr/local/etc/libmap.d",O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC,0165) ERR#2 'No such file or directory'
open("/usr/local/lib/libintl.so.8",O_RDONLY|O_CLOEXEC|O_VERIFY,066000) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=5618053,size=56288,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,61440,PROT_NONE,MAP_GUARD,-1,0x0)       = 34362183680 (0x800255000)
mmap(0x800255000,16384,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362183680 (0x800255000)
mmap(0x800259000,28672,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x3000) = 34362200064 (0x800259000)
mmap(0x800260000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x9000) = 34362228736 (0x800260000)
mmap(0x800261000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x9000) = 34362232832 (0x800261000)
mmap(0x800262000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34362236928 (0x800262000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libssl.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",O_RDONLY|O_CLOEXEC,010013167) = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0\M^@\0\0"...,128) = 128 (0x80)
fstat(3,{ mode=-r--r--r-- ,inode=34355747,size=256,blksize=32768 }) = 0 (0x0)
pread(3,"/lib:/usr/lib:/usr/lib/compat:/u"...,128,0x80) = 128 (0x80)
close(3)                                         = 0 (0x0)
open("/lib/libssl.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) ERR#2 'No such file or directory'
open("/usr/lib/libssl.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=5216673,size=610528,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,622592,PROT_NONE,MAP_GUARD,-1,0x0)      = 34362245120 (0x800264000)
mmap(0x800264000,233472,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362245120 (0x800264000)
mmap(0x80029d000,331776,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x38000) = 34362478592 (0x80029d000)
mmap(0x8002ee000,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x88000) = 34362810368 (0x8002ee000)
mmap(0x8002f6000,24576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x8f000) = 34362843136 (0x8002f6000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libcrypto.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/lib/libcrypto.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=92133984,size=3068304,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,3092480,PROT_NONE,MAP_GUARD,-1,0x0)     = 34362867712 (0x8002fc000)
mmap(0x8002fc000,1142784,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362867712 (0x8002fc000)
mmap(0x800414000,1732608,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x117000) = 34364014592 (0x800414000)
mmap(0x8005bb000,172032,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2bd000) = 34365747200 (0x8005bb000)
mmap(0x8005e5000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2e6000) = 34365919232 (0x8005e5000)
mmap(0x8005ec000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34365947904 (0x8005ec000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libthr.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) ERR#2 'No such file or directory'
open("/lib/libthr.so.3",O_RDONLY|O_CLOEXEC|O_VERIFY,014232266000) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=92133923,size=128224,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,188416,PROT_NONE,MAP_GUARD,-1,0x0)      = 34365960192 (0x8005ef000)
mmap(0x8005ef000,53248,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34365960192 (0x8005ef000)
mmap(0x8005fc000,73728,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0xc000) = 34366013440 (0x8005fc000)
mmap(0x80060e000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1d000) = 34366087168 (0x80060e000)
mmap(0x800610000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1e000) = 34366095360 (0x800610000)
mmap(0x800611000,49152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34366099456 (0x800611000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libdl.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/lib/libdl.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/usr/lib/libdl.so.1",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=5219726,size=6240,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,16384,PROT_NONE,MAP_GUARD,-1,0x0)       = 34366148608 (0x80061d000)
mmap(0x80061d000,4096,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34366148608 (0x80061d000)
mmap(0x80061e000,4096,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34366152704 (0x80061e000)
mmap(0x80061f000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x0) = 34366156800 (0x80061f000)
mmap(0x800620000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x0) = 34366160896 (0x800620000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
open("/usr/local/lib/libc.so.7",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
open("/lib/libc.so.7",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=92133891,size=1955744,blksize=32768 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362179584 (0x800254000)
mmap(0x0,4235264,PROT_NONE,MAP_GUARD,-1,0x0)     = 34366164992 (0x800621000)
mmap(0x800621000,540672,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34366164992 (0x800621000)
mmap(0x8006a5000,1359872,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x83000) = 34366705664 (0x8006a5000)
mmap(0x8007f1000,36864,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1ce000) = 34368065536 (0x8007f1000)
mmap(0x8007fa000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x1d6000) = 34368102400 (0x8007fa000)
mmap(0x800801000,2269184,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34368131072 (0x800801000)
munmap(0x800254000,4096)                         = 0 (0x0)
close(3)                                         = 0 (0x0)
mprotect(0x800260000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8002ee000,28672,PROT_READ)            = 0 (0x0)
munmap(0x800241000,77824)                        = 0 (0x0)
mmap(0x0,262144,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34370400256 (0x800a2b000)
mprotect(0x8005bb000,167936,PROT_READ)           = 0 (0x0)
mprotect(0x80060e000,4096,PROT_READ)             = 0 (0x0)
mprotect(0x8007f1000,32768,PROT_READ)            = 0 (0x0)
mprotect(0x8007f1000,32768,PROT_READ|PROT_WRITE) = 0 (0x0)
mprotect(0x8007f1000,32768,PROT_READ)            = 0 (0x0)
readlink("/etc/malloc.conf",0x7fffffffd690,1024) ERR#2 'No such file or directory'
issetugid()                                      = 0 (0x0)
__sysctl("vm.overcommit",2,0x7fffffffbc1c,0x7fffffffbc10,0x0,0) = 0 (0x0)
mmap(0x0,2097152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(21),-1,0x0) = 34372321280 (0x800c00000)
mmap(0x0,2097152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(12),-1,0x0) = 34374418432 (0x800e00000)
mmap(0x0,4194304,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(21),-1,0x0) = 34376515584 (0x801000000)
__sysctl("kern.usrstack",2,0x800610c88,0x7fffffffdb18,0x0,0) = 0 (0x0)
getrlimit(RLIMIT_STACK,{ cur=536870912,max=536870912 }) = 0 (0x0)
thr_self(0x800e12000)                            = 0 (0x0)
mmap(0x7fffdfffe000,4096,PROT_NONE,MAP_ANON,-1,0x0) = 140736951476224 (0x7fffdfffe000)
rtprio_thread(RTP_LOOKUP,100669,0x7fffffffdad8)  = 0 (0x0)
sigaction(SIGTHR,{ 0x800608b50 SA_SIGINFO ss_t },0x0) = 0 (0x0)
sigprocmask(SIG_UNBLOCK,{ },0x0)                 = 0 (0x0)
_umtx_op(0x7fffffffdad0,UMTX_OP_WAKE,0x1,0x0,0x0) = 0 (0x0)
mprotect(0x0,0,PROT_NONE)                        = 0 (0x0)
getpid()                                         = 27115 (0x69eb)
getpid()                                         = 27115 (0x69eb)
sigprocmask(SIG_BLOCK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigfastblock(0x3,0x0)                            = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigfastblock(0x1,0x800e12038)                    = 0 (0x0)
getcontext(0x7fffffffce70)                       = 0 (0x0)
sysarch(AMD64_GET_XFPUSTATE,0x7fffffffce38)      = 0 (0x0)
open("/usr/share/locale/C.UTF-8/LC_CTYPE",O_RDONLY|O_CLOEXEC,013720646057) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=5056574,size=51056,blksize=32768 }) = 0 (0x0)
mmap(0x0,51056,PROT_READ,MAP_PRIVATE,3,0x0)      = 34362101760 (0x800241000)
close(3)                                         = 0 (0x0)
munmap(0x800241000,51056)                        = 0 (0x0)
geteuid()                                        = 0 (0x0)
socket(PF_INET6,SOCK_RAW,IPPROTO_ICMPV6)         = 3 (0x3)
getuid()                                         = 0 (0x0)
setuid(0x0)                                      = 0 (0x0)
setsockopt(3,SOL_SOCKET,SO_TIMESTAMP,0x7fffffffea9c,4) = 0 (0x0)
getpid()                                         = 27115 (0x69eb)
fstat(1,{ mode=crw--w---- ,inode=138,size=0,blksize=4096 }) = 0 (0x0)
ioctl(1,TIOCGETA,0x7fffffffe400)                 = 0 (0x0)
write(1,"address_family: 28 (IPv4 = 2; IP"...,41) = 41 (0x29)
setsockopt(3,IPPROTO_IP,IP_TTL,0x213830,1)       ERR#22 'Invalid argument'
write(1,"setsockopt failed\n",18)                = 18 (0x12)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGINT,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGHUP,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGTERM,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
sigprocmask(SIG_SETMASK,{ SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2 },{ }) = 0 (0x0)
sigaction(SIGALRM,{ 0x800608a00 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
sigprocmask(SIG_SETMASK,{ },0x0)                 = 0 (0x0)
write(1,"Setting alarm timeout to 10 seco"...,36) = 36 (0x24)
setitimer(0,{ 0.000000, 10.000000 },{ 0.000000, 0.000000 }) = 0 (0x0)
gettimeofday({ 1653988172.525187 },0x213850)     = 0 (0x0)
write(1,"packets: 5, targets: 1\n",23)           = 23 (0x17)
write(1,"target_interval: 0.000, pkt_inte"...,44) = 44 (0x2c)
write(1,"crit.rta: 500.000\n",18)                = 18 (0x12)
write(1,"max_completion_time: 3400.000\n",30)    = 30 (0x1e)
write(1,"crit = {500000, 80%}, warn = {20"...,43) = 43 (0x2b)
write(1,"pkt_interval: 80000  target_inte"...,59) = 59 (0x3b)
write(1,"icmp_pkt_size: 76  timeout: 10\n",31)   = 31 (0x1f)
gettimeofday({ 1653988172.525541 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET6 [fe80::1]:0 },128,[{"\M^@\0\0\0i\M-k\0\0L\M-[\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
fstatat(AT_FDCWD,"/usr/share/nls/C.UTF-8/libc.cat",0x7fffffffe800,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/share/nls/libc/C.UTF-8",0x7fffffffe800,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/share/nls/C.UTF-8/libc.cat",0x7fffffffe800,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/share/nls/libc/C.UTF-8",0x7fffffffe800,0x0) ERR#2 'No such file or directory'
write(1,"Failed to send ping to fe80::1 ="...,50) = 50 (0x32)
gettimeofday({ 1653988172.525977 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET6 [fe80::1]:0 },128,[{"\M^@\0\0\0i\M-k\0\^AL\M-[\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to fe80::1 ="...,50) = 50 (0x32)
gettimeofday({ 1653988172.526175 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET6 [fe80::1]:0 },128,[{"\M^@\0\0\0i\M-k\0\^BL\M-[\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to fe80::1 ="...,50) = 50 (0x32)
gettimeofday({ 1653988172.526366 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET6 [fe80::1]:0 },128,[{"\M^@\0\0\0i\M-k\0\^CL\M-[\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to fe80::1 ="...,50) = 50 (0x32)
gettimeofday({ 1653988172.526558 },0x213850)     = 0 (0x0)
sendmsg(3,{{ AF_INET6 [fe80::1]:0 },128,[{"\M^@\0\0\0i\M-k\0\^DL\M-[\M^Ub\0"...,76}],1,{},0,0},0) ERR#22 'Invalid argument'
write(1,"Failed to send ping to fe80::1 ="...,50) = 50 (0x32)
setitimer(0,{ 0.000000, 0.000000 },{ 0.000000, 9.998389 }) = 0 (0x0)
close(3)                                         = 0 (0x0)
close(0)                                         = 0 (0x0)
close(0)                                         ERR#9 'Bad file descriptor'
write(1,"icmp_sent: 0  icmp_recv: 0  icmp"...,41) = 41 (0x29)
write(1,"targets: 1  targets_alive: 1\n",29)     = 29 (0x1d)
write(1,"CRITICAL - \n",12)                      = 12 (0xc)
write(1,"fe80::1: rta nan, lost 100%|\n",29)     = 29 (0x1d)
write(1,"rta=0.000ms;200.000;500.000;0; p"...,88) = 88 (0x58)
write(1,"targets: 1, targets_alive: 0, ho"...,78) = 78 (0x4e)
exit(0x2)
process exit, rval = 2

Please also see #587
Bug/Problem was incoming with IPv6 on earlier versions FreeBSD

@eriksejr
Copy link

eriksejr commented Jun 2, 2022

The problem seems to be that the author is passing the size of sockaddr_storage to sendmsg() in the header rather then the size of the actual sockaddr_in/in6 struct contained within. I think this creates a size mismatch with the msg_name field that FreeBSD 13.1 checks for resulting in the EINVAL return code from the sendmsg() call. This patch will get it going again, though I am not sure if it is complete, the receive side may need some changes too, but it seems to work:

--- check_icmp.c.orig	2022-06-02 10:57:19.999038000 -0400
+++ check_icmp.c	2022-06-02 11:00:07.721927000 -0400
@@ -242,7 +242,7 @@
 /* global variables */
 static struct rta_host **table, *cursor, *list;
 static threshold crit = {80, 500000}, warn = {40, 200000};
-static int mode, protocols, sockets, debug = 0, timeout = 10;
+static int mode, protocols, sockets, debug = 0, timeout = 10, ttl = 0;
 static unsigned short icmp_data_size = DEFAULT_PING_DATA_SIZE;
 static unsigned short icmp_pkt_size = DEFAULT_PING_DATA_SIZE + ICMP_MINLEN;
 
@@ -256,7 +256,6 @@
 static struct timezone tz;
 static struct timeval prog_start;
 static unsigned long long max_completion_time = 0;
-static unsigned char ttl = 0; /* outgoing ttl */
 static unsigned int warn_down = 1,
                     crit_down = 1; /* host down threshold values */
 static int min_hosts_alive = -1;
@@ -638,7 +637,7 @@
         break;
 
       case 'l':
-        ttl = (unsigned char)strtoul(optarg, NULL, 0);
+        ttl = (int)strtoul(optarg, NULL, 0);
         break;
 
       case 'm':
@@ -1153,6 +1152,7 @@
   struct msghdr hdr;
   struct iovec iov;
   struct timeval tv;
+  size_t addrlen;
   void *buf = NULL;
 
   if (sock == -1) {
@@ -1182,6 +1182,7 @@
 
   if (address_family == AF_INET) {
     struct icmp *icp = (struct icmp *)buf;
+    addrlen = sizeof(struct sockaddr_in);
     memcpy(&icp->icmp_data, &data, sizeof(data));
     icp->icmp_type = ICMP_ECHO;
     icp->icmp_code = 0;
@@ -1197,6 +1198,7 @@
     }
   } else if (address_family == AF_INET6) {
     struct icmp6_hdr *icp6 = (struct icmp6_hdr *)buf;
+    addrlen = sizeof(struct sockaddr_in6);
     memcpy(&icp6->icmp6_dataun.icmp6_un_data8[4], &data, sizeof(data));
     icp6->icmp6_type = ICMP6_ECHO_REQUEST;
     icp6->icmp6_code = 0;
@@ -1217,7 +1219,7 @@
   iov.iov_len = icmp_pkt_size;
   memset(&hdr, 0, sizeof(hdr));
   hdr.msg_name = (struct sockaddr *)&host->saddr_in;
-  hdr.msg_namelen = sizeof(struct sockaddr_storage);
+  hdr.msg_namelen = addrlen;
   hdr.msg_iov = &iov;
   hdr.msg_iovlen = 1;

The patch also changes ttl to an int instead of an unsigned char which fixes the setsockopt() call for the ttl in FreeBSD. I have not tested if this breaks Linux at all.

@eriksejr
Copy link

eriksejr commented Jun 2, 2022

I tested this PR on Linux Kernel 5.17.9 and I had no issues compiling check_icmp or running a test ping with v4 and v6.

@sawolf sawolf added the Bug label Sep 29, 2022
@sawolf sawolf added this to the 2.4.1 milestone Sep 29, 2022
@sawolf
Copy link
Member

sawolf commented Sep 29, 2022

Thanks for the patch and for testing it. I'll try to get this fix into the next release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
3 participants