diff options
author | Bhavya Sokke Mallikarjunappa <bsokke@codeaurora.org> | 2014-06-20 17:17:17 -0700 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-22 11:09:48 -0700 |
commit | 469a150b7426d4c4b0663d6fa7dfaa0cd0b4448e (patch) | |
tree | 5e617a61f5fd6bcd08fda577b929033782ff2181 /include/uapi | |
parent | d5f660635e00722d28eb0ab0c4aadb9c5b450140 (diff) |
netfilter: xtables: hardidletimer target implementation
This patch implements a hardidletimer Xtables target that 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_idletimer class:
/sys/class/xt_hardidletimer/timers/<label>
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)
Compared to xt_IDLETIMER, xt_HARDIDLETIMER can send notifications when CPU
is in suspend too, to notify the timer expiry
Change-Id: I1723d44e02df864d63da7550766ea7d763076de2
Signed-off-by: Bhavya Sokke Mallikarjunappa <bsokke@codeaurora.org>
Diffstat (limited to 'include/uapi')
-rw-r--r-- | include/uapi/linux/netfilter/xt_HARDIDLETIMER.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/include/uapi/linux/netfilter/xt_HARDIDLETIMER.h b/include/uapi/linux/netfilter/xt_HARDIDLETIMER.h new file mode 100644 index 000000000000..58ff60899cd2 --- /dev/null +++ b/include/uapi/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 |