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;