[PATCH 11/15] mka: Fix a few minor bugs in CP state machine

msiedzik at extremenetworks.com msiedzik at extremenetworks.com
Fri Mar 2 12:10:59 PST 2018


From: Mike Siedzik <msiedzik at extremenetworks.com>

All fixes per IEEE802.1X-2010 Figure 12-2 - CP state machine.

1) Upon entering RETIRE, deleteSAs(oki)
2) RECEIVING to TRANSMIT, add !controlledPortEnabled to branching logic
3) READY should move to ABANDON (not RECEIVE) when new_sak or
   changed_connect is true.
4) READY to TRANSMIT, add !controlledPortEnabled to branching logic

Signed-off-by: Michael Siedzik <msiedzik at extremenetworks.com>
---
 src/pae/ieee802_1x_cp.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/pae/ieee802_1x_cp.c b/src/pae/ieee802_1x_cp.c
index e6b2767e2..05eab7e4b 100644
--- a/src/pae/ieee802_1x_cp.c
+++ b/src/pae/ieee802_1x_cp.c
@@ -319,8 +319,11 @@ SM_STATE(CP, RETIRE)
        SM_ENTRY(CP, RETIRE);
        /* RETIRE state machine not keep with Figure 12-2 in
         * IEEE Std 802.1X-2010 */
-       os_free(sm->oki);
-       sm->oki = NULL;
+       if (sm->oki) {
+               ieee802_1x_kay_delete_sas(sm->kay, sm->oki);
+               os_free(sm->oki);
+               sm->oki = NULL;
+       }
        sm->orx = FALSE;
        sm->otx = FALSE;
        ieee802_1x_kay_set_old_sa_attr(sm->kay, sm->oki, sm->oan,
@@ -382,7 +385,7 @@ SM_STEP(CP)
                if (!sm->elected_self)
                        SM_ENTER(CP, READY);
                if (sm->elected_self &&
-                   (sm->all_receiving || !sm->transmit_when))
+                   (sm->all_receiving || !sm->controlled_port_enabled || !sm->transmit_when))
                        SM_ENTER(CP, TRANSMIT);
                break;

@@ -405,8 +408,8 @@ SM_STEP(CP)

        case CP_READY:
                if (sm->new_sak || changed_connect(sm))
-                       SM_ENTER(CP, RECEIVE);
-               if (sm->server_transmitting)
+                       SM_ENTER(CP, ABANDON);
+               if (sm->server_transmitting || !sm->controlled_port_enabled)
                        SM_ENTER(CP, TRANSMIT);
                break;
        case CP_ABANDON:
--
2.11.1


________________________________

DISCLAIMER:
This e-mail and any attachments to it may contain confidential and proprietary material and is solely for the use of the intended recipient. Any review, use, disclosure, distribution or copying of this transmittal is prohibited except by or on behalf of the intended recipient. If you have received this transmittal in error, please notify the sender and destroy this e-mail and any attachments and all copies, whether electronic or printed.




More information about the Hostap mailing list