Compare commits
No commits in common. 'develop' and 'coverity_scan' have entirely different histories.
develop
...
coverity_s
@ -1,30 +0,0 @@
|
|||||||
.*.swp
|
|
||||||
*.tar.gz
|
|
||||||
*~
|
|
||||||
src/*.gcno
|
|
||||||
src/*.gcda
|
|
||||||
src/*.gcov
|
|
||||||
src/tags
|
|
||||||
.deps
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
aclocal.m4
|
|
||||||
autom4te.cache
|
|
||||||
compile
|
|
||||||
config.guess
|
|
||||||
config.h
|
|
||||||
config.h.in
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
configure
|
|
||||||
depcomp
|
|
||||||
install-sh
|
|
||||||
missing
|
|
||||||
src/*.o
|
|
||||||
src/fping
|
|
||||||
src/fping6
|
|
||||||
stamp-h1
|
|
||||||
doc/fping.8
|
|
||||||
doc/fping6.8
|
|
||||||
ci/build
|
|
@ -1,108 +0,0 @@
|
|||||||
name: Test
|
|
||||||
on: [push, pull_request]
|
|
||||||
jobs:
|
|
||||||
Test-Linux:
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-20.04, ubuntu-22.04]
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -qq
|
|
||||||
sudo apt-get install libcap2-bin libtest-command-perl lcov
|
|
||||||
sudo sysctl net.ipv4.ping_group_range='0 2147483647'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
ci/build-1-autotools.sh
|
|
||||||
ci/build-4-compile.sh
|
|
||||||
ci/test-tarball.sh
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
run: |
|
|
||||||
set -ex
|
|
||||||
PATH=`pwd`/src:$PATH
|
|
||||||
# avoid pinging internet hosts because it doesn't
|
|
||||||
# work with GitHub Actions being hosted in Azure.
|
|
||||||
prove $(ls ci/test-*.pl|grep -v internet-hosts)
|
|
||||||
ci/run-lcov.sh
|
|
||||||
|
|
||||||
- name: Coveralls
|
|
||||||
uses: coverallsapp/github-action@master
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
path-to-lcov: lcov.info
|
|
||||||
flag-name: ${{ matrix.os }}
|
|
||||||
parallel: true
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Test-Mac:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
brew install automake lcov
|
|
||||||
ci/build-2-test-command.sh
|
|
||||||
ci/build-3-prepare-macos.sh
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
ci/build-4-compile.sh
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
run: |
|
|
||||||
set -ex
|
|
||||||
PATH=`pwd`/src:$PATH
|
|
||||||
export SKIP_IPV6=1
|
|
||||||
prove $(ls ci/test-*.pl|grep -v internet-hosts)
|
|
||||||
ci/run-lcov.sh
|
|
||||||
|
|
||||||
- name: Coveralls
|
|
||||||
uses: coverallsapp/github-action@master
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
path-to-lcov: lcov.info
|
|
||||||
flag-name: macos
|
|
||||||
parallel: true
|
|
||||||
|
|
||||||
Coveralls-Finish:
|
|
||||||
needs: [Test-Linux, Test-Mac]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Coveralls
|
|
||||||
uses: coverallsapp/github-action@master
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
parallel-finished: true
|
|
||||||
|
|
||||||
Release-Tarball:
|
|
||||||
needs: [Test-Linux, Test-Mac]
|
|
||||||
if: ${{ github.event_name == 'push' }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -qq
|
|
||||||
sudo apt-get install libcap2-bin libtest-command-perl
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
ci/build-1-autotools.sh
|
|
||||||
ci/build-4-compile.sh
|
|
||||||
ci/test-tarball.sh
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: dist
|
|
||||||
path: fping-*.tar.gz
|
|
@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Debug fping",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/src/fping",
|
|
||||||
"args": ["127.0.0.1"],
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"environment": [],
|
|
||||||
"externalConsole": false,
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"setupCommands": [
|
|
||||||
{
|
|
||||||
"description": "Enable pretty-printing for gdb",
|
|
||||||
"text": "-enable-pretty-printing",
|
|
||||||
"ignoreFailures": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Set Disassembly Flavor to Intel",
|
|
||||||
"text": "-gdb-set disassembly-flavor intel",
|
|
||||||
"ignoreFailures": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"preLaunchTask": "build",
|
|
||||||
"postDebugTask": "autoclean",
|
|
||||||
"miDebuggerPath": "/usr/bin/gdb",
|
|
||||||
"logging": {
|
|
||||||
"engineLogging": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": "2.0.0"
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"type": "shell",
|
|
||||||
"label": "autogen",
|
|
||||||
"command": "./autogen.sh",
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"problemMatcher": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "shell",
|
|
||||||
"label": "configure",
|
|
||||||
"command": "./configure",
|
|
||||||
"args": ["--enable-debug"],
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"dependsOn": ["autogen"],
|
|
||||||
"problemMatcher": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "shell",
|
|
||||||
"label": "build",
|
|
||||||
"command": "make",
|
|
||||||
"args": ["CFLAGS=\"-g -O0\""],
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"dependsOn": ["configure"],
|
|
||||||
"problemMatcher": ["$gcc"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "shell",
|
|
||||||
"label": "autoclean",
|
|
||||||
"command": "./autoclean.sh",
|
|
||||||
"problemMatcher": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": "2.0.0"
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
COVERITY_SCAN_PROJECT_NAME=schweikert/fping
|
|
||||||
COVERITY_SCAN_EMAIL=david@schweikert.ch
|
|
||||||
|
|
||||||
if [ -z "$COVERITY_SCAN_TOKEN" ]; then
|
|
||||||
echo "ERROR: COVERITY_SCAN_TOKEN not defined." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
curl -o /tmp/cov-analysis-linux64.tgz https://scan.coverity.com/download/linux64 \
|
|
||||||
--form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN
|
|
||||||
tar xfz /tmp/cov-analysis-linux64.tgz
|
|
||||||
./autogen.sh
|
|
||||||
./configure --enable-ipv4 --enable-ipv6 --enable-safe-limits --prefix=/opt/fping
|
|
||||||
cov-analysis-linux64-*/bin/cov-build --dir cov-int make -j4
|
|
||||||
tar cfz cov-int.tar.gz cov-int
|
|
||||||
curl https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME \
|
|
||||||
--form token=$COVERITY_SCAN_TOKEN \
|
|
||||||
--form email=$COVERITY_SCAN_EMAIL \
|
|
||||||
--form file=@cov-int.tar.gz \
|
|
||||||
--form version="`git rev-parse --short HEAD`" \
|
|
||||||
--form description="`git rev-parse --short HEAD` / $TRAVIS_BUILD_ID "
|
|
@ -1,9 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
lcov -c -no-external \
|
|
||||||
-d . \
|
|
||||||
-b src \
|
|
||||||
-o lcov-all.info
|
|
||||||
|
|
||||||
lcov --remove lcov-all.info -o lcov.info \
|
|
||||||
'*/optparse.c'
|
|
@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
use English;
|
||||||
|
use Test::Command;
|
||||||
|
use Test::More;
|
||||||
|
|
||||||
|
if( $^O eq 'darwin' ) {
|
||||||
|
plan skip_all => 'Test irrelevant on MacOS';
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_ping_gid_range {
|
||||||
|
open FD, "/proc/sys/net/ipv4/ping_group_range" or return undef;
|
||||||
|
chomp(my $line = <FD>);
|
||||||
|
my @range = split(/\s+/, $line);
|
||||||
|
close FD;
|
||||||
|
return @range;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @gids = split(' ', $EGID);
|
||||||
|
my @allowed_gid_range = get_ping_gid_range();
|
||||||
|
|
||||||
|
# Linux test for unprivileged ping support
|
||||||
|
foreach(@gids) {
|
||||||
|
if ($_ >= $allowed_gid_range[0] && $_ <= $allowed_gid_range[1]) {
|
||||||
|
plan skip_all => "Userspace pings are allowed, gid $_ in range [$allowed_gid_range[0], $allowed_gid_range[1]]";
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plan tests => 3;
|
||||||
|
|
||||||
|
# run without privileges
|
||||||
|
my $fping_bin = `which fping`; chomp $fping_bin;
|
||||||
|
system("cp $fping_bin /tmp/fping.copy; chmod +x /tmp/fping.copy");
|
||||||
|
|
||||||
|
# fping
|
||||||
|
{
|
||||||
|
my $cmd = Test::Command->new(cmd => "/tmp/fping.copy 127.0.0.1");
|
||||||
|
$cmd->exit_is_num(4);
|
||||||
|
$cmd->stdout_is_eq("");
|
||||||
|
$cmd->stderr_like(qr{: can't create socket \(must run as root\?\)});
|
||||||
|
}
|
@ -1,57 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
|
|
||||||
use English;
|
|
||||||
use Test::Command;
|
|
||||||
use Test::More;
|
|
||||||
|
|
||||||
if( $^O eq 'darwin' ) {
|
|
||||||
plan skip_all => 'Test irrelevant on MacOS';
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_ping_gid_range {
|
|
||||||
open FD, "/proc/sys/net/ipv4/ping_group_range" or return undef;
|
|
||||||
chomp(my $line = <FD>);
|
|
||||||
my @range = split(/\s+/, $line);
|
|
||||||
close FD;
|
|
||||||
return @range;
|
|
||||||
}
|
|
||||||
|
|
||||||
my @gids = split(' ', $EGID);
|
|
||||||
my @allowed = get_ping_gid_range();
|
|
||||||
|
|
||||||
# Make a copy of the binary so that we get rid of setuid bit
|
|
||||||
my $fping_bin = `which fping`; chomp $fping_bin;
|
|
||||||
system("cp $fping_bin /tmp/fping.copy; chmod +x /tmp/fping.copy");
|
|
||||||
|
|
||||||
# Determine what test to run, based on whether unprivileged
|
|
||||||
# pings are allowed.
|
|
||||||
if(scalar grep { $_ >= $allowed[0] && $_ <= $allowed[1] } @gids) {
|
|
||||||
diag('test unprivileged mode');
|
|
||||||
test_unprivileged_works();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
test_privileged_fails();
|
|
||||||
}
|
|
||||||
|
|
||||||
sub test_unprivileged_works {
|
|
||||||
plan tests => 3;
|
|
||||||
|
|
||||||
{
|
|
||||||
my $cmd = Test::Command->new(cmd => "fping 127.0.0.1");
|
|
||||||
$cmd->exit_is_num(0);
|
|
||||||
$cmd->stdout_is_eq("127.0.0.1 is alive\n");
|
|
||||||
$cmd->stderr_is_eq("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub test_privileged_fails {
|
|
||||||
plan tests => 3;
|
|
||||||
|
|
||||||
{
|
|
||||||
my $cmd = Test::Command->new(cmd => "/tmp/fping.copy 127.0.0.1");
|
|
||||||
$cmd->exit_is_num(4);
|
|
||||||
$cmd->stdout_is_eq("");
|
|
||||||
$cmd->stderr_like(qr{: can't create socket \(must run as root\?\)});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +1,10 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
use Test::Command tests => 84;
|
use Test::Command tests => 33;
|
||||||
use Test::More;
|
|
||||||
|
|
||||||
# some options require a numeric argument
|
for my $arg (qw(b B c C H i O p Q r t)) {
|
||||||
for my $arg (qw(b B c C H i O p Q r t x X)) {
|
my $cmd = Test::Command->new(cmd => "fping -$arg xxx");
|
||||||
for my $test_input (qw(xxx '')) {
|
|
||||||
my $cmd = Test::Command->new(cmd => "fping -$arg $test_input");
|
|
||||||
$cmd->exit_is_num(1);
|
$cmd->exit_is_num(1);
|
||||||
$cmd->stdout_is_eq("");
|
$cmd->stdout_is_eq("");
|
||||||
$cmd->stderr_like(qr{Usage:});
|
$cmd->stderr_like(qr{Usage:});
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# fping -k, only supported on Linux, requires a number
|
|
||||||
SKIP: {
|
|
||||||
if($^O ne 'linux') {
|
|
||||||
skip '-k option is only supported on Linux', 6;
|
|
||||||
}
|
|
||||||
for my $test_input (qw(xxx '')) {
|
|
||||||
my $cmd = Test::Command->new(cmd => "fping -k $test_input 127.0.0.1");
|
|
||||||
$cmd->exit_is_num(1);
|
|
||||||
$cmd->stdout_is_eq("");
|
|
||||||
$cmd->stderr_like(qr{Usage:});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
FROM ubuntu:20.04
|
|
||||||
|
|
||||||
# Base
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
build-essential \
|
|
||||||
automake \
|
|
||||||
m4
|
|
||||||
|
|
||||||
# Add source code
|
|
||||||
COPY ./ /app
|
|
||||||
|
|
||||||
# Compile
|
|
||||||
WORKDIR /app
|
|
||||||
RUN autoreconf --install
|
|
||||||
RUN ./configure && make && make install
|
|
||||||
ENTRYPOINT ["fping"]
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue