Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement IEC61375-2-5 TTDP HELLO linkwatcher and runner.
+1) Add support to supply a file which holds a list of possible topocounts. The file shall contain one topocount value on each row and stored as hexadecimal, i.e.: 11223344 aabbccdd The topocount values in this list contains valid topocounts for which will be used in recovery mode to let a ETBN join the backbone again if it previously was lost. +2) If a node has lengthening set from previously, and no longer has a neighbor, it should clear the local lengthening flag in all cases. Previosuly, this only happened if the node initially had a null neighbor; this change fixes the behavior so that the flag is also correctly cleared for nodes that ended up in a combined shortening+lengthening state. +3) Previously, we could sometimes not consider ourselves an end node, even when we ought to, if we were quick enough to lose our neighbor before the higher layers of the stack could notify us that we're no longer receiving TOPOLOGY frames. After this fix, we consider ourselves as an intermediate node only if we both have a non-null neighbor (i.e. HELLO link status is up) and we're recieving TOPOLOGY frames, as notified by the higher stack. +4) In order to enable non-inhibited lengthening to work, we need the teams at the end of the non-inhibited train to detect that the remote train composition has inhibition set. Thus, this change removes the requirement that we only cared about remote inhibition if we has inhibit set on our end as well (the team was in a FIXED state). This is no longer the case - we now only care that we're not in the FIXED-MIDDLE state, as that makes no sense for remote inhibition. +5) We now detect whether TOPOLOGY frames are being received in the HELLO layer, by use of a parasite socket that listens for the frames directly in the teamd runner. Related functionality has been removed from topod. +6) With these changes, the user can now choose how the etbInhibit field in the ECSP_STATUS TRDP telegram behaves. The user makes his decision via the CLI, in the TTDP configuration context. The following options are available: * 0: Normal behaviour. As specified in IEC61375-2-3 Annex E: 0 n/a 1 inhibit not requested on ETB 2 inhibit set on local ETBN 3 inhibit set on remote ETBN 4 inhibit set on local and remote ETBN "Remote ETBN" only considers ETBNs in the local train composition. This is the default. * 1: As mode 0, but "remote ETBN" now means "non-local ETBN in the local, or the remote, train composition". * 2: Bitfield mode. The etbInhibit field is now a bitmask containing the following bits: 1 local ETBN 2 remote ETBN in local train composition 4 remote ETBN in remote train composition * 3: As mode 0, but "ETBN" now means "train composition". The motivation behind this is that the current description of the etbInhibit field is quite unclear, and that there is currently no way for an end user (or TCMS implementation) to read the "remote inhibition" flag if one does not have access to the raw TOPOLOGY frames. In certain real world use cases, having this information would be of benefit, so we now make it possible to adjust the behaviour of this field so as to make the information accessible. +7) Add SNMP subagent (teamdagentd) Co-authored-by: Jonas Johansson <[email protected]> Co-authored-by: Magnus Malm <[email protected]> Co-authored-by: Johan Askerin <[email protected]> Co-authored-by: Leif Enblom <[email protected]> Co-authored-by: Jacques de Laval <[email protected]> Signed-off-by: Andy Koszela <[email protected]> Signed-off-by: Jonas Johansson <[email protected]> Signed-off-by: Magnus Malm <[email protected]> Signed-off-by: Johan Askerin <[email protected]> Signed-off-by: Leif Enblom <[email protected]> Signed-off-by: Jacques de Laval <[email protected]>
- Loading branch information