aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_stp_bpdu.c
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2015-10-24 02:08:33 +0200
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2015-10-24 02:08:33 +0200
commitf0b9ad5690ed96f95d91ca19fba2fb2894bae6f0 (patch)
treed1b649e6f97ac0f1fc9864a296021c71cf69cd21 /net/bridge/br_stp_bpdu.c
parent272e77de798362c31e6452a46a0e7d5b6aaeb550 (diff)
downloadkernel_samsung_smdk4412-migrate_3.2.zip
kernel_samsung_smdk4412-migrate_3.2.tar.gz
kernel_samsung_smdk4412-migrate_3.2.tar.bz2
update network codemigrate_3.2
Diffstat (limited to 'net/bridge/br_stp_bpdu.c')
-rw-r--r--net/bridge/br_stp_bpdu.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c
index f26516a..718cbe8 100644
--- a/net/bridge/br_stp_bpdu.c
+++ b/net/bridge/br_stp_bpdu.c
@@ -212,10 +212,19 @@ void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb,
bpdu.hello_time = br_get_ticks(buf+28);
bpdu.forward_delay = br_get_ticks(buf+30);
- br_received_config_bpdu(p, &bpdu);
- }
+ if (bpdu.message_age > bpdu.max_age) {
+ if (net_ratelimit())
+ br_notice(p->br,
+ "port %u config from %pM"
+ " (message_age %ul > max_age %ul)\n",
+ p->port_no,
+ eth_hdr(skb)->h_source,
+ bpdu.message_age, bpdu.max_age);
+ goto out;
+ }
- else if (buf[0] == BPDU_TYPE_TCN) {
+ br_received_config_bpdu(p, &bpdu);
+ } else if (buf[0] == BPDU_TYPE_TCN) {
br_received_tcn_bpdu(p);
}
out: