* PATCH: br_stp.c:271: ignoring BPDUs if cost goes up
@ 2006-08-30 18:04 Brian Braunstein
2006-08-30 19:02 ` Stephen Hemminger
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Brian Braunstein @ 2006-08-30 18:04 UTC (permalink / raw)
To: netdev; +Cc: shemminger, rajesh_mish
PATCH
problem at: br_stp.c:271
problem: ignoring BPDUs if cost goes up
i was refered to email these addresses by the bridging code author.
please see the full problem description and patch at:
http://mesh.calit2.net/calmesh/one/linux_kernel_modifications/bridge_ignoring_bpdus/
if you would like to have it attached or inline with the email instead
let me know.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: PATCH: br_stp.c:271: ignoring BPDUs if cost goes up 2006-08-30 18:04 PATCH: br_stp.c:271: ignoring BPDUs if cost goes up Brian Braunstein @ 2006-08-30 19:02 ` Stephen Hemminger 2006-08-30 19:11 ` Stephen Hemminger 2006-08-30 21:24 ` Stephen Hemminger 2 siblings, 0 replies; 4+ messages in thread From: Stephen Hemminger @ 2006-08-30 19:02 UTC (permalink / raw) To: Brian Braunstein; +Cc: netdev, rajesh_mish On Wed, 30 Aug 2006 11:04:36 -0700 Brian Braunstein <brian@bristyle.com> wrote: > PATCH > problem at: br_stp.c:271 > problem: ignoring BPDUs if cost goes up > > i was refered to email these addresses by the bridging code author. > > please see the full problem description and patch at: > http://mesh.calit2.net/calmesh/one/linux_kernel_modifications/bridge_ignoring_bpdus/ > > if you would like to have it attached or inline with the email instead > let me know. > > - > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html Okay, but please read Documentation/SubmittingPatches in kernel tree. Format patch in line directly please. Also, the changelog is now maintained in the version control system (git) rather than the comments. -- Stephen Hemminger <shemminger@osdl.org> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: PATCH: br_stp.c:271: ignoring BPDUs if cost goes up 2006-08-30 18:04 PATCH: br_stp.c:271: ignoring BPDUs if cost goes up Brian Braunstein 2006-08-30 19:02 ` Stephen Hemminger @ 2006-08-30 19:11 ` Stephen Hemminger 2006-08-30 21:24 ` Stephen Hemminger 2 siblings, 0 replies; 4+ messages in thread From: Stephen Hemminger @ 2006-08-30 19:11 UTC (permalink / raw) To: Brian Braunstein; +Cc: netdev, rajesh_mish On Wed, 30 Aug 2006 11:04:36 -0700 Brian Braunstein <brian@bristyle.com> wrote: > PATCH > problem at: br_stp.c:271 > problem: ignoring BPDUs if cost goes up > > i was refered to email these addresses by the bridging code author. > > please see the full problem description and patch at: > http://mesh.calit2.net/calmesh/one/linux_kernel_modifications/bridge_ignoring_bpdus/ > > if you would like to have it attached or inline with the email instead > let me know. > > - > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html That code has been around a long time and probably came from pseudo-code in earlier version of the 802.1d standard. The current version of the standard has switched to RSTP and now has unreadable railroad track state machine diagrams, rather than pseudo-code. So it is hard to check if your fix is correct or not. -- Stephen Hemminger <shemminger@osdl.org> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: PATCH: br_stp.c:271: ignoring BPDUs if cost goes up 2006-08-30 18:04 PATCH: br_stp.c:271: ignoring BPDUs if cost goes up Brian Braunstein 2006-08-30 19:02 ` Stephen Hemminger 2006-08-30 19:11 ` Stephen Hemminger @ 2006-08-30 21:24 ` Stephen Hemminger 2 siblings, 0 replies; 4+ messages in thread From: Stephen Hemminger @ 2006-08-30 21:24 UTC (permalink / raw) To: Brian Braunstein; +Cc: netdev, rajesh_mish Here is a comparison of the existing implementation against 802.1d standard pseudo-code. /* Spec */ Boolean supersedes_port_info(port_no, config) /* (8.6.2.2) */ Int port_no; Config_bpdu *config; { return config->root_id < port_info[port_no].designated_root /* (8.6.2.2 a) */ || (config->root_id == port_info[port_no].designated_root && (config->root_path_cost < port_info[port_no].designated_cost /* (8.6.2.2 b) */ (config->root_path_cost == port_info[port_no].designated_cost && (config->bridge_id < port_info[port_no].designated_bridge /* (8.6.2.2 c) */ || (config->bridge_id == port_info[port_no].designated_bridge /* (8.6.2.2 d) */ && (config->bridge_id != bridge_info.bridge_id /* (8.6.2.2 d1) */ || config->port_id <= port_info[port_no].designated_port /* (8.6.2.2 d2) */ )))))); } /* Implementation */ static int br_supersedes_port_info(struct net_bridge_port *p, struct br_config_bpdu *bpdu) { int t; t = memcmp(&bpdu->root, &p->designated_root, 8); if (t < 0) return 1; /* 8.6.2.2 a */ else if (t > 0) return 0; if (bpdu->root_path_cost < p->designated_cost) /* 8.6.2.2 b */ return 1; else if (bpdu->root_path_cost > p->designated_cost) return 0; t = memcmp(&bpdu->bridge_id, &p->designated_bridge, 8); /* 8.6.2.2 c */ if (t < 0) return 1; else if (t > 0) return 0; if (memcmp(&bpdu->bridge_id, &p->br->bridge_id, 8)) /* 8.6.2.2 d */ return 1; if (bpdu->port_id <= p->designated_port) return 1; return 0; } You are questioning the part related to 8.6.2.2 of the spec: 8.6.2.2 Use Following the receipt of a Configuration BPDU conveying protocol information that supersedes that already held, i.e., if a) Case 1. The Root Identifier denotes a Bridge of higher priority than that recorded as the Designated Root, or b) Case 2. The Root Identifier is the same as the Designated Root, and the Root Path Cost is lower than that recorded as the Designated Cost for the Port, or c) Case 3. The Root Identifier and Root Path Cost are as recorded for the Port, and the Bridge Identifier denotes a Bridge of higher priority than that recorded as the Designated Bridge for the Port, or d) Case 4. The Root Identifier and Root Path Cost are as recorded for the Port, and the Bridge Identifier is the same as that recorded as the Designated Bridge for the Port, and either 1) The Bridge receiving the BPDU is not the Designated Bridge for the Port, or 2) The Port Identifier denotes a Port of priority not less than that recorded as the Designated Port. Linux follows the specification; there is no reason to deviate for this. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-08-30 21:24 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-08-30 18:04 PATCH: br_stp.c:271: ignoring BPDUs if cost goes up Brian Braunstein 2006-08-30 19:02 ` Stephen Hemminger 2006-08-30 19:11 ` Stephen Hemminger 2006-08-30 21:24 ` Stephen Hemminger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).