diff --git a/extensions/libxt_HARDIDLETIMER.c b/extensions/libxt_HARDIDLETIMER.c
new file mode 100644
index 0000000..a375e0e
--- /dev/null
+++ b/extensions/libxt_HARDIDLETIMER.c
@@ -0,0 +1,98 @@
+/*
+ * Shared library add-on for iptables to add HARDIDLETIMER support.
+ *
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * Copyright (C) 2010 Nokia Corporation. All rights reserved.
+ *
+ * Contact: Luciano Coelho <luciano.coelho@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+#include <stdio.h>
+#include <xtables.h>
+#include <linux/netfilter/xt_HARDIDLETIMER.h>
+
+enum {
+	O_TIMEOUT = 0,
+	O_LABEL,
+	O_NETLINK,
+};
+
+#define s struct hardidletimer_tg_info
+static const struct xt_option_entry hardidletimer_tg_opts[] = {
+	{.name = "timeout", .id = O_TIMEOUT, .type = XTTYPE_UINT32,
+	 .flags = XTOPT_MAND | XTOPT_PUT, XTOPT_POINTER(s, timeout)},
+	{.name = "label", .id = O_LABEL, .type = XTTYPE_STRING,
+	 .flags = XTOPT_MAND | XTOPT_PUT, XTOPT_POINTER(s, label)},
+	{.name = "send_nl_msg", .id = O_NETLINK, .type = XTTYPE_UINT8,
+	 .flags = XTOPT_PUT, XTOPT_POINTER(s, send_nl_msg)},
+	XTOPT_TABLEEND,
+};
+#undef s
+
+static void hardidletimer_tg_help(void)
+{
+	printf(
+	"HARDIDLETIMER target options:\n"
+	" --timeout time	Timeout until the notification is sent (in seconds)\n"
+	" --label string	Unique rule identifier\n"
+	" --send_nl_msg	(0/1) Enable netlink messages,"
+	"and show remaining time in sysfs. Defaults to 0.\n"
+	"\n");
+}
+
+static void hardidletimer_tg_print(const void *ip,
+			       const struct xt_entry_target *target,
+			       int numeric)
+{
+	struct hardidletimer_tg_info *info =
+		(struct hardidletimer_tg_info *) target->data;
+
+	printf(" timeout:%u", info->timeout);
+	printf(" label:%s", info->label);
+	printf(" send_nl_msg:%u", info->send_nl_msg);
+}
+
+static void hardidletimer_tg_save(const void *ip,
+			      const struct xt_entry_target *target)
+{
+	struct hardidletimer_tg_info *info =
+		(struct hardidletimer_tg_info *) target->data;
+
+	printf(" --timeout %u", info->timeout);
+	printf(" --label %s", info->label);
+	printf(" --send_nl_msg %u", info->send_nl_msg);
+}
+
+static struct xtables_target hardidletimer_tg_reg = {
+	.family		= NFPROTO_UNSPEC,
+	.name		= "HARDIDLETIMER",
+	.version	= XTABLES_VERSION,
+	.revision	= 1,
+	.size		= XT_ALIGN(sizeof(struct hardidletimer_tg_info)),
+	.userspacesize	= offsetof(struct hardidletimer_tg_info, timer),
+	.help		= hardidletimer_tg_help,
+	.x6_parse	= xtables_option_parse,
+	.print		= hardidletimer_tg_print,
+	.save		= hardidletimer_tg_save,
+	.x6_options	= hardidletimer_tg_opts,
+};
+
+void _init(void)
+{
+	xtables_register_target(&hardidletimer_tg_reg);
+}
diff --git a/extensions/libxt_HARDIDLETIMER.man b/extensions/libxt_HARDIDLETIMER.man
new file mode 100644
index 0000000..e7e3124
--- /dev/null
+++ b/extensions/libxt_HARDIDLETIMER.man
@@ -0,0 +1,24 @@
+This target can be used to identify when interfaces have been idle for a
+certain period of time.  Timers are identified by labels and are created when
+a rule is set with a new label.  The rules also take a timeout value (in
+seconds) as an option.  If more than one rule uses the same timer label, the
+timer will be restarted whenever any of the rules get a hit.  One entry for
+each timer is created in sysfs.  This attribute contains the timer remaining
+for the timer to expire.  The attributes are located under the xt_hardidletimer
+class:
+.PP
+/sys/class/xt_hardidletimer/timers/<label>
+.PP
+When the timer expires, the target module sends a sysfs notification to the
+userspace, which can then decide what to do (eg. disconnect to save power).
+.TP
+\fB\-\-timeout\fP \fIamount\fP
+This is the time in seconds that will trigger the notification.
+.TP
+\fB\-\-label\fP \fIstring\fP
+This is a unique identifier for the timer.  The maximum length for the
+label string is 27 characters.
+.TP
+\fB\-\---send_nl_msg\fP \fI(0/1)\fP
+Send netlink messages in addition to sysfs notifications and show remaining
+time. Defaults to 0.
diff --git a/include/linux/netfilter/xt_HARDIDLETIMER.h b/include/linux/netfilter/xt_HARDIDLETIMER.h
new file mode 100644
index 0000000..58ff608
--- /dev/null
+++ b/include/linux/netfilter/xt_HARDIDLETIMER.h
@@ -0,0 +1,55 @@
+/*
+ * linux/include/linux/netfilter/xt_HARDIDLETIMER.h
+ *
+ * Header file for Xtables timer target module.
+ *
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * Copyright (C) 2004, 2010 Nokia Corporation
+ *
+ * Written by Timo Teras <ext-timo.teras@nokia.com>
+ *
+ * Converted to x_tables and forward-ported to 2.6.34
+ * by Luciano Coelho <luciano.coelho@nokia.com>
+ *
+ * Contact: Luciano Coelho <luciano.coelho@nokia.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#ifndef _XT_HARDIDLETIMER_H
+#define _XT_HARDIDLETIMER_H
+
+#include <linux/types.h>
+
+#define MAX_HARDIDLETIMER_LABEL_SIZE 28
+#define NLMSG_MAX_SIZE 64
+
+#define NL_EVENT_TYPE_INACTIVE 0
+#define NL_EVENT_TYPE_ACTIVE 1
+
+struct hardidletimer_tg_info {
+	__u32 timeout;
+
+	char label[MAX_HARDIDLETIMER_LABEL_SIZE];
+
+	/* Use netlink messages for notification in addition to sysfs */
+	__u8 send_nl_msg;
+
+	/* for kernel module internal use only */
+	struct hardidletimer_tg *timer __attribute__((aligned(8)));
+};
+
+#endif
