Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/netdevice.h>
- MODULE_LICENSE("GPL");
- rx_handler_result_t (*old_func_ptr)(struct sk_buff **);
- rx_handler_result_t pack_handler (struct sk_buff **pskb) {
- struct sk_buff *skbuff = *pskb;
- printk (KERN_INFO "SK_BUFF_INFO: mac_len = %d", skbuff->mac_len);
- printk (KERN_INFO "proto_id = %hd \n", ntohs(skbuff->protocol));
- return RX_HANDLER_PASS;
- }
- static int __init mod_init (void) {
- struct net_device * dev;
- dev = first_net_device (&init_net);
- while (dev) {
- // if (dev->rx_handler != NULL) {
- old_func_ptr = dev->rx_handler;
- dev->rx_handler = pack_handler;
- printk (KERN_INFO "ptr = %p \n", old_func_ptr);
- // }
- printk (KERN_INFO "name = %s \n", dev->name);
- printk (KERN_INFO "pointer = %p \n", dev->rx_handler);
- printk (KERN_INFO "RX packets = %lu \n", dev->stats.rx_packets);
- printk (KERN_INFO "TX packets = %lu \n", dev->stats.tx_packets);
- dev = next_net_device(dev);
- }
- return 0;
- }
- static void __exit mod_exit (void) {
- printk (KERN_INFO "Bye! \n");
- }
- module_init(mod_init);
- module_exit(mod_exit);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement