PGM DCL &TARGET *CHAR 15 '192.168.1.1' DCL &IFC1 *CHAR 15 '192.168.1.2' DCL &IFC2 *CHAR 15 '192.168.1.3' DCL &VIPA *CHAR 15 '192.168.1.4' DCL &IFC1STAT *INT 4 0 DCL &IFC2STAT *INT 4 0 DCL &PREF *INT 4 1 /* MAKE SURE PROXY IN PREFERRED ORDER */ CHGTCPIFC &VIPA PREFIFC(&IFC1 &IFC2) /* BEGIN LOOP FOREVER TO MONITOR THE INTERFACES */ LOOP: /* PING THROUGH INTERFACE 1 AND COUNT FAILURES */ PING &TARGET LCLINTNETA(&IFC1) NBRPKT(1) MSGMODE(*VERBOSE *ESCAPE) MONMSG MSGID(TCP3210) EXEC(GOTO IFC1FAIL) CHGVAR &IFC1STAT 0 GOTO IFC2 IFC1FAIL: IF (&IFC1STAT < 9999) + THEN(CHGVAR &IFC1STAT (&IFC1STAT + 1)) IFC2: /* PING THROUGH INTERFACE 2 AND COUNT FAILURES */ PING &TARGET LCLINTNETA(&IFC2) NBRPKT(1) MSGMODE(*VERBOSE *ESCAPE) MONMSG MSGID(TCP3210) EXEC(GOTO IFC2FAIL) CHGVAR &IFC2STAT 0 GOTO UPDVIPA IFC2FAIL: IF (&IFC2STAT < 9999) + THEN(CHGVAR &IFC2STAT (&IFC2STAT + 1)) UPDVIPA: /* TREAT 2 CONSECUTIVE FAILURES AS LINK DOWN INDICATION */ IF (&IFC1STAT < 2) THEN(GOTO PREF1) IF (&IFC2STAT < 2) THEN(GOTO PREF2) /* NO INTERFACES APPEAR TO BE UP... NO CHANGES */ GOTO DELAY PREF1: IF (&PREF "= 1) + THEN(CHGTCPIFC &VIPA PREFIFC(&IFC1 &IFC2)) CHGVAR &PREF 1 GOTO DELAY PREF2: IF (&PREF "= 2) + THEN(CHGTCPIFC &VIPA PREFIFC(&IFC2 &IFC1)) CHGVAR &PREF 2 GOTO DELAY DELAY: DLYJOB 30 GOTO LOOP ENDPGM