Blame SOURCES/macsec-0034-mka-Some-bug-fixes-for-MACsec-in-PSK-mode.patch

92bdd1
From e54691106b29f41aa3081b00eb4f48e411cebc72 Mon Sep 17 00:00:00 2001
92bdd1
Message-Id: <e54691106b29f41aa3081b00eb4f48e411cebc72.1488376602.git.dcaratti@redhat.com>
92bdd1
From: Badrish Adiga H R <badrish.adigahr@gmail.com>
92bdd1
Date: Fri, 6 Jan 2017 15:27:10 +0530
92bdd1
Subject: [PATCH] mka: Some bug fixes for MACsec in PSK mode
92bdd1
92bdd1
Issue:
92bdd1
------
92bdd1
The test setup has 2 peers running MACsec in PSK mode, Peer A with
92bdd1
MAC address higher than MAC Address of peer B. Test sequence is
92bdd1
1. Peer B starts with actor_priority 255
92bdd1
2. Peer A starts with priority 16, becomes key server.
92bdd1
3. Peer A stops..
92bdd1
4. Peer A restarts with priority 255, but because of the stale values
92bdd1
participant->is_key_server(=TRUE) and participant->is_elected(=TRUE)
92bdd1
it continues to remain as Key Server.
92bdd1
5. For peer B, key server election happens and since it has lower MAC
92bdd1
address as compared to MAC address of A, it becomes the key server.
92bdd1
Now we have 2 key servers in CA and is not correct.
92bdd1
92bdd1
Root-cause & fix:
92bdd1
-----------------
92bdd1
When number of live peers become 0, the flags such lrx, ltx, orx,
92bdd1
otx, etc. need to be cleared. In MACsec PSK mode, these stale values
92bdd1
create problems while re-establishing CA.
92bdd1
92bdd1
Signed-off-by: Badrish Adiga H R <badrish.adigahr@gmail.com>
92bdd1
---
92bdd1
 src/pae/ieee802_1x_kay.c | 6 ++++++
92bdd1
 1 file changed, 6 insertions(+)
92bdd1
92bdd1
diff --git a/src/pae/ieee802_1x_kay.c b/src/pae/ieee802_1x_kay.c
92bdd1
index 79a6878..92fd7ba 100644
92bdd1
--- a/src/pae/ieee802_1x_kay.c
92bdd1
+++ b/src/pae/ieee802_1x_kay.c
92bdd1
@@ -2378,6 +2378,12 @@ static void ieee802_1x_participant_timer(void *eloop_ctx, void *timeout_ctx)
92bdd1
 			participant->advised_capability =
92bdd1
 				MACSEC_CAP_NOT_IMPLEMENTED;
92bdd1
 			participant->to_use_sak = FALSE;
92bdd1
+			participant->ltx = FALSE;
92bdd1
+			participant->lrx = FALSE;
92bdd1
+			participant->otx = FALSE;
92bdd1
+			participant->orx = FALSE;
92bdd1
+			participant->is_key_server = FALSE;
92bdd1
+			participant->is_elected = FALSE;
92bdd1
 			kay->authenticated = TRUE;
92bdd1
 			kay->secured = FALSE;
92bdd1
 			kay->failed = FALSE;
92bdd1
-- 
92bdd1
2.7.4
92bdd1