[SEBA-885] Ability to restart EAPOL and DHCP if the state machine doesn't complete
Change-Id: I2f0c7be787ab9ca2ddf59deadaa6c789456cd3d4
diff --git a/docs/source/onu-state-machine.rst b/docs/source/onu-state-machine.rst
index f66dd22..a53dfec 100644
--- a/docs/source/onu-state-machine.rst
+++ b/docs/source/onu-state-machine.rst
@@ -8,49 +8,102 @@
Here is a list of possible state transitions in BBSim:
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| Transition | Starting States | End State | Notes |
-+================================+===================================================================================================================+================================+===============================================================================================+
-| | | created | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| discover | created | discovered | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| enable | discovered, disabled | enabled | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| receive_eapol_flow | enabled, gem_port_added | eapol_flow_received | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| add_gem_port | enabled, eapol_flow_received | gem_port_added | We need to wait for both the flow and the gem port to come before moving to ``auth_started`` |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| start_auth | eapol_flow_received, gem_port_added, eap_response_success_received, auth_failed, dhcp_ack_received, dhcp_failed | auth_started | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| eap_start_sent | auth_started | eap_start_sent | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| eap_response_identity_sent | eap_start_sent | eap_response_identity_sent | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| eap_response_challenge_sent | eap_response_identity_sent | eap_response_challenge_sent | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| eap_response_success_received | eap_response_challenge_sent | eap_response_success_received | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| auth_failed | auth_started, eap_start_sent, eap_response_identity_sent, eap_response_challenge_sent | auth_failed | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| start_dhcp | eap_response_success_received, dhcp_ack_received, dhcp_failed | dhcp_started | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| dhcp_discovery_sent | dhcp_started | dhcp_discovery_sent | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| dhcp_request_sent | dhcp_discovery_sent | dhcp_request_sent | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| dhcp_ack_received | dhcp_request_sent | dhcp_ack_received | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
-| dhcp_failed | dhcp_started, dhcp_discovery_sent, dhcp_request_sent | dhcp_failed | |
-+--------------------------------+-------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------------------------------------------------------------------------------+
+.. list-table:: ONU States
+ :widths: 10 35 10 45
+ :header-rows: 1
-In addition some transition can be forced via the API:
+ * - Transition
+ - Starting States
+ - End State
+ - Notes
+ * -
+ -
+ - created
+ -
+ * - discover
+ - created
+ - discovered
+ -
+ * - enable
+ - discovered, disabled
+ - enabled
+ -
+ * - receive_eapol_flow
+ - enabled, gem_port_added
+ - eapol_flow_received
+ -
+ * - add_gem_port
+ - enabled, eapol_flow_received
+ - gem_port_added
+ - We need to wait for both the flow and the gem port to come before moving to ``auth_started``
+ * - start_auth
+ - eapol_flow_received, gem_port_added, eap_start_sent, eap_response_identity_sent, eap_response_challenge_sent, eap_response_success_received, auth_failed, dhcp_ack_received, dhcp_failed
+ - auth_started
+ -
+ * - eap_start_sent
+ - auth_started
+ - eap_start_sent
+ -
+ * - eap_response_identity_sent
+ - eap_start_sent
+ - eap_response_identity_sent
+ -
+ * - eap_response_challenge_sent
+ - eap_response_identity_sent
+ - eap_response_challenge_sent
+ -
+ * - eap_response_success_received
+ - eap_response_challenge_sent
+ - eap_response_success_received
+ -
+ * - auth_failed
+ - auth_started, eap_start_sent, eap_response_identity_sent, eap_response_challenge_sent
+ - auth_failed
+ -
+ * - start_dhcp
+ - eap_response_success_received, dhcp_discovery_sent, dhcp_request_sent, dhcp_ack_received, dhcp_failed
+ - dhcp_started
+ -
+ * - dhcp_discovery_sent
+ - dhcp_started
+ - dhcp_discovery_sent
+ -
+ * - dhcp_request_sent
+ - dhcp_discovery_sent
+ - dhcp_request_sent
+ -
+ * - dhcp_ack_received
+ - dhcp_request_sent
+ - dhcp_ack_received
+ -
+ * - dhcp_failed
+ - dhcp_started, dhcp_discovery_sent, dhcp_request_sent
+ - dhcp_failed
+ -
-+---------------------+----------------------------------------------------------------------------+-----------+---------------------------------------------------------------------------------------------------------+
-| End StateTransition | Starting States | End State | Notes |
-+=====================+============================================================================+===========+=========================================================================================================+
-| disable | eap_response_success_received, auth_failed, dhcp_ack_received, dhcp_failed | disabled | Emulates a devide mulfunction. Sends a ``DyingGaspInd`` and then an ``OnuIndication{OperState: 'down'}``|
-+---------------------+----------------------------------------------------------------------------+-----------+---------------------------------------------------------------------------------------------------------+
+In addition some transition can be forced via the API,
+check the previous table to verify when you can trigger those actions and
+:ref:`BBSimCtl` for more informations about ``BBSimCtl``:
+
+.. list-table:: API State Transitions
+ :widths: 15 15 70
+ :header-rows: 1
+
+ * - BBSimCtl command
+ - Transitions To
+ - Notes
+ * - shutdown
+ - disable
+ - Emulates a devide shutdown. Sends a ``DyingGaspInd`` and then an ``OnuIndication{OperState: 'down'}``
+ * - poweron
+ - enable
+ - Emulates a devide power on. Sends a ``OnuDiscInd`` and then an ``OnuIndication{OperState: 'up'}``
+ * - auth_restart
+ - start_auth
+ - Forces the ONU to send a new ``EapStart`` packet.
+ * - dhcp_restart
+ - start_dhcp
+ - Forces the ONU to send a new ``DHCPDiscovery`` packet.
Below is a diagram of the state machine:
@@ -98,6 +151,10 @@
eap_response_identity_sent -> auth_failed
eap_response_challenge_sent -> auth_failed
+ eap_start_sent -> auth_started
+ eap_response_identity_sent -> auth_started
+ eap_response_challenge_sent -> auth_started
+
eap_response_success_received -> auth_started
auth_failed -> auth_started
dhcp_ack_received -> auth_started
@@ -116,6 +173,8 @@
dhcp_failed -> disabled
disabled -> enabled
+ dhcp_discovery_sent -> dhcp_started
+ dhcp_request_sent -> dhcp_started
dhcp_ack_received -> dhcp_started
dhcp_failed -> dhcp_started
}
\ No newline at end of file