MODULE_LICENSE("GPL"); static int pm_event(struct notifier_block *this, unsigned long event,void *ptr) { return NOTIFY_OK; } static int netdev_event(struct notifier_block *this, unsigned long event,void *ptr) { struct net_device *net_dev = (struct net_device *)ptr; DEBUGP_P1(DL_TRACE,"Device %s\n",net_dev->name); switch (event){ case NETDEV_DOWN: DEBUGP(DL_TRACE,"NETDEV_DOWN\n"); break; case NETDEV_REGISTER: DEBUGP(DL_TRACE,"NETDEV_REGISTER\n"); break; case NETDEV_UP: DEBUGP(DL_TRACE,"NETDEV_UP\n"); break; case NETDEV_CHANGE: DEBUGP(DL_TRACE,"NETDEV_CHANGE\n"); break; case NETDEV_UNREGISTER: DEBUGP(DL_TRACE,"NETDEV_UNREGISTER\n"); break; default: DEBUGP(DL_TRACE,"Unknown netdev notification\n"); break; } return NOTIFY_OK; } struct notifier_block net_device_notifier = { .notifier_call = netdev_event }; struct notifier_block powerm_notifier = { .notifier_call = pm_event }; static int proto_init(void) { int i = 0; DEBUGP(DL_TRACE,"---->wibrouio_init\n"); i = register_netdevice_notifier(&net_device_notifier); // TODO: FIX THIS .DOES NOT WORK ! WHY? //i = register_pm_notifier(&powerm_notifier); DEBUGP(DL_TRACE,"<----wibrouio_init\n"); return 0; } static void proto_exit(void) { DEBUGP(DL_TRACE,"---->wibrouio_exit\n"); unregister_netdevice_notifier(&net_device_notifier); // TODO: FIX THIS .DOES NOT WORK ! WHY? //unregister_pm_notifier(&powerm_notifier); DEBUGP(DL_TRACE,"---->wibrouio_exit\n"); } module_init(proto_init); module_exit(proto_exit);