atlas-probe: add new package

Signed-off-by: Jan Pavlinec <jan.pavlinec@nic.cz>
This commit is contained in:
Jan Pavlinec 2021-03-26 12:58:59 +01:00
parent 58936f4420
commit cb30c106c0
No known key found for this signature in database
GPG Key ID: 60244CCEFB39E584
2 changed files with 248 additions and 0 deletions

70
net/atlas-probe/Makefile Normal file
View File

@ -0,0 +1,70 @@
#
# Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (https://www.nic.cz/)
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=atlas-probe
PKG_VERSION:=2.2.1
PKG_RELEASE:=1
PKG_SOURCE:=ripe-atlas-probe-busybox-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/RIPE-NCC/ripe-atlas-probe-busybox/archive/v$(PKG_VERSION)
PKG_HASH:=c5a3aca026cd1a3b93a77b159b36cd7a1098eb6d90e9ae4a69872cd7a419a87b
PKG_BUILD_DIR:=$(BUILD_DIR)/ripe-atlas-probe-busybox-$(PKG_VERSION)
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSE
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
define Package/atlas-probe
SECTION:=net
CATEGORY:=Network
TITLE:=RIPE Atlas probe measurement
DEPENDS:=+librt +libopenssl +openssh-client +sudo
USERID:=atlas=444:atlas=444
URL:=https://atlas.ripe.net/
endef
define Package/atlas-probe/description
RIPE Atlas is a global, open, distributed Internet measurement platform,
consisting of thousands of measurement devices that measure Internet
connectivity in real time.
endef
TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \
--disable-shared \
--enable-static
CONFIGURE_PATH = libevent-2.1.11-stable
TARGET_LDFLAGS = -L$(PKG_BUILD_DIR)/$(CONFIGURE_PATH)/.libs
define Build/Compile
+$(MAKE_VARS) \
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(CONFIGURE_PATH) \
$(MAKE_FLAGS)
+$(MAKE_VARS) \
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
$(MAKE_FLAGS)
endef
define Package/atlas-probe/install
+$(MAKE_VARS) \
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
$(MAKE_FLAGS) CONFIG_PREFIX=$(1)/usr/libexec/atlas-probe install
$(INSTALL_DIR) $(1)/usr/libexec/atlas-probe/state
echo $(PKG_VERSION) > $(1)/usr/libexec/atlas-probe/state/VERSION
endef
$(eval $(call BuildPackage,atlas-probe))

View File

@ -0,0 +1,178 @@
From 402150eed057fc9fa52c8471ae645e23913a2805 Mon Sep 17 00:00:00 2001
From: Philip Homburg <phomburg@ripe.net>
Date: Tue, 23 Jun 2020 12:25:08 -0400
Subject: [PATCH] replace stime with clock_settime
---
coreutils/date.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -246,6 +246,9 @@ int date_main(int argc UNUSED_PARAM, cha
if (*argv)
bb_show_usage();
+ /* Clear ts.tv_nsec, in case we need to set the time later */
+ ts.tv_nsec= 0;
+
/* Now we have parsed all the information except the date format
* which depends on whether the clock is being set or read */
@@ -310,7 +313,7 @@ int date_main(int argc UNUSED_PARAM, cha
}
/* if setting time, set it */
- if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
+ if ((opt & OPT_SET) && clock_settime(CLOCK_REALTIME, &ts) < 0) {
bb_perror_msg("can't set date");
}
}
--- a/util-linux/rdate.c
+++ b/util-linux/rdate.c
@@ -65,27 +65,27 @@ static time_t askremotedate(const char *
int rdate_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int rdate_main(int argc UNUSED_PARAM, char **argv)
{
- time_t remote_time;
+ struct timespec remote_time;
unsigned flags;
opt_complementary = "-1";
flags = getopt32(argv, "sp");
- remote_time = askremotedate(argv[optind]);
+ remote_time.tv_sec = askremotedate(argv[optind]);
if (!(flags & 2)) { /* no -p (-s may be present) */
time_t current_time;
time(&current_time);
- if (current_time == remote_time)
+ if (current_time == remote_time.tv_sec)
bb_error_msg("current time matches remote time");
else
- if (stime(&remote_time) < 0)
+ if (clock_settime(CLOCK_REALTIME,&remote_time) < 0)
bb_perror_msg_and_die("can't set time of day");
}
if (flags != 1) /* not lone -s */
- printf("%s", ctime(&remote_time));
+ printf("%s", ctime(&remote_time.tv_sec));
return EXIT_SUCCESS;
}
--- a/networking/httpget.c
+++ b/networking/httpget.c
@@ -947,8 +947,9 @@ static int eat_headers(FILE *tcp_file, i
if (time_tolerance && strncmp(line, "Date: ", 6) == 0)
{
/* Try to set time from server */
- time_t now, tim, tolerance;
+ time_t now, tolerance;
struct tm tm;
+ struct timespec tim;
tolerance= strtoul(time_tolerance, &cp, 10);
if (cp[0] != '\0')
@@ -966,16 +967,16 @@ static int eat_headers(FILE *tcp_file, i
line+6);
}
}
- tim= timegm(&tm);
+ tim.tv_sec= timegm(&tm);
now= time(NULL);
- if (now < tim-tolerance || now > tim+tolerance)
+ if (now < tim.tv_sec-tolerance || now > tim.tv_sec+tolerance)
{
if (debug)
{ fprintf(stderr,
"setting time, time difference is %d\n",
- (int)(tim-now));
+ (int)(tim.tv_sec-now));
}
- stime(&tim);
+ clock_settime(CLOCK_REALTIME,&tim);
}
}
--- a/networking/httppost.c
+++ b/networking/httppost.c
@@ -92,13 +92,14 @@ int httppost_main(int argc, char *argv[]
char *time_tolerance, *rebased_fn= NULL;
char *fn_new, *fn;
FILE *tcp_file, *out_file, *fh;
- time_t server_time, tolerance;
+ time_t tolerance;
+ struct timespec server_time;
struct stat sbF, sbH, sbS;
off_t cLength, dir_length, maxpostsize;
struct sigaction sa;
- post_dir= NULL;
- post_file= NULL;
+ post_dir= NULL;
+ post_file= NULL;
post_footer=NULL;
post_header=NULL;
atlas_id= NULL;
@@ -470,12 +471,12 @@ int httppost_main(int argc, char *argv[]
if (!check_result(tcp_file))
goto err;
fprintf(stderr, "httppost: getting reply headers \n");
- server_time= 0;
+ server_time.tv_sec = 0;
content_length= -1;
- if (!eat_headers(tcp_file, &chunked, &content_length, &server_time))
+ if (!eat_headers(tcp_file, &chunked, &content_length, &server_time.tv_sec))
goto err;
- if (tolerance && server_time > 0)
+ if (tolerance && server_time.tv_sec > 0)
{
/* Try to set time from server */
int need_set_time;
@@ -486,35 +487,35 @@ int httppost_main(int argc, char *argv[]
rtt= now.tv_sec-start_time.tv_sec;
rtt += (now.tv_usec-start_time.tv_usec)/1e6;
if (rtt < 0) rtt= 0;
- need_set_time= (now.tv_sec < server_time-tolerance-rtt ||
- now.tv_sec > server_time+tolerance+rtt);
+ need_set_time= (now.tv_sec < server_time.tv_sec-tolerance-rtt ||
+ now.tv_sec > server_time.tv_sec+tolerance+rtt);
if (need_set_time && getenv("HTTPPOST_ALLOW_STIME"))
{
fprintf(stderr,
"setting time, time difference is %ld\n",
- (long)server_time-now.tv_sec);
- stime(&server_time);
+ (long)server_time.tv_sec-now.tv_sec);
+ clock_settime(CLOCK_REALTIME,&server_time);
if (atlas_id)
{
printf(
"RESULT %s ongoing %ld httppost setting time, local %ld, remote %ld\n",
atlas_id, (long)time(NULL),
(long)now.tv_sec,
- (long)server_time);
+ (long)server_time.tv_sec);
}
}
else if (need_set_time)
{
fprintf(stderr,
"not setting time, time difference is %ld\n",
- (long)server_time-now.tv_sec);
+ (long)server_time.tv_sec-now.tv_sec);
if (atlas_id)
{
printf(
"RESULT %s ongoing %ld httppost not in sync, local %ld, remote %ld\n",
atlas_id, (long)time(NULL),
(long)now.tv_sec,
- (long)server_time);
+ (long)server_time.tv_sec);
}
}
else if (rtt <= 1)