patch-2.1.15 linux/net/802/pseudo/pseudocode
Next file: linux/net/802/pseudo/pseudocode.h
Previous file: linux/net/802/pseudo/opcodesnm.h
Back to the patch index
Back to the overall index
- Lines: 781
- Date:
Thu Dec 12 16:54:22 1996
- Orig file:
v2.1.14/linux/net/802/pseudo/pseudocode
- Orig date:
Thu Jan 1 02:00:00 1970
diff -u --recursive --new-file v2.1.14/linux/net/802/pseudo/pseudocode linux/net/802/pseudo/pseudocode
@@ -0,0 +1,780 @@
+;============================================================================
+;
+; translate this with
+; cat pseudocode | sed -f act2num | awk -f compile.awk >pseudocode.h
+;
+; actionname pseudocode
+;
+;============================================================================
+ADM1 SEND_SABME_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ RETRY_COUNT:=0
+ S_FLAG:=0
+;
+; instructions in ADM2 have been changed:
+; 1. P_FLAG:=P is probably wrong in doc...
+; I think it should be F_FLAG:=P the way it is in CONN3
+; 2. CONNECT_RESPONSE has been wired in here,
+; CONN1 is no longer referenced
+;
+ADM2 F_FLAG:=P
+ SEND_UA_RSP(F=X)
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ P_FLAG:=0
+ REMOTE_BUSY:=0
+ CONNECT_INDICATION
+ADM3 SEND_DM_RSP(F=X)
+ADM4 SEND_DM_RSP(F=X)
+ADM5 NOP
+;============================================================================
+;CONN1 SEND_UA_RSP(F=X)
+; V(S):=0
+; V(R):=0
+; RETRY_COUNT:=0
+; P_FLAG:=0
+; REMOTE_BUSY:=0
+CONN2 SEND_DM_RSP(F=X)
+CONN3 F_FLAG:=P
+CONN4 DISCONNECT_INDICATION
+CONN5 NOP
+;============================================================================
+RESWAIT1 SEND_SABME_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ RETRY_COUNT:=0
+RESWAIT2 SEND_UA_RSP(F=X)
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ P_FLAG:=0
+ REMOTE_BUSY:=0
+ RESET_CONFIRM
+RESWAIT3 SEND_DISC_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ RETRY_COUNT:=0
+RESWAIT4 SEND_DM_RSP(F=X)
+RESWAIT5 DISCONNECT_INDICATION
+RESWAIT6 S_FLAG:=1
+ F_FLAG:=P
+RESWAIT7 SEND_DM_RSP(F=X)
+ DISCONNECT_INDICATION
+RESWAIT8 NOP
+;============================================================================
+RESCHK1 SEND_UA_RSP(F=X)
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ P_FLAG:=0
+ REMOTE_BUSY:=0
+RESCHK2 SEND_DM_RSP(F=X)
+RESCHK3 DISCONNECT_INDICATION
+RESCHK4 F_FLAG:=P
+RESCHK5 SEND_DM_RSP(F=X)
+ DISCONNECT_INDICATION
+RESCHK6 NOP
+;============================================================================
+SETUP1 SEND_UA_RSP(F=X)
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ S_FLAG:=1
+SETUP2 STOP_ACK_TIMER
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ UPDATE_P_FLAG
+ CONNECT_CONFIRM
+ REMOTE_BUSY:=0
+SETUP3 P_FLAG:=0
+ CONNECT_CONFIRM
+ REMOTE_BUSY:=0
+SETUP4 SEND_DM_RSP(F=X)
+ DISCONNECT_INDICATION
+ STOP_ACK_TIMER
+SETUP5 DISCONNECT_INDICATION
+ STOP_ACK_TIMER
+SETUP6 NOP
+SETUP7 SEND_SABME_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+SETUP8 DISCONNECT_INDICATION
+;============================================================================
+RESET1 SEND_UA_RSP(F=X)
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ S_FLAG:=1
+RESET2 STOP_ACK_TIMER
+ V(S):=0
+ V(R):=0
+ RETRY_COUNT:=0
+ UPDATE_P_FLAG
+ RESET_CONFIRM
+ REMOTE_BUSY:=0
+RESET3 P_FLAG:=0
+ RESET_CONFIRM
+ REMOTE_BUSY:=0
+RESET4 SEND_DM_RSP(F=X)
+ DISCONNECT_INDICATION
+ STOP_ACK_TIMER
+RESET5 DISCONNECT_INDICATION
+ STOP_ACK_TIMER
+RESET6 NOP
+RESET7 SEND_SABME_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+RESET8 DISCONNECT_INDICATION
+;============================================================================
+D_CONN1 SEND_DM_RSP(F=X)
+ STOP_ACK_TIMER
+D_CONN2 STOP_ACK_TIMER
+D_CONN3 SEND_UA_RSP(F=X)
+D_CONN4 STOP_ACK_TIMER
+D_CONN5 NOP
+D_CONN6 SEND_DISC_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+D_CONN7 NOP
+;============================================================================
+ERR1 RESET_INDICATION(REMOTE)
+ STOP_ACK_TIMER
+ F_FLAG:=P
+ERR2 SEND_UA_RSP(F=X)
+ DISCONNECT_INDICATION
+ STOP_ACK_TIMER
+ERR3 DISCONNECT_INDICATION
+ STOP_ACK_TIMER
+ERR4 RESET_INDICATION(LOCAL)
+ STOP_ACK_TIMER
+ REPORT_STATUS(FRMR_RECEIVED)
+ S_FLAG:=0
+ERR5 RE-SEND_FRMR_RSP(F=P)
+ START_ACK_TIMER
+ERR6 NOP
+ERR7 RE-SEND_FRMR_RSP(F=0)
+ START_ACK_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+ERR8 S_FLAG:=0
+ RESET_INDICATION(LOCAL)
+;============================================================================
+; the shared actions are common to states NORMAL, BUSY, REJECT,
+; AWAIT, AWAIT_BUSY and AWAIT_REJECT.
+;============================================================================
+SH1 SEND_DISC_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ STOP_OTHER_TIMERS
+ RETRY_COUNT:=0
+SH2 SEND_SABME_CMD(P=X)
+ P_FLAG:=P
+ START_ACK_TIMER
+ STOP_OTHER_TIMERS
+ RETRY_COUNT:=0
+ S_FLAG:=0
+SH3 RESET_INDICATION(REMOTE)
+ F_FLAG:=P
+ STOP_ALL_TIMERS
+SH4 SEND_UA_RSP(F=X)
+ DISCONNECT_INDICATION
+ STOP_ALL_TIMERS
+SH5 STOP_ALL_TIMERS
+ RESET_INDICATION(LOCAL)
+ REPORT_STATUS(FRMR_RECEIVED)
+ S_FLAG:=0
+SH6 DISCONNECT_INDICATION
+ STOP_ALL_TIMERS
+SH7 SEND_FRMR_RSP(F=X)
+ REPORT_STATUS(FRMR_SENT)
+ START_ACK_TIMER
+ STOP_OTHER_TIMERS
+ RETRY_COUNT:=0
+SH8 SEND_FRMR_RSP(F=0)
+ REPORT_STATUS(FRMR_SENT)
+ START_ACK_TIMER
+ STOP_OTHER_TIMERS
+ RETRY_COUNT:=0
+SH9 SEND_FRMR_RSP(F=0)
+ REPORT_STATUS(FRMR_SENT)
+ START_ACK_TIMER
+ STOP_OTHER_TIMERS
+ RETRY_COUNT:=0
+SH10 SEND_FRMR_RSP(F=X)
+ REPORT_STATUS(FRMR_SENT)
+ START_ACK_TIMER
+ STOP_OTHER_TIMERS
+ RETRY_COUNT:=0
+SH11 STOP_ALL_TIMERS
+ RESET_INDICATION(LOCAL)
+ S_FLAG:=0
+;============================================================================
+NORMAL1 SEND_I_CMD(P=1)
+ START_P_TIMER
+ START_ACK_TIMER_IF_NOT_RUNNING
+; SEND_I_XXX(X=0)
+; START_ACK_TIMER_IF_NOT_RUNNING
+NORMAL2 SEND_I_XXX(X=0)
+ START_ACK_TIMER_IF_NOT_RUNNING
+NORMAL3 SEND_RNR_CMD(F=1)
+ START_P_TIMER
+ DATA_FLAG:=0
+; SEND_RNR_XXX(X=0)
+; DATA_FLAG:=0
+NORMAL4 SEND_RNR_XXX(X=0)
+ DATA_FLAG:=0
+NORMAL5 SEND_REJ_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ UPDATE_P_FLAG
+ START_REJ_TIMER
+ IF_F=1_CLEAR_REMOTE_BUSY
+; SEND_REJ_CMD(P=1)
+; UPDATE_N(R)_RECEIVED
+; START_P_TIMER
+; START_REJ_TIMER
+; IF_F=1_CLEAR_REMOTE_BUSY
+NORMAL6 SEND_REJ_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ START_REJ_TIMER
+NORMAL7 SEND_REJ_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ START_REJ_TIMER
+;
+; the order of opcodes in NORMAL8 is changed.
+; the transition table will execute NORMAL8A for incomming pdus
+; with p/f 1, pdus with pf 0 are treated in NORMAL8B.
+;
+NORMAL8A V(R):=V(R)+1
+ SEND_ACKNOWLEDGE_CMD(P=1)
+ START_P_TIMER
+ UPDATE_N(R)_RECEIVED
+ IF_F=1_CLEAR_REMOTE_BUSY
+ DATA_INDICATION
+;
+NORMAL8B V(R):=V(R)+1
+ UPDATE_P_FLAG
+ SEND_ACKNOWLEDGE_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ IF_F=1_CLEAR_REMOTE_BUSY
+ DATA_INDICATION
+;
+; the order of opcodes in NORMAL9 is changed
+NORMAL9 V(R):=V(R)+1
+ SEND_ACKNOWLEDGE_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ DATA_INDICATION
+;
+; the order of opcodes in NORMAL10 is changed
+NORMAL10 V(R):=V(R)+1
+ SEND_ACKNOWLEDGE_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ DATA_INDICATION
+NORMAL11 UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+NORMAL12 SEND_ACKNOWLEDGE_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+NORMAL13 UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+NORMAL14 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+NORMAL15 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ UPDATE_P_FLAG
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+; V(S):=N(R)
+; UPDATE_N(R)_RECEIVED
+; START_P_TIMER
+; RE-SEND_I_CMD(P=1)
+; CLEAR_REMOTE_BUSY
+NORMAL16 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+NORMAL17 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ RE-SEND_I_RSP(F=1)
+ CLEAR_REMOTE_BUSY
+NORMAL18 SEND_RR_CMD(P=1)
+ START_P_TIMER
+NORMAL19 P_FLAG:=0
+; SEND_RR_CMD(P=1)
+; START_P_TIMER
+; RETRY_COUNT:=RETRY_COUNT+1
+NORMAL20 SEND_RR_CMD(P=1)
+ START_P_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+;============================================================================
+BUSY1 SEND_I_CMD(P=1)
+ START_P_TIMER
+ START_ACK_TIMER_IF_NOT_RUNNING
+; SEND_I_XXX(X=0)
+; START_ACK_TIMER_IF_NOT_RUNNING
+BUSY2 SEND_I_XXX(X=0)
+ START_ACK_TIMER_IF_NOT_RUNNING
+BUSY3 SEND_REJ_CMD(P=1)
+ START_REJ_TIMER
+ START_P_TIMER
+; SEND_REJ_XXX(X=0)
+; START_REJ_TIMER
+BUSY4 SEND_REJ_XXX(X=0)
+ START_REJ_TIMER
+BUSY5 SEND_RR_CMD(P=1)
+ START_P_TIMER
+ SEND_RR_XXX(X=0)
+BUSY6 SEND_RR_XXX(X=0)
+BUSY7 SEND_RR_CMD(P=1)
+ START_P_TIMER
+ SEND_RR_XXX(X=0)
+BUSY8 SEND_RR_XXX(X=0)
+BUSY9 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1
+ IF_F=1_CLEAR_REMOTE_BUSY
+; SEND_RNR_CMD(P=1)
+; START_P_TIMER
+; UPDATE_N(R)_RECEIVED
+; IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1
+; IF_F=1_CLEAR_REMOTE_BUSY
+BUSY10 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1
+BUSY11 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1
+BUSY12 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ IF_DATA_FLAG=2_STOP_REJ_TIMER
+ DATA_FLAG:=1
+; V(R):=V(R)+1
+; DATA_INDICATION
+; SEND_RNR_RSP(F=1)
+; UPDATE_N(R)_RECEIVED
+; IF_DATA_FLAG=2_STOP_REJ_TIMER
+; DATA_FLAG:=0
+BUSY13 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ IF_DATA_FLAG=2_STOP_REJ_TIMER
+ DATA_FLAG:=1
+ IF_F=1_CLEAR_REMOTE_BUSY
+; SEND_RNR_CMD(F=1)
+; START_P_TIMER
+; UPDATE_N(R)_RECEIVED
+; IF_DATA_FLAG=2_STOP_REJ_TIMER
+; DATA_FLAG:=1
+; IF_F=1_CLEAR_REMOTE_BUSY
+; V(R):=V(R)+1
+; DATA_INDICATION
+; SEND_RNR_CMD(F=1)
+; START_P_TIMER
+; UPDATE_N(R)_RECEIVED
+; IF_DATA_FLAG=2_STOP_REJ_TIMER
+; DATA_FLAG:=0
+; IF_F=1_CLEAR_REMOTE_BUSY
+; V(R):=V(R)+1
+; DATA_INDICATION
+; UPDATE_P_FLAG
+; OPTIONAL_SEND_RNR_XXX(X=0)
+; UPDATE_N(R)_RECEIVED
+; IF_DATA_FLAG=2_STOP_REJ_TIMER
+; DATA_FLAG:=0
+; IF_F=1_CLEAR_REMOTE_BUSY
+BUSY14 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ IF_DATA_FLAG=2_STOP_REJ_TIMER
+ DATA_FLAG:=1
+; V(R):=V(R)+1
+; DATA_INDICATION
+; OPTIONAL_SEND_RNR_XXX(X=0)
+; UPDATE_N(R)_RECEIVED
+; IF_DATA_FLAG=2_STOP_REJ_TIMER
+; DATA_FLAG:=0
+BUSY15 UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+BUSY16 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+BUSY17 UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+BUSY18 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+BUSY19 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ UPDATE_P_FLAG
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+; V(S):=N(R)
+; UPDATE_N(R)_RECEIVED
+; RE-SEND_I_CMD(P=1)
+; CLEAR_REMOTE_BUSY
+BUSY20 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+BUSY21 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ SEND_RNR_RSP(F=1)
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+BUSY22 SEND_RNR_CMD(F=1)
+ START_P_TIMER
+BUSY23 P_FLAG:=0
+; SEND_RNR_CMD(F=1)
+; START_P_TIMER
+; RETRY_COUNT:=RETRY_COUNT+1
+BUSY24 SEND_RNR_CMD(F=1)
+ START_P_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+BUSY25 DATA_FLAG:=1
+; SEND_RNR_CMD(F=1)
+; START_P_TIMER
+; RETRY_COUNT:=RETRY_COUNT+1
+; DATA_FLAG:=1
+BUSY26 DATA_FLAG:=1
+;============================================================================
+REJECT1 SEND_I_CMD(P=1)
+ START_P_TIMER
+ START_ACK_TIMER_IF_NOT_RUNNING
+; SEND_I_XXX(X=0)
+; START_ACK_TIMER_IF_NOT_RUNNING
+REJECT2 SEND_I_XXX(X=0)
+ START_ACK_TIMER_IF_NOT_RUNNING
+REJECT3 SEND_RNR_CMD(F=1)
+ START_P_TIMER
+ DATA_FLAG:=2
+; SEND_RNR_XXX(X=0)
+; DATA_FLAG:=2
+REJECT4 SEND_RNR_XXX(X=0)
+ DATA_FLAG:=2
+REJECT5 UPDATE_N(R)_RECEIVED
+ UPDATE_P_FLAG
+ IF_F=1_CLEAR_REMOTE_BUSY
+REJECT6 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+;
+; order of opcodes in REJECT7 is changed
+REJECT7 V(R):=V(R)+1
+ SEND_ACKNOWLEDGE_CMD(P=1)
+ START_P_TIMER
+ UPDATE_N(R)_RECEIVED
+ IF_F=1_CLEAR_REMOTE_BUSY
+ STOP_REJ_TIMER
+ DATA_INDICATION
+; V(R):=V(R)+1
+; DATA_INDICATION
+; UPDATE_P_FLAG
+; SEND_ACKNOWLEDGE_XXX(X=0)
+; UPDATE_N(R)_RECEIVED
+; IF_F=1_CLEAR_REMOTE_BUSY
+; STOP_REJ_TIMER
+;
+; order of opcodes in REJECT8 is changed
+REJECT8 V(R):=V(R)+1
+ SEND_ACKNOWLEDGE_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ STOP_REJ_TIMER
+ DATA_INDICATION
+;
+; order of opcodes in REJECT9 is changed
+REJECT9 V(R):=V(R)+1
+ SEND_ACKNOWLEDGE_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ STOP_REJ_TIMER
+ DATA_INDICATION
+REJECT10 UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+REJECT11 SEND_ACKNOWLEDGE_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+REJECT12 UPDATE_P_FLAG
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+REJECT13 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+REJECT14 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ UPDATE_P_FLAG
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+; V(S):=N(R)
+; UPDATE_N(R)_RECEIVED
+; RE-SEND_I_CMD(P=1)
+; START_P_TIMER
+; CLEAR_REMOTE_BUSY
+REJECT15 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+REJECT16 V(S):=N(R)
+ UPDATE_N(R)_RECEIVED
+ RE-SEND_I_RSP(F=1)
+ CLEAR_REMOTE_BUSY
+REJECT17 SEND_RR_CMD(P=1)
+ START_P_TIMER
+REJECT18 SEND_REJ_CMD(P=1)
+ START_P_TIMER
+ START_REJ_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+REJECT19 P_FLAG:=0
+; SEND_RR_CMD(P=1)
+; START_P_TIMER
+; START_REJ_TIMER
+; RETRY_COUNT:=RETRY_COUNT+1
+REJECT20 SEND_RR_CMD(P=1)
+ START_P_TIMER
+ START_REJ_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+;============================================================================
+AWAIT1 SEND_RNR_XXX(X=0)
+ DATA_FLAG:=0
+AWAIT2 SEND_REJ_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ RE-SEND_I_XXX(X=0)
+ START_REJ_TIMER
+ CLEAR_REMOTE_BUSY
+; SEND_REJ_CMD(P=1)
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; RE-SEND_I_XXX(X=0)
+; START_P_TIMER
+; START_REJ_TIMER
+; CLEAR_REMOTE_BUSY
+AWAIT3 SEND_REJ_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ START_REJ_TIMER
+AWAIT4 SEND_REJ_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ START_REJ_TIMER
+;
+; order of opcode in AWAIT5 changed
+AWAIT5 V(R):=V(R)+1
+ UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ RE-SEND_I_CMD(P=1)_OR_SEND_RR
+ START_P_TIMER
+ CLEAR_REMOTE_BUSY
+ DATA_INDICATION
+; V(R):=V(R)+1
+; DATA_INDICATION
+; STOP_P_TIMER
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; RE-SEND_I_XXX(X=0)_OR_SEND_RR
+; CLEAR_REMOTE_BUSY
+;
+; order of opcode in AWAIT6 changed
+AWAIT6 V(R):=V(R)+1
+ SEND_RR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ DATA_INDICATION
+;
+; order of opcode in AWAIT7 changed
+AWAIT7 V(R):=V(R)+1
+ SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ DATA_INDICATION
+AWAIT8 UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; RE-SEND_I_CMD(P=1)
+; START_P_TIMER
+; CLEAR_REMOTE_BUSY
+AWAIT9 UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+AWAIT10 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+AWAIT11 UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ SET_REMOTE_BUSY
+AWAIT12 UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+AWAIT13 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+AWAIT14 SEND_RR_CMD(P=1)
+ START_P_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+;============================================================================
+AWAIT_BUSY1 SEND_REJ_XXX(X=0)
+ START_REJ_TIMER
+AWAIT_BUSY2 SEND_RR_XXX(X=0)
+AWAIT_BUSY3 SEND_RR_XXX(X=0)
+AWAIT_BUSY4 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ DATA_FLAG:=1
+ CLEAR_REMOTE_BUSY
+ RE-SEND_I_XXX(X=0)
+; SEND_RNR_CMD(F=1)
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; START_P_TIMER
+; DATA_FLAG:=1
+; CLEAR_REMOTE_BUSY
+; RE-SEND_I_XXX(X=0)
+AWAIT_BUSY5 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ DATA_FLAG:=1
+AWAIT_BUSY6 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ DATA_FLAG:=1
+AWAIT_BUSY7 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ DATA_FLAG:=1
+ STOP_P_TIMER
+ CLEAR_REMOTE_BUSY
+ RE-SEND_I_XXX(X=0)
+; SEND_RNR_CMD(F=1)
+; V(R):=V(R)+1
+; DATA_INDICATION
+; START_P_TIMER
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; DATA_FLAG:=0
+; CLEAR_REMOTE_BUSY
+; RE-SEND_I_XXX(X=0)
+; OPTIONAL_SEND_RNR_XXX(X=0)
+; V(R):=V(R)+1
+; DATA_INDICATION
+; STOP_P_TIMER
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; DATA_FLAG:=0
+; CLEAR_REMOTE_BUSY
+; RE-SEND_I_XXX(X=0)
+AWAIT_BUSY8 OPTIONAL_SEND_RNR_XXX(X=0)
+ UPDATE_N(R)_RECEIVED
+ DATA_FLAG:=1
+; OPTIONAL_SEND_RNR_XXX(X=0)
+; V(R):=V(R)+1
+; DATA_INDICATION
+; UPDATE_N(R)_RECEIVED
+; DATA_FLAG:=0
+AWAIT_BUSY9 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ DATA_FLAG:=1
+; SEND_RNR_RSP(F=1)
+; V(R):=V(R)+1
+; DATA_INDICATION
+; UPDATE_N(R)_RECEIVED
+; DATA_FLAG:=0
+AWAIT_BUSY10 UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; RE-SEND_I_CMD(P=1)
+; START_P_TIMER
+; CLEAR_REMOTE_BUSY
+AWAIT_BUSY11 UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+AWAIT_BUSY12 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+AWAIT_BUSY13 UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ SET_REMOTE_BUSY
+AWAIT_BUSY14 UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+AWAIT_BUSY15 SEND_RNR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+AWAIT_BUSY16 SEND_RNR_CMD(F=1)
+ START_P_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+;============================================================================
+AWAIT_REJECT1 SEND_RNR_XXX(X=0)
+ DATA_FLAG:=2
+AWAIT_REJECT2 UPDATE_N(R)_RECEIVED
+AWAIT_REJECT3 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+;
+; order of opcodes in AWAIT_REJECT4 changed
+AWAIT_REJECT4 V(R):=V(R)+1
+ UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ RE-SEND_I_CMD(P=1)_OR_SEND_RR
+ START_P_TIMER
+ STOP_REJ_TIMER
+ CLEAR_REMOTE_BUSY
+ DATA_INDICATION
+; V(R):=V(R)+1
+; DATA_INDICATION
+; STOP_P_TIMER
+; STOP_REJ_TIMER
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; RE-SEND_I_CMD(P=1)_OR_SEND_RR
+; CLEAR_REMOTE_BUSY
+;
+; order of opcodes in AWAIT_REJECT5 changed
+AWAIT_REJECT5 V(R):=V(R)+1
+ SEND_RR_XXX(X=0)
+ STOP_REJ_TIMER
+ UPDATE_N(R)_RECEIVED
+ DATA_INDICATION
+;
+; order of opcodes in AWAIT_REJECT6 changed
+AWAIT_REJECT6 V(R):=V(R)+1
+ SEND_RR_RSP(F=1)
+ STOP_REJ_TIMER
+ UPDATE_N(R)_RECEIVED
+ DATA_INDICATION
+AWAIT_REJECT7 UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ RE-SEND_I_XXX(X=0)
+ CLEAR_REMOTE_BUSY
+; UPDATE_N(R)_RECEIVED
+; V(S):=N(R)
+; RE-SEND_I_CMD(P=1)
+; START_P_TIMER
+; CLEAR_REMOTE_BUSY
+AWAIT_REJECT8 UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+AWAIT_REJECT9 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ CLEAR_REMOTE_BUSY
+AWAIT_REJECT10 UPDATE_N(R)_RECEIVED
+ V(S):=N(R)
+ STOP_P_TIMER
+ SET_REMOTE_BUSY
+AWAIT_REJECT11 UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+AWAIT_REJECT12 SEND_RR_RSP(F=1)
+ UPDATE_N(R)_RECEIVED
+ SET_REMOTE_BUSY
+AWAIT_REJECT13 SEND_REJ_CMD(P=1)
+ START_P_TIMER
+ RETRY_COUNT:=RETRY_COUNT+1
+;============================================================================
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov