From 40f958aa569b8e7300c8d0fdb0e298d8b4c748c6 Mon Sep 17 00:00:00 2001 From: "Aji, Srinivas" Date: Thu, 10 May 2007 16:37:26 -0700 Subject: [PATCH] RSTP testing - PATCH: BPDU length calculation The bpdu_len sent to STP_OUT_tx_bpdu() excludes the ethernet and and LLC headers, though the bpdu pointer points to the start of the ethernet header. Given the types in rstplib/stp_bpdu.h, we need to be sending a packet with (base, len) given by (bpdu, bpdu_len + sizeof(MAC_HEADER_T) + sizeof(ETH_HEADER_T)) MAC_HEADER_T is dest and source ethernet addresses and ETH_HEADER_T is the 802.2 part. Signed-off-by: Stephen Hemminger --- bridge_track.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bridge_track.c b/bridge_track.c index 67f6252..da53d9b 100644 --- a/bridge_track.c +++ b/bridge_track.c @@ -763,8 +763,7 @@ STP_OUT_tx_bpdu(IN int port_index, IN int vlan_id, TST(vlan_id == 0, 0); packet_send(port->if_index, bpdu, - bpdu_len + sizeof(ETH_HEADER_T) - + sizeof(BPDU_HEADER_T) + sizeof(BPDU_BODY_T)); + bpdu_len + sizeof(MAC_HEADER_T) + sizeof(ETH_HEADER_T)); return 0; } -- 2.39.2