#include <linux/init.h>
#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/inetdevice.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("Network Monitor Module");
static int interface_event_handler(struct notifier_block *nb, unsigned long event, void *ptr);
static struct notifier_block nb = {
.notifier_call = interface_event_handler,
};
static int __init net_monitor_init(void) {
register_netdevice_notifier(&nb);
pr_info("Network Monitor Module initialized\n");
return 0;
}
static void __exit net_monitor_exit(void) {
unregister_netdevice_notifier(&nb);
pr_info("Network Monitor Module exited\n");
}
static int interface_event_handler(struct notifier_block *nb, unsigned long event, void *ptr) {
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
if (event == NETDEV_UP) {
pr_info("Interface %s is UP\n", dev->name);
} else if (event == NETDEV_DOWN) {
pr_info("Interface %s is DOWN\n", dev->name);
}
return NOTIFY_OK;
}
module_init(net_monitor_init);
module_exit(net_monitor_exit);