diff options
Diffstat (limited to 'net/bridge/br.c')
-rw-r--r-- | net/bridge/br.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/bridge/br.c b/net/bridge/br.c index 8f3c58e5f7a5..573acdf6f9ff 100644 --- a/net/bridge/br.c +++ b/net/bridge/br.c | |||
@@ -5,8 +5,6 @@ | |||
5 | * Authors: | 5 | * Authors: |
6 | * Lennert Buytenhek <buytenh@gnu.org> | 6 | * Lennert Buytenhek <buytenh@gnu.org> |
7 | * | 7 | * |
8 | * $Id: br.c,v 1.47 2001/12/24 00:56:41 davem Exp $ | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or | 8 | * This program is free software; you can redistribute it and/or |
11 | * modify it under the terms of the GNU General Public License | 9 | * modify it under the terms of the GNU General Public License |
12 | * as published by the Free Software Foundation; either version | 10 | * as published by the Free Software Foundation; either version |
@@ -20,21 +18,24 @@ | |||
20 | #include <linux/init.h> | 18 | #include <linux/init.h> |
21 | #include <linux/llc.h> | 19 | #include <linux/llc.h> |
22 | #include <net/llc.h> | 20 | #include <net/llc.h> |
21 | #include <net/stp.h> | ||
23 | 22 | ||
24 | #include "br_private.h" | 23 | #include "br_private.h" |
25 | 24 | ||
26 | int (*br_should_route_hook)(struct sk_buff *skb); | 25 | int (*br_should_route_hook)(struct sk_buff *skb); |
27 | 26 | ||
28 | static struct llc_sap *br_stp_sap; | 27 | static const struct stp_proto br_stp_proto = { |
28 | .rcv = br_stp_rcv, | ||
29 | }; | ||
29 | 30 | ||
30 | static int __init br_init(void) | 31 | static int __init br_init(void) |
31 | { | 32 | { |
32 | int err; | 33 | int err; |
33 | 34 | ||
34 | br_stp_sap = llc_sap_open(LLC_SAP_BSPAN, br_stp_rcv); | 35 | err = stp_proto_register(&br_stp_proto); |
35 | if (!br_stp_sap) { | 36 | if (err < 0) { |
36 | printk(KERN_ERR "bridge: can't register sap for STP\n"); | 37 | printk(KERN_ERR "bridge: can't register sap for STP\n"); |
37 | return -EADDRINUSE; | 38 | return err; |
38 | } | 39 | } |
39 | 40 | ||
40 | err = br_fdb_init(); | 41 | err = br_fdb_init(); |
@@ -67,13 +68,13 @@ err_out2: | |||
67 | err_out1: | 68 | err_out1: |
68 | br_fdb_fini(); | 69 | br_fdb_fini(); |
69 | err_out: | 70 | err_out: |
70 | llc_sap_put(br_stp_sap); | 71 | stp_proto_unregister(&br_stp_proto); |
71 | return err; | 72 | return err; |
72 | } | 73 | } |
73 | 74 | ||
74 | static void __exit br_deinit(void) | 75 | static void __exit br_deinit(void) |
75 | { | 76 | { |
76 | rcu_assign_pointer(br_stp_sap->rcv_func, NULL); | 77 | stp_proto_unregister(&br_stp_proto); |
77 | 78 | ||
78 | br_netlink_fini(); | 79 | br_netlink_fini(); |
79 | unregister_netdevice_notifier(&br_device_notifier); | 80 | unregister_netdevice_notifier(&br_device_notifier); |
@@ -84,7 +85,6 @@ static void __exit br_deinit(void) | |||
84 | synchronize_net(); | 85 | synchronize_net(); |
85 | 86 | ||
86 | br_netfilter_fini(); | 87 | br_netfilter_fini(); |
87 | llc_sap_put(br_stp_sap); | ||
88 | br_fdb_get_hook = NULL; | 88 | br_fdb_get_hook = NULL; |
89 | br_fdb_put_hook = NULL; | 89 | br_fdb_put_hook = NULL; |
90 | 90 | ||