Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.16 KB | None | 0 0
  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. #include <linux/kernel.h>
  4. #include <linux/netdevice.h>
  5.  
  6. MODULE_LICENSE("GPL");
  7.  
  8. rx_handler_result_t (*old_func_ptr)(struct sk_buff **);
  9.  
  10.  
  11. rx_handler_result_t pack_handler (struct sk_buff **pskb) {
  12.    
  13.     struct sk_buff *skbuff = *pskb;
  14.    
  15.     printk (KERN_INFO "SK_BUFF_INFO: mac_len = %d", skbuff->mac_len);
  16.     printk (KERN_INFO "proto_id = %hd \n", ntohs(skbuff->protocol));
  17.  
  18.     return RX_HANDLER_PASS;
  19. }
  20.  
  21. static int __init mod_init (void) {
  22.  
  23.     struct net_device * dev;
  24.  
  25.     dev = first_net_device (&init_net);
  26.    
  27.     while (dev) {
  28. //      if (dev->rx_handler != NULL) {
  29.             old_func_ptr = dev->rx_handler;
  30.             dev->rx_handler = pack_handler;
  31.             printk (KERN_INFO "ptr = %p \n", old_func_ptr);
  32. //      }
  33.  
  34.         printk (KERN_INFO "name = %s \n", dev->name);
  35.  
  36.         printk (KERN_INFO "pointer = %p \n", dev->rx_handler);
  37.  
  38.  
  39.         printk (KERN_INFO "RX packets = %lu \n", dev->stats.rx_packets);
  40.         printk (KERN_INFO "TX packets = %lu \n", dev->stats.tx_packets);
  41.         dev = next_net_device(dev);
  42.     }
  43.  
  44.     return 0;
  45. }
  46.  
  47. static void  __exit mod_exit (void) {
  48.     printk (KERN_INFO "Bye! \n");
  49. }
  50.  
  51. module_init(mod_init);
  52. module_exit(mod_exit);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement