br.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Generic parts
  3.  * Linux ethernet bridge
  4.  *
  5.  * Authors:
  6.  * Lennert Buytenhek <buytenh@gnu.org>
  7.  *
  8.  * $Id: br.c,v 1.46.2.1 2001/12/24 00:56:13 davem Exp $
  9.  *
  10.  * This program is free software; you can redistribute it and/or
  11.  * modify it under the terms of the GNU General Public License
  12.  * as published by the Free Software Foundation; either version
  13.  * 2 of the License, or (at your option) any later version.
  14.  */
  15. #include <linux/config.h>
  16. #include <linux/module.h>
  17. #include <linux/kernel.h>
  18. #include <linux/miscdevice.h>
  19. #include <linux/netdevice.h>
  20. #include <linux/etherdevice.h>
  21. #include <linux/init.h>
  22. #include <linux/if_bridge.h>
  23. #include <asm/uaccess.h>
  24. #include "br_private.h"
  25. #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
  26. #include "../atm/lec.h"
  27. #endif
  28. void br_dec_use_count()
  29. {
  30. MOD_DEC_USE_COUNT;
  31. }
  32. void br_inc_use_count()
  33. {
  34. MOD_INC_USE_COUNT;
  35. }
  36. static int __init br_init(void)
  37. {
  38. printk(KERN_INFO "NET4: Ethernet Bridge 008 for NET4.0n");
  39. br_handle_frame_hook = br_handle_frame;
  40. br_ioctl_hook = br_ioctl_deviceless_stub;
  41. #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
  42. br_fdb_get_hook = br_fdb_get;
  43. br_fdb_put_hook = br_fdb_put;
  44. #endif
  45. register_netdevice_notifier(&br_device_notifier);
  46. return 0;
  47. }
  48. static void __br_clear_frame_hook(void)
  49. {
  50. br_handle_frame_hook = NULL;
  51. }
  52. static void __br_clear_ioctl_hook(void)
  53. {
  54. br_ioctl_hook = NULL;
  55. }
  56. static void __exit br_deinit(void)
  57. {
  58. unregister_netdevice_notifier(&br_device_notifier);
  59. br_call_ioctl_atomic(__br_clear_ioctl_hook);
  60. net_call_rx_atomic(__br_clear_frame_hook);
  61. #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
  62. br_fdb_get_hook = NULL;
  63. br_fdb_put_hook = NULL;
  64. #endif
  65. }
  66. EXPORT_NO_SYMBOLS;
  67. module_init(br_init)
  68. module_exit(br_deinit)
  69. MODULE_LICENSE("GPL");