ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/net/htpdate/Makefile b/external/subpack/net/htpdate/Makefile
new file mode 100644
index 0000000..acb0b0d
--- /dev/null
+++ b/external/subpack/net/htpdate/Makefile
@@ -0,0 +1,61 @@
+#
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=htpdate
+PKG_VERSION:=1.1.1
+PKG_RELEASE:=5
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=http://www.vervest.org/htp/archive/c/
+PKG_HASH:=0d75f91cb61f8869c8298d198fa52b9a139ae505b366e9d4d331af8bc1c04880
+
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/htpdate
+ SUBMENU:=Time Synchronization
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=an HTP (Hypertext Time Protocol) implementation
+ URL:=http://www.vervest.com/htp/
+ MAINTAINER:=Tijs Van Buggenhout <tvbuggen@netzerk.be>, \
+ Marcin Jurkowski <marcin1j@gmail.com>
+endef
+
+define Package/htpdate/description
+ The HTTP Time Protocol (HTP) is used to synchronize a computer's time
+ with web servers as reference time source. Htpdate will synchronize your
+ computer's time by extracting timestamps from HTTP headers found
+ in web server responses. Htpdate can be used as a daemon, to keep your
+ computer synchronized.
+endef
+
+define Package/htpdate/conffiles
+/etc/config/htpdate
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS)"
+endef
+
+define Package/htpdate/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/htpdate $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc/config/
+ $(INSTALL_CONF) ./files/htpdate.conf $(1)/etc/config/htpdate
+ $(INSTALL_DIR) $(1)/etc/init.d/
+ $(INSTALL_BIN) ./files/htpdate.init $(1)/etc/init.d/htpdate
+endef
+
+$(eval $(call BuildPackage,htpdate))
+
diff --git a/external/subpack/net/htpdate/files/htpdate.conf b/external/subpack/net/htpdate/files/htpdate.conf
new file mode 100644
index 0000000..b2c134a
--- /dev/null
+++ b/external/subpack/net/htpdate/files/htpdate.conf
@@ -0,0 +1,10 @@
+config htpdate 'htpdate'
+ option enabled 1
+ list server 'www.google.com'
+ list server 'www.yahoo.com'
+ list server 'www.linux.com'
+ option proxy_host ''
+ option proxy_port '8080'
+ option debug 0
+ option sanity_check 1
+ #list option '-4'
diff --git a/external/subpack/net/htpdate/files/htpdate.init b/external/subpack/net/htpdate/files/htpdate.init
new file mode 100644
index 0000000..2edd44d
--- /dev/null
+++ b/external/subpack/net/htpdate/files/htpdate.init
@@ -0,0 +1,58 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=49
+USE_PROCD=1
+PROG=/usr/sbin/htpdate
+
+
+
+
+validate_htpdate_section() {
+ uci_load_validate htpdate htpdate "$1" "$2" \
+ 'server:list(host)' \
+ 'proxy_host:host' \
+ 'proxy_port:port:8080' \
+ 'debug:bool:0' \
+ 'sanity_check:bool:1' \
+ 'option:list(string)' \
+ 'enabled:bool:1'
+}
+
+
+start_htpdate_instance() {
+ local peer
+
+ [ "$2" = 0 ] || {
+ echo "validation failed"
+ return 1
+ }
+
+ [ "$enabled" = 0 ] && return
+
+
+ procd_open_instance
+ procd_set_param command "$PROG" -f
+
+ [ -n "$proxy_host" ] && procd_append_param command -P $proxy_host:$proxy_port
+ [ "$debug" = "1" ] && procd_append_param command -d
+ [ "$sanity_check" = "0" ] && procd_append_param command -t
+ [ -n "$option" ] && procd_append_param command $option
+ for peer in $server; do
+ procd_append_param command $peer
+ done
+
+ procd_set_param stdout 1
+ procd_set_param stderr 1
+ procd_set_param respawn
+ procd_close_instance
+}
+
+start_service() {
+ validate_htpdate_section htpdate start_htpdate_instance
+}
+
+service_triggers() {
+ procd_add_reload_trigger "htpdate"
+ procd_add_validation validate_htpdate_section
+}
diff --git a/external/subpack/net/htpdate/patches/100-adjtimex.patch b/external/subpack/net/htpdate/patches/100-adjtimex.patch
new file mode 100644
index 0000000..ec7c8a9
--- /dev/null
+++ b/external/subpack/net/htpdate/patches/100-adjtimex.patch
@@ -0,0 +1,20 @@
+--- a/htpdate.c
++++ b/htpdate.c
+@@ -359,7 +359,7 @@ static int htpdate_adjtimex( double drif
+
+ /* Read current kernel frequency */
+ tmx.modes = 0;
+- ntp_adjtime(&tmx);
++ adjtimex(&tmx);
+
+ /* Calculate new frequency */
+ freq = (long)(65536e6 * drift);
+@@ -377,7 +377,7 @@ static int htpdate_adjtimex( double drif
+ printlog( 1, "seteuid()" );
+ exit(1);
+ } else {
+- return( ntp_adjtime(&tmx) );
++ return( adjtimex(&tmx) );
+ }
+
+ }
diff --git a/external/subpack/net/htpdate/patches/101-daemon-run-in-foreground.patch b/external/subpack/net/htpdate/patches/101-daemon-run-in-foreground.patch
new file mode 100644
index 0000000..a68365a
--- /dev/null
+++ b/external/subpack/net/htpdate/patches/101-daemon-run-in-foreground.patch
@@ -0,0 +1,40 @@
+--- a/htpdate.c
++++ b/htpdate.c
+@@ -395,6 +395,7 @@ Usage: htpdate [-046abdhlqstxD] [-i pid
+ -b burst mode\n\
+ -d debug mode\n\
+ -D daemon mode\n\
++ -f run in foreground\n\
+ -h help\n\
+ -i pid file\n\
+ -l use syslog for output\n\
+@@ -510,7 +511,7 @@ int main( int argc, char *argv[] ) {
+
+
+ /* Parse the command line switches and arguments */
+- while ( (param = getopt(argc, argv, "046abdhi:lm:p:qstu:xDM:P:") ) != -1)
++ while ( (param = getopt(argc, argv, "046abdhi:lm:p:qstu:xDfM:P:") ) != -1)
+ switch( param ) {
+
+ case '0': /* HTTP/1.0 */
+@@ -593,6 +594,9 @@ int main( int argc, char *argv[] ) {
+ daemonize = 1;
+ logmode = 1;
+ break;
++ case 'f': /* run in foreground */
++ daemonize = 2;
++ break;
+ case 'M': /* maximum poll interval */
+ if ( ( maxsleep = atoi(optarg) ) <= 0 ) {
+ fputs( "Invalid sleep time\n", stderr );
+@@ -631,7 +635,9 @@ int main( int argc, char *argv[] ) {
+
+ /* Run as a daemonize when -D is set */
+ if ( daemonize ) {
+- runasdaemon( pidfile );
++ if ( daemonize == 1 ) {
++ runasdaemon( pidfile );
++ }
+ /* Query only mode doesn't exist in daemon mode */
+ if ( !setmode )
+ setmode = 1;