#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/timer.h>
#include <linux/alarmtimer.h>
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/netfilter.h>
#include <linux/netfilter/x_tables.h>
#include <linux/netfilter/xt_IDLETIMER.h>
#include <linux/kdev_t.h>
#include <linux/kobject.h>
#include <linux/workqueue.h>
#include <linux/sysfs.h>
struct idletimer_tg { … };
static LIST_HEAD(idletimer_tg_list);
static DEFINE_MUTEX(list_mutex);
static struct kobject *idletimer_tg_kobj;
static
struct idletimer_tg *__idletimer_tg_find_by_label(const char *label)
{ … }
static ssize_t idletimer_tg_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static void idletimer_tg_work(struct work_struct *work)
{ … }
static void idletimer_tg_expired(struct timer_list *t)
{ … }
static enum alarmtimer_restart idletimer_tg_alarmproc(struct alarm *alarm,
ktime_t now)
{ … }
static int idletimer_check_sysfs_name(const char *name, unsigned int size)
{ … }
static int idletimer_tg_create(struct idletimer_tg_info *info)
{ … }
static int idletimer_tg_create_v1(struct idletimer_tg_info_v1 *info)
{ … }
static unsigned int idletimer_tg_target(struct sk_buff *skb,
const struct xt_action_param *par)
{ … }
static unsigned int idletimer_tg_target_v1(struct sk_buff *skb,
const struct xt_action_param *par)
{ … }
static int idletimer_tg_helper(struct idletimer_tg_info *info)
{ … }
static int idletimer_tg_checkentry(const struct xt_tgchk_param *par)
{ … }
static int idletimer_tg_checkentry_v1(const struct xt_tgchk_param *par)
{ … }
static void idletimer_tg_destroy(const struct xt_tgdtor_param *par)
{ … }
static void idletimer_tg_destroy_v1(const struct xt_tgdtor_param *par)
{ … }
static struct xt_target idletimer_tg[] __read_mostly = …;
static struct class *idletimer_tg_class;
static struct device *idletimer_tg_device;
static int __init idletimer_tg_init(void)
{ … }
static void __exit idletimer_tg_exit(void)
{ … }
module_init(…) …;
module_exit(idletimer_tg_exit);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;
MODULE_ALIAS(…) …;