#include <linux/netfilter_ipv4/ip_tables.h>
 #include <linux/netfilter_ipv4/ipt_IDLETIMER.h>
 #include <linux/kobject.h>
+#include <linux/workqueue.h>
 
 #if 0
 #define DEBUGP(format, args...) printk("%s:%s:" format, \
        kfree(timer);
 }
 
-static void utimer_work(void * data)
+static void utimer_work(struct work_struct *work)
 {
-       struct utimer_t *timer = (struct utimer_t *) data;
+       struct utimer_t *timer = container_of(work, struct utimer_t, work);
        struct net_device *netdev;
 
        netdev = dev_get_by_name(timer->name);
        timer->timer.function = utimer_expired;
        timer->timer.data = (unsigned long) timer;
 
-       INIT_WORK(&timer->work, utimer_work, timer);
+       INIT_WORK(&timer->work, utimer_work);
 
        DEBUGP("Created timer '%s'\n", timer->name);