OpenSS7 SS7 for the Common Man |
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
||||||||||||||||||||||||||
Home | Overview | Status | News | Documentation | Resources | About | |||||||||||||||||||||
File /code/strss7/drivers/slsi/sls_tcbc.h#ident "@(#) $Id: sls_tcbc.h,v 0.8.2.1 2002/10/18 02:40:38 brian Exp $" #ifndef __SLS_TCBC_H__ #define __SLS_TCBC_H__ static inline void lk_tsrc_alternative_routing_data_request(lk_t * lk); static inline void lk_hmrt_changeback_ack(lk_t * lk); static inline void lk_hmrt_changeback_declaration(lk_t * lk); static inline void lk_hmrt_update_routing_tables(lk_t * lk); static inline void lk_tlac_changeback_terminated(lk_t * lk); static inline void lk_tsrc_procedure_terminated(lk_t * lk); static inline void lk_t3_timeout(lk_t * lk) { switch (lk->statem.tcbc_state) { case LK_STATE_TIME_CONTROLLED_DIVERSION: /* Restart traffic on link buffered messages first */ lk_hmrt_update_routing_tables(lk); lk_tlac_changeback_terminated(lk); lk_tsrc_procedure_terminated(lk); lk->statem.tcbc_state = LK_STATE_IDLE; break; } } static inline void lk_t4_timeout(lk_t * lk) { switch (lk->statem.tcbc_state) { case LK_STATE_FIRST_ATTEMPT: lk_hmrt_changeback_declaration(lk); lk_timer_start(t5); lk->statem.tcbc_state = LK_STATE_SECOND_ATTEMPT; break; } } static inline void lk_t4_timeout(lk_t * lk) { switch (lk->statem.tcbc_state) { case LK_STATE_SECOND_ATTEMPT: /* Restart traffic on link buffered messages first */ lk_hmrt_update_routing_tables(lk); lk_tlac_changeback_terminated(lk); lk_tsrc_procedure_terminated(lk); lk->statem.tcbc_state = LK_STATE_IDLE; break; } } static inline void lk_tcbc_signalling_link_available(lk_t * lk) { switch (lk->statem.tcbc_state) { case LK_STATE_IDLE: lk_tsrc_alternative_routing_data_request(lk); lk->statem.tcbc_state = LK_STATE_WAIT_FOR_ROUTING_DATA; break; } } static inline void lk_tcbc_changeback_declaration(lk_t * lk) { /* from remote L3 */ /* With changeback code x (from remote level 3) */ switch (lk->statem.tcbc_state) { case LK_STATE_IDLE: lk_hmrt_changeback_ack(lk); /* with changeback code x (to remote level 3) */ break; case LK_STATE_WAIT_FOR_ROUTING_DATA: break; case LK_STATE_TIME_CONTROLLED_DIVERSION: break; case LK_STATE_FIRST_ATTEMPT: break; case LK_STATE_SECOND_ATTEMPT: break; } } static inline void lk_tcbc_alternative_routing_data(lk_t * lk) { /* Identifies alternative link(s) carrying traffic to be changed back and also identifies routing and SP accessibility changes */ switch (lk->statem.tcbc_state) { case LK_STATE_WAIT_FOR_ROUTING_DATA: if (lk->statem.routing_changed) { /* Buffer concerned messages in changeback buffer(s) */ if (lk->statem.remote_sp_accessible) { /* Is SP at remote end of newly available link accessible via alternative link? */ lk_hmrt_changeback_declaration(lk); /* Send to above SP via alternative link with changeback code y (to remote level 3) */ lk_timer_start(t4); lk->statem.tcbc_state = LK_STATE_FIRST_ATTEMPT; } else { lk_timer_start(t3); lk->statem.tcbc_state = LK_STATE_TIME_CONTROLLED_DIVERSION; /* Wait to reduce risk that diversion causes mis-sequencing */ } } else { lk_tlac_changeback_terminated(lk); lk_tsrc_procedure_terminated(lk); lk->statem.tcbc_state = LK_STATE_IDLE; } break; } } static inline void lk_tcbc_changeback_ack(lk_t * lk) { /* from remote L3 */ switch (lk->statem.tcbc_state) { case LK_STATE_FIRST_ATTEMPT: lk_timer_stop(t4); /* Restart traffic on link buffered messages first */ lk_hmrt_update_routing_tables(lk); lk_tlac_changeback_terminated(lk); lk_tsrc_procedure_terminated(lk); lk->statem.tcbc_state = LK_STATE_IDLE; break; case LK_STATE_SECOND_ATTEMPT: lk_timer_stop(t5); /* Restart traffic on link buffered messages first */ lk_hmrt_update_routing_tables(lk); lk_tlac_changeback_terminated(lk); lk_tsrc_procedure_terminated(lk); lk->statem.tcbc_state = LK_STATE_IDLE; break; } } #endif /* __SLS_TCBC_H__ */
|
|||||||||||||||||||||||||||
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |