In BBSim the device state is createdtained using a state machine library: fsm.
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 | 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_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 |
In addition some transition can be forced via the API:
| Transition | 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'} |