[ovs-dev] [STP 5/9] Add back 802.1D Spanning Tree Protocol (STP) library code.
Ben Pfaff
blp at nicira.com
Tue Oct 18 16:53:25 UTC 2011
On Mon, Oct 17, 2011 at 10:31:45PM -0700, Justin Pettit wrote:
> At one point, the OVS distribution contained an IEEE 802.1D Spanning
> Tree Protocol (STP) library written by Ben Pfaff and based on the
> 802.1D-1998 reference code. It was never integrated into ovs-vswitchd,
> so it was removed as part of commit ba18611 (Remove vestigial support
> for Spanning Tree Protocol.)
>
> This commit reintroduces the library, cleans up a few spots, and makes
> it build cleanly against new code. A future commit will have
> ovs-vswitchd use this library.
"git am" says:
Applying: Add back 802.1D Spanning Tree Protocol (STP) library code.
/home/blp/db/.git/rebase-apply/patch:241: trailing whitespace.
* arguments to 'send_bpdu' are an STP BPDU encapsulated in 'bpdu',
/home/blp/db/.git/rebase-apply/patch:1547: trailing whitespace.
#
/home/blp/db/.git/rebase-apply/patch:1995: trailing whitespace.
dump_lan_tree(struct test_case *tc, struct lan *lan, int level)
/home/blp/db/.git/rebase-apply/patch:2259: trailing whitespace.
lan = tc->lans[*token - 'a'];
/home/blp/db/.git/rebase-apply/patch:1440: new blank line at EOF.
+
warning: 5 lines add whitespace errors.
"sparse" says:
../lib/stp.c:980:1: warning: symbol 'stp_received_config_bpdu' was not
declared. Should it be static?
../lib/stp.c:1018:1: warning: symbol 'stp_received_tcn_bpdu' was not
declared. Should it be static?
You should add 2011 to the copyright notices, at least if you changed
anything.
You should use ovs_be<N> for big-endian values:
diff --git a/lib/stp.c b/lib/stp.c
index f58d640..0bdd54b 100644
--- a/lib/stp.c
+++ b/lib/stp.c
@@ -40,7 +40,7 @@ VLOG_DEFINE_THIS_MODULE(stp);
#define STP_TYPE_TCN 0x80
struct stp_bpdu_header {
- uint16_t protocol_id; /* STP_PROTOCOL_ID. */
+ ovs_be16 protocol_id; /* STP_PROTOCOL_ID. */
uint8_t protocol_version; /* STP_PROTOCOL_VERSION. */
uint8_t bpdu_type; /* One of STP_TYPE_*. */
} __attribute__((packed));
@@ -54,14 +54,14 @@ enum stp_config_bpdu_flags {
struct stp_config_bpdu {
struct stp_bpdu_header header; /* Type STP_TYPE_CONFIG. */
uint8_t flags; /* STP_CONFIG_* flags. */
- uint64_t root_id; /* 8.5.1.1: Bridge believed to be root. */
- uint32_t root_path_cost; /* 8.5.1.2: Cost of path to root. */
- uint64_t bridge_id; /* 8.5.1.3: ID of transmitting bridge. */
- uint16_t port_id; /* 8.5.1.4: Port transmitting the BPDU. */
- uint16_t message_age; /* 8.5.1.5: Age of BPDU at tx time. */
- uint16_t max_age; /* 8.5.1.6: Timeout for received data. */
- uint16_t hello_time; /* 8.5.1.7: Time between BPDU generation. */
- uint16_t forward_delay; /* 8.5.1.8: State progression delay. */
+ ovs_be64 root_id; /* 8.5.1.1: Bridge believed to be root. */
+ ovs_be32 root_path_cost; /* 8.5.1.2: Cost of path to root. */
+ ovs_be64 bridge_id; /* 8.5.1.3: ID of transmitting bridge. */
+ ovs_be16 port_id; /* 8.5.1.4: Port transmitting the BPDU. */
+ ovs_be16 message_age; /* 8.5.1.5: Age of BPDU at tx time. */
+ ovs_be16 max_age; /* 8.5.1.6: Timeout for received data. */
+ ovs_be16 hello_time; /* 8.5.1.7: Time between BPDU generation. */
+ ovs_be16 forward_delay; /* 8.5.1.8: State progression delay. */
} __attribute__((packed));
BUILD_ASSERT_DECL(sizeof(struct stp_config_bpdu) == 35);
and then we get some useful warnings from sparse (at least with the
patch to include/linux/types.h that I posted separately):
../lib/stp.c:718:26: warning: invalid assignment: |=
../lib/stp.c:718:26: left side has type unsigned char
../lib/stp.c:718:26: right side has type restricted __be16
../lib/stp.c:721:26: warning: invalid assignment: |=
../lib/stp.c:721:26: left side has type unsigned char
../lib/stp.c:721:26: right side has type restricted __be16
../lib/stp.c:779:49: warning: restricted __be16 degrades to integer
../lib/stp.c:1007:42: warning: restricted __be16 degrades to integer
I think I saw that you fixed those in the next commit though.
I didn't really read most of this patch, assuming that it was pretty
much the same as what was in the tree before.
More information about the dev
mailing list