|
@@ -210,6 +210,17 @@ void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb,
|
|
bpdu.hello_time = br_get_ticks(buf+28);
|
|
bpdu.hello_time = br_get_ticks(buf+28);
|
|
bpdu.forward_delay = br_get_ticks(buf+30);
|
|
bpdu.forward_delay = br_get_ticks(buf+30);
|
|
|
|
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+
|
|
br_received_config_bpdu(p, &bpdu);
|
|
br_received_config_bpdu(p, &bpdu);
|
|
}
|
|
}
|
|
|
|
|