diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-20 20:43:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-20 20:43:29 -0400 |
commit | db6d8c7a4027b48d797b369a53f8470aaeed7063 (patch) | |
tree | e140c104a89abc2154e1f41a7db8ebecbb6fa0b4 /net/bridge/br.c | |
parent | 3a533374283aea50eab3976d8a6d30532175f009 (diff) | |
parent | fb65a7c091529bfffb1262515252c0d0f6241c5c (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (1232 commits)
iucv: Fix bad merging.
net_sched: Add size table for qdiscs
net_sched: Add accessor function for packet length for qdiscs
net_sched: Add qdisc_enqueue wrapper
highmem: Export totalhigh_pages.
ipv6 mcast: Omit redundant address family checks in ip6_mc_source().
net: Use standard structures for generic socket address structures.
ipv6 netns: Make several "global" sysctl variables namespace aware.
netns: Use net_eq() to compare net-namespaces for optimization.
ipv6: remove unused macros from net/ipv6.h
ipv6: remove unused parameter from ip6_ra_control
tcp: fix kernel panic with listening_get_next
tcp: Remove redundant checks when setting eff_sacks
tcp: options clean up
tcp: Fix MD5 signatures for non-linear skbs
sctp: Update sctp global memory limit allocations.
sctp: remove unnecessary byteshifting, calculate directly in big-endian
sctp: Allow only 1 listening socket with SO_REUSEADDR
sctp: Do not leak memory on multiple listen() calls
sctp: Support ipv6only AF_INET6 sockets.
...
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 | ||