• Jon Paul Maloy's avatar
    tipc: extend node FSM · 66996b6c
    Jon Paul Maloy authored
    In the next commit, we will move link synch/failover orchestration to
    the link aggregation level. In order to do this, we first need to extend
    the node FSM with two more states, NODE_SYNCHING and NODE_FAILINGOVER,
    plus four new events to enter and leave those states.
    
    This commit introduces this change, without yet making use of it.
    The node FSM now looks as follows:
    
                               +-----------------------------------------+
                               |                            PEER_DOWN_EVT|
                               |                                         |
      +------------------------+----------------+                        |
      |SELF_DOWN_EVT           |                |                        |
      |                        |                |                        |
      |              +-----------+          +-----------+                |
      |              |NODE_      |          |NODE_      |                |
      |   +----------|FAILINGOVER|<---------|SYNCHING   |------------+   |
      |   |SELF_     +-----------+ FAILOVER_+-----------+    PEER_   |   |
      |   |DOWN_EVT   |         A  BEGIN_EVT A         |     DOWN_EVT|   |
      |   |           |         |            |         |             |   |
      |   |           |         |            |         |             |   |
      |   |           |FAILOVER_|FAILOVER_   |SYNCH_   |SYNCH_       |   |
      |   |           |END_EVT  |BEGIN_EVT   |BEGIN_EVT|END_EVT      |   |
      |   |           |         |            |         |             |   |
      |   |           |         |            |         |             |   |
      |   |           |        +--------------+        |             |   |
      |   |           +------->|   SELF_UP_   |<-------+             |   |
      |   |   +----------------|   PEER_UP    |------------------+   |   |
      |   |   |SELF_DOWN_EVT   +--------------+     PEER_DOWN_EVT|   |   |
      |   |   |                   A          A                   |   |   |
      |   |   |                   |          |                   |   |   |
      |   |   |        PEER_UP_EVT|          |SELF_UP_EVT        |   |   |
      |   |   |                   |          |                   |   |   |
      V   V   V                   |          |                   V   V   V
    +------------+       +-----------+    +-----------+       +------------+
    |SELF_DOWN_  |       |SELF_UP_   |    |PEER_UP_   |       |PEER_DOWN   |
    |PEER_LEAVING|<------|PEER_COMING|    |SELF_COMING|------>|SELF_LEAVING|
    +------------+ SELF_ +-----------+    +-----------+ PEER_ +------------+
           |       DOWN_EVT       A          A          DOWN_EVT     |
           |                      |          |                       |
           |                      |          |                       |
           |           SELF_UP_EVT|          |PEER_UP_EVT            |
           |                      |          |                       |
           |                      |          |                       |
           |PEER_DOWN_EVT       +--------------+        SELF_DOWN_EVT|
           +------------------->|  SELF_DOWN_  |<--------------------+
                                |  PEER_DOWN   |
                                +--------------+
    Tested-by: default avatarYing Xue <ying.xue@windriver.com>
    Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    66996b6c
node.c 28.3 KB