The errors indicate data corruptions caused either by a hardware problem or software problem or because the system was shut down abruptly while the NFS file system was active. If you believe the problem was due to a software problem, contact your DIGITAL support representative. If a directory is corrupted and cannot be repaired, all the files and directories under it are moved to the lost and found directory.
%UCX-E-ANA_DIR_BADALLOCERR, Problem: Directory cell group cell_pointer allocation error: duplication of out of container file size Solution: Will be cleared
%UCX-E-ANA_DIR_BADCGSIZE, Problem: Bad directory cell_pointer cell group size: bad_value Solution: Replace by initial directory size: good_value
%UCX-E-ANA_DIR_BADCGTYPE, Problem: Bad directory cell group cell_pointer type: bad_type Solution: Will be replaced by the correct type: good_type
%UCX-E-ANA_DIR_BADCHKSUM, Problem: Directory cell_pointer has mismatched cell group checkbyte: chksum1 <> chksum2 Solution: Will set checkbytes to same value
%UCX-E-ANA_DIR_BADDIRSIZE, Problem: Directory inode inode_number contains bad file size: bad_value bytes Solution: Replace by the correct size: good_value
%UCX-E-ANA_DIR_BADDOTLEN, Problem: Bad <. or ..> entry length: bad_value (cg: cell_group_number) Solution: Replace by correct length: good_value
%UCX-E-ANA_DIR_BADDOTNAM, Problem: Directory cell_pointer has bad <. or ..> entry name Solution: Replace by <. or ..>
%UCX-E-ANA_DIR_BADDOTNAMLEN, Problem: Bad <. or ..> entry name length: bad_value (cg: cell_group_number) Solution: Replace by correct length: good_value
%UCX-E-ANA_DIR_BADDOTNUM, Problem: Bad <. or ..> entry inode number: bad_inode_number (cg: cell_group_number) Solution: Replace by correct inode number: good_inode_number
%UCX-E-ANA_DIR_BADENTNAME, Problem: Bad directory cell_pointer entry name: up to 10 chars Solution: Will be cleared
%UCX-E-ANA_DIR_BADENTNAMLEN, Problem: Bad directory cell_pointer entry name length: bad_value Solution: Will be replaced by the correct length: good_value
%UCX$-E-ANA_DIR_BADENTRYLEN, Problem: Bad directory cell_group_number entry length: bad_value Solution: Will be replaced by the correct length: good_value
%UCX-E-ANA_DIR_BADHIERARCHY, Problem: Directory hierarchy corrupted: multiple directory tree found! Solution: Will place files not connected to root in lost and found directory
%UCX-E-ANA_DIR_BADMAXERROS, Problem: Bad directory (cg: cell_group_number); cannot be recovered Solution: Will be deleted. All its files will be moved to lost and found
%UCX-E-ANA_DIR_BADPNORAWSIZE, Problem: Raw data inode has bad file size: bad_value bytes Solution: Replace by correct size: good_value
%UCX-E-ANA_DIR_BADRAWCG, Problem: Bad raw data file cell_group_pointer (cannot be corrected) Solution: Will be deleted
%UCX-E-ANA_DIR_BADRAWCHKSUM, Problem: Raw data cell_group_pointer has mismatched cell group checkbyte: chksum1 <> chksum2 Solution: Will set checkbytes to same value
%UCX-E-ANA_DIR_BADRAWSIZE, Problem: Raw data cell group cell_group_pointer has bad size: bad_value Solution: Replace by correct size: good_value
%UCX-E-ANA_DIR_BADRAWTYPE, Problem: Raw data cell group cell_group_pointer has bad type: bad_type Solution: Will be replaced by correct type: good_type
%UCX-E-ANA_DIR_BADROOT, Problem: Root directory corrupted
Solution: Will be recreated. Its files will be placed in lost and found
The following error messages are related to errors detected in directories and raw data cell groups (for use by DIGITAL only). All problems are corrected automatically, if the /REPAIR option is set, without user confirmation or action. The errors indicate data corruptions caused either by a hardware problem or software problem or the because system was shut down abruptly while the NFS file system was active. If you believe the problem was due to software problems, contact your DIGITAL support representative.
%UCX-E-ANA_BMP_BADBITMAP, Problem: Bitmap allocation from cell cell_number to cell cell_number bad_value Solution: Will be re-allocated
%UCX-E-ANA_BMP_BADBCGSIZE, Problem: Bad bitmap cell group allocation: inode_number Solution: Will be rebuilt
%UCX-E-ANA_BMP_BADBMPCGRPSIZE, Problem: Bad bitmap cell group (cg: cell_group_number) cell group size: bad_value Solution: Replace by correct value: good_value
%UCX-E-ANA_BMP_BADBMPCGRPCHKSUM, Problem: Bitmap cell group (cg: cell_group_number) has mismatched cell group checkbyte: chksum1 <> chksum2 Solution: Will set checkbytes to same value
%UCX-E-ANA_BMP_BADBMPCGRPTYPE, Problem: Bad bitmap cell group (cg: cell_group_number) cell group type: bad_type Solution: Replace by correct type: good_type
%UCX-E-ANA_BMP_BADDCGRPCHKSUM, Problem: Deleted cell (cg: cell_group_number) has mismatched cell group checkbyte Solution: Will set checkbytes to same value
%UCX-E-ANA_BMP_BADDCGRPS, Problem: Cells cell_number to cell_number should be deleted cells but have wrong attributes Solution: Will be corrected to be deleted cells
%UCX-E-ANA_BMP_BADDCGRPSIZE, Problem: Deleted cell (cg: cell_group_number) has bad cell group size: bad_value
Solution: Replace by correct value: good_value
%UCX-E-ANA_BMP_BADDCGRPTYPE, Problem: Deleted cell (cg: cell_group_number) has bad cell group type: bad_type
Solution: Replace by correct type: good_type
%UCX-E-ANA_BMP_NEWBMP, New bitmap file created
%UCX-E-ANA_BMP_BADNULLMPTR, Problem: Unused bitmap file map pointer has bad value: bad_map_pointer Solution: Will be replaced by correct value: 00000000
The following error messages are produced during the reconstruction of the directory hierarchy. All problems are corrected automatically, if the /REPAIR option is set, without user confirmation or action. The problem indicates data corruptions caused either by a hardware or software problem or because the system shut down abruptly while the NFS file system was active. If you believe the problem was due to software problems, contact your DIGITAL support representative.
%UCX-I-ANA_FIN_BADNLINK, Problem: Bad inode inode_number link count: wrong_value Solution: Will be replaced by correct number: correct_value
%UCX-I-ANA_FIN_FORIEGN, Problem: Cannot delete bad directory: contains non-NFS files Solution: Directory will be removed from NFS file system but not deleted
%UCX-I-ANA_FIN_NOBMP, Problem: Bitmap file entry is not found in the root directory Solution: Will add the bitmap file entry to the root directory
%UCX-I-ANA_FIN_NOSUPBLK, Problem: Super Block entry is not found in the root directory Solution: Will add the Super Block entry to the root directory
This appendix provides a template for a custom security driver that:
The security algorithms are implemented by the user in security routines within this driver.
The Internet driver calls the security routines within this driver at different points during IP, UDP, and TCP protocol processing. The Internet driver can be enabled/disabled calling the security routines. Note that to reload the user-written security driver, the system must be rebooted.
The user-written code can be inserted in this module in the specially marked spaces, or it can reside in separate modules that are written by the user, if so desired. If the driver will contain more than this module, the user must insert in this module code to call the other modules' security routines. The user must link all modules together in one driver.
It is most likely that besides the code implementing the security algorithms, some auxiliary code will create and maintain data structures or tables that are used by the security algorithms. Therefore, this template driver contains sample code for two basic types of functions:
For the first type of function (creating and maintaining internal tables or data structures), this template driver provides the framework for using the IO$_SETMODE and IO$_SENSEMODE OpenVMS QIO functions, with additional granularity created by a set of subfunctions to:
The code in the template driver for this type of function is written as OpenVMS driver FDT routines. They are only a suggestion. The user can decide to use them or not.
For the second type of function (security algorithms), this skeleton driver provides the entry points and return for the security routines. There are four possible security routines, which are called by the Internet driver for each packet, as soon as the security driver's operation is enabled. Two of the four routines are called during IP protocol processing, while the other two are called during UDP or TCP protocol processing as follows:
IP_SECVEC$L_IP_INPUT | IP input |
IP_SECVEC$L_IP_OUPUT | IP output |
IP_SECVEC$L_UDP_TCP_INPUT | UDP or TCP input |
IP_SECVEC$L_UDP_TCP_OUTPUT | UDP or TCP output |
Because the Internet driver calls the security routines, once it is enabled for such an operation, you cannot add or remove any of the routines. At the most, if one of the routines is not needed, it just has to be left the way it is; it is coded in this skeleton driver to return with a success code without doing anything.
Each of the four security routines is given a list of input parameters, such as the IP, UDP, or TCP packet addresses. The routine checks and returns a success to the Internet driver if the checking has been successful, or it returns a failure code if the checking determined a security problem. In case of success, the Internet driver continues the processing. In case of failure, it drops the packet and increments a counter specific to the security routine. Security counters will be available on a per-protocol and socket basis.
All security routines:
D.2 Example Command File for Building the Security Driver
$ ! $ ! Assemble the UCX security driver $ ! $! macro/lis ucx_security $ ! $ ! Link the user written UCX security driver $ ! $ driver n== "scdriver" $ LINK /EXE='driver' /SYSTEM=0 /HEADER - /MAP='driver'/FULL/CROSS - /SYMBOLS='driver' - ! ucx_security + ucx_security_c, - ucx_security, - SYS$SYSTEM:SYS.STB/SELECTIVE $exit .SBTTL Macro Declarations .LIBRARY /SYS$LIBRARY:LIB.MLB/ EXTERNAL DEFINITIONS: $AQBDEF ; AQB definitions $CRBDEF ; DEFINE CRB $DCDEF ; DEVICE CLASSES AND TYPES $DDBDEF ; DEFINE DDB $DDTDEF ; DEFINE DDT $DEVDEF ; DEVICE CHARACTERISTICS $DYNDEF ; Dynamic structure definitions $IDBDEF ; DEFINE IDB OFFSETS $IODEF ; I/O Function Codes $IRPDEF ; IRP definitions $MSGDEF ; Message types $ORBDEF ; Define Object's Rights Block offsets $SSDEF ; Return codes $TQEDEF ; Time definitions $UCBDEF ; DEFINE UCB $VECDEF ; DEFINE VECTOR FOR CRB $SPLCODDEF .CROSS .SBTTL lOCAL VARIABLES ; INET$C_IPL = 8 P1 = 0 ; QIO P1 parameter offset from AP P2 = 4 ; QIO P2 parameter offset from AP P3 = 8 P4 = 12 P5 = 16 P6 = 20 ; ; Security address vector offsets ; IP_SECVEC$L_IP_INPUT = 0 IP_SECVEC$L_IP_OUTPUT = 4 IP_SECVEC$L_UDP_TCP_INPUT = 8 IP_SECVEC$L_UDP_TCP_OUTPUT = 12 .SBTTL DPTAB - Driver Prologue Table ; ; DRIVER PROLOGUE TABLE ; .PSECT $$$105_PROLOGUE DPTAB - ; Define driver prologue table END = SC$_END,- ; End of driver ADAPTER = NULL,- ; Adapter type UCBSIZE = UCB$C_LENGTH,- ; UCB size NAME = SCDRIVER ; Driver name DPT_STORE INIT ; CONTROL BLOCK INIT VALUES ; DPT_STORE CRB,CRB$L_INTD+VEC$L_ADP,L,0 ; No ADP pointer DPT_STORE UCB,UCB$W_MB_SEED,W,0 ; Init. unit value for cloning DPT_STORE UCB,UCB$B_FLCK,B,SPL$C_IOLOCK8 ; Fork lock index DPT_STORE UCB,UCB$B_DIPL,B,INET$C_IPL ; Device IPL DPT_STORE ORB,ORB$B_FLAGS,B,- <ORB$M_PROT_16> ; SOGW protection word DPT_STORE ORB,ORB$W_PROT,W,0 ; Default protection DPT_STORE ORB,ORB$L_OWNER,L,<^X010001> ; Owner UIC DPT_STORE UCB,UCB$L_DEVCHAR,L,- ; Device characteristics <DEV$M_AVL!- ; Available DEV$M_MBX!- ; Mailbox type (no hardware) DEV$M_IDV!- ; Input device DEV$M_ODV- ; Output device > ; DPT_STORE UCB,UCB$W_DEVBUFSIZ,W,256 ; DPT_STORE UCB,UCB$W_STS,W,- ; <UCB$M_ONLINE!- ; Device online UCB$M_TEMPLATE-; SC0 is the "template" UCB > ; ; DPT_STORE REINIT ; CONTROL BLOCK RE-INIT VALUES DPT_STORE DDB,DDB$L_DDT,D,SC$DDT DPT_STORE CRB,CRB$L_INTD+VEC$L_INITIAL, D, SC$CTRL_INIT DPT_STORE CRB,CRB$L_INTD+VEC$L_START, D, SC$_VECTOR DPT_STORE END ; ; ; DRIVER DISPATCH TABLE ; .PSECT $$$115_DRIVER,LONG DDTAB DEVNAM = SC,- ; DRIVER DISPATCH TABLE FUNCTB = FUNCTABLE ; Function decision table address .SBTTL FUNCTION DECISION TABLE FUNCTABLE: ; FUNCTION DECISION TABLE FUNCTAB ,- ; Legal Functions SETMODE,- ; Set mode SETCHAR,- ; Set characteristics SENSEMODE,- ; Sense mode SENSECHAR,- ; Sense characteristics > FUNCTAB ,- ; BUFFERED I/O FUNCTIONS SETMODE,- ; Set mode SETCHAR,- ; Set characteristics SENSEMODE,- ; Sense mode SENSECHAR,- ; Sense characteristics > FUNCTAB SC$FDT_SETMODE, <SETMODE> ; Set device mode FUNCTAB SC$FDT_SETCHAR, <SETCHAR> ; Set device characteristics FUNCTAB SC$FDT_SENSEMODE, <SENSEMODE>; Sense device characetristics FUNCTAB SC$FDT_SENSECHAR, <SENSECHAR>; Sense device characetristics ; ; LOCAL STORAGE ; .ALIGN LONG ;+ ; ; Security device specific dispatch table ;- SC$_VECTOR:: ; .ADDRESS 0 ; ip input .ADDRESS 0 ; ip output .ADDRESS 0 ; udp/tcp input .ADDRESS 0 ; udp/tcp output .SBTTL SC$CTRL_INIT - Initialize pseudo device ;++ ; SC$CTRL_INIT - INITIALIZE INTERFACE ; ; FUNCTIONAL DESCRIPTION: ; ; This routine is entered at driver load (device CONNECT time) ; and power recovery. ; ; All we do is build the address vector. ; ; INPUTS: ; ; R4 = Address of the unit CSR ; R5 = IDB of unit ; R6 = address of DDB associated with the controller ; R8 = Address of the unit CRB ; ; OUTPUTS: ; ; R0, R1, R2, R3 are destroyed. ; ; IMPLICIT INPUTS: ; ; IPL = IPL$_POWER ; ;-- SC$CTRL_INIT:: MOVL DDB$L_UCB(R6),R5 ; MOVAB SC$_VECTOR, R0 ; vector address ; MOVAB SC$_IP_INPUT, IP_SECVEC$L_IP_INPUT(R0) ; MOVAB SC$_IP_output, IP_SECVEC$L_IP_OUTPUT(R0); ; MOVAB SC$_UDP_TCP_INPUT, IP_SECVEC$L_UDP_TCP_INPUT(R0) ; MOVAB SC$_UDP_TCP_OUTPUT, IP_SECVEC$L_UDP_TCP_OUTPUT(R0); MOVZBL #SS$_NORMAL, R0 ; RSB .dsabl lsb .SBTTL FDT routines .ENABL LSB ; ; Define security driver I/O subfunctions, that are passed as P3 ; in IO$_SETMODE or IO$_SENSEMODE QIO's ; SC$C_CREATE_TABLE = 1 SC$C_DELETE_TABLE = 2 SC$C_SHOW_TABLE = 3 ; SC$C_ADD_ENTRY = 10 SC$C_DELETE_ENTRY = 11 SC$C_SHOW_ENTRY = 12 SC$C_MODIFY_ENTRY = 13 ; ; .sbttl SC$FDT_SETMODE .sbttl SC$FDT_SETCHAR ;+ ;SC$FDT_SETMODE ; Set device mode ;SC$FDT_SETCHAR ; Set device characteristics ; ; ; The following parameters can be specified with the I/O functions: ; ; INPUTS: AP Pointer to the QIO P1....P6 parameters ; ; P1 = address of buffer ; P2 = length of buffer ; P3 = subfunction code - defined above ; ; IPL ASTDEL ; ; R11-R9 Scratch ; R8 Must be saved/restored if return to Exec for next ; FDT routine ; R7 I/O function code without modifiers ; R6 CCB address ; R5 UCB address ; R4 PCB address ; R3 IRP address ; R2-R0 Scratch ; ; OUTPUTS: R5,R3 Preserved ; R1 Device dependent information ; All other regs are clobbered. ; ; IPL: IPL$_ASTDEL = 2 ; ; Warning: creating, deleting, modifying, showing tables ; should be done at IPL 8 (the IPL of the security device) ; ; The following steps have to be followed: ; ; 1. validate P1 and P2, and then check the access to the ; user buffer - read or write depending on the ; operation. ; ; 2. data transfer from user space to system space ; - create, add, modify - ; should be done as follows: ; - allocate a temporary buffer ; - move data from user space to the temporary buffer ; - raise IPL to 8 (in SMP get the IPL 8 lock) ; - transfer data from the temporary buffer to the ; driver table. ; - lower IPL to 2 ; - exit ; 3. data transfer from system space to user space ; - show - ; should be done as follows: ; - allocate a temporary buffer ; - raise IPL to 8 (for SMP get lock) ; - move data from system space to the temporary buffer ; - lower IPL to 2 (in SMP release the lock) ; - transfer data from the temporary buffer to the ; user space ; - exit ;- .ENABL LSB SC$FDT_SETMODE:: ; Set device mode SC$FDT_SETCHAR:: ; Set device characteristics ; CMPL UCB$L_PID(R5), IRP$L_PID(R3) ; Same PID BEQLU 1020$ ; if EQLU yes SC_SETMODE_ACCVIO: MOVZWL #SS$_ACCVIO,R0 ; If all parameters are null return BADPARAM BRW SC_SETMODE_ERROR ; Access violation 1020$: ; MOVZWL #SS$_BADPARAM,R0 ; If all parameters are null return BADPARAM MOVL P3(AP),R1 ; Is there a P3 - subfunction BEQL SC_SETMODE_BADPAR ; If EQL no CMPL SC$C_CREATE_TABLE, R1 ; BEQLU SC_CREATE_TABLE ; CMPL SC$C_DELETE_TABLE, R1 ; BEQLU SC_DELETE_TABLE ; ; CMPL SC$C_ADD_ENTRY , R1 ; BEQLU SC_ADD_ENTRY ; CMPL SC$C_DELETE_ENTRY , R1 ; BEQLU SC_DELETE_ENTRY ; CMPL SC$C_MODIFY_ENTRY , R1 ; BEQLU SC_MODIFY_ENTRY ; SC_SETMODE_BADPAR: MOVZWL #SS$_BADPARAM,R0 ; SC_SETMODE_ERROR: JMP G^EXE$ABORTIO ; SC_CREATE_TABLE: SC_DELETE_TABLE: LOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl LOCKIPL=#inet$c_ipl,- ; SAVIPL=-(SP),- ; PRESERVE=NO ; ; ; ; Add your code ; UNLOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl NEWIPL=(SP)+,- ; CONDITION=RESTORE,- ; PRESERVE = YES BRB SC_SETMODE_END SC_ADD_ENTRY: SC_DELETE_ENTRY: SC_MODIFY_ENTRY: LOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl LOCKIPL=#inet$c_ipl,- ; SAVIPL=-(SP),- ; PRESERVE=NO ; ; ; ; Add your code ; ; UNLOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl NEWIPL=(SP)+,- ; CONDITION=RESTORE,- ; PRESERVE = YES ; SC_SETMODE_END: MOVZBL #SS$_NORMAL,R0 ; Status SC_SETMODE_END_1: JMP G^EXE$QIORETURN .dsabl lsb .sbttl SC$FDT_SENSEMODE .sbttl SC$FDT_SENSECHAR ;+ ;SC$FDT_SENSEMODE ; SENSE device mode ;SC$FDT_SENSECHAR ; SENSE device characteristics ; ; ; The following parameters can be specified with the I/O functions: ; ; INPUTS: AP Pointer to the QIO P1....P6 parameters ; ; P1 = address of buffer ; P2 = length of buffer ; P3 = subfunction code ; ; IPL ASTDEL ; ; R11-R9 Scratch ; R8 Must be saved/restored if return to Exec for next ; FDT routine ; R7 I/O function code without modifiers ; R6 CCB address ; R5 UCB address ; R4 PCB address ; R3 IRP address ; R2-R0 Scratch ; ; OUTPUTS: R5,R3 Preserved ; R1 Device dependent information ; All other regs are clobbered. ;- .ENABL LSB SC$FDT_SENSEMODE:: ; SENSE device mode SC$FDT_SENSECHAR:: ; SENSE device characteristics ; CMPL UCB$L_PID(R5), IRP$L_PID(R3); Same PID BEQLU 1020$ ; if EQLU yes BRW SC_SETMODE_ACCVIO ; Access violation 1020$: ; MOVZWL #SS$_BADPARAM,R0 ; If all parameters are null return BADPARAM MOVL P3(AP),R1 ; Is there a P3 - subfunction BEQL 1100$ ; If EQL no CMPL SC$C_SHOW_TABLE, R1 ; BEQLU SC_SHOW_TABLE ; CMPL SC$C_SHOW_ENTRY, R1 ; BEQLU SC_SHOW_ENTRY ; 1100$: BRW SC_SETMODE_BADPAR ; SC_SHOW_TABLE: LOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl LOCKIPL=#inet$c_ipl,- ; SAVIPL=-(SP),- ; PRESERVE=NO ; ; ; ; Add your code ; ; UNLOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl NEWIPL=(SP)+,- ; CONDITION=RESTORE,- ; PRESERVE = YES MOVZBL #SS$_NORMAL,R0 ; Status JMP G^EXE$QIORETURN SC_SHOW_ENTRY: LOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl LOCKIPL=#inet$c_ipl,- ; SAVIPL=-(SP),- ; PRESERVE=NO ; ; ; Add your code ; ; = UNLOCK LOCKNAME=IOLOCK8,- ; SYNCHRONIZE ipl NEWIPL=(SP)+,- ; CONDITION=RESTORE,- ; PRESERVE = YES MOVZBL #SS$_NORMAL,R0 ; Status JMP G^EXE$QIORETURN .SBTTL SC_SECURITY_ROUTINES ;+ ; Called from INTERnet driver ; ; All registers used in these routines must be saved and ; restored before return to the INTERnet driver ; ; If the 'user written security driver checking succedes, ; return SS$_NORMAL in R0. ; If the checking fails return SS$_ABORT in R0. ; The INTERnet driver will drop the packet. ; ; IPL = 8. ; ; The IPL should not change during these routines ; processing. Also the routines should not touch ; any spinlocks, fork locks or device locks. ;- .SBTTL IP_INPUT_SECURITY_ROUTINE .enabl lsb ;+ SC$_IP_INPUT ; Input parameters: ; ; - r4 - address of IP header ; - r6 - address of IP datagram header mbuf ; - r8 - INTERnet interface address ;- SC$_IP_INPUT:: ; ; ; Add your code and comment out the line: ; ; MOVZWL #SS$_NORMAL, R0 ; ; ; MOVZWL #SS$_NORMAL, R0 ; RSB .dsabl lsb .SBTTL IP_OUTPUT_SECURITY_ROUTINE .enabl lsb ;+ SC$_IP_OUTPUT ; Input parameters: ; ; - r4 - address of IP header ; - r6 - address of IP datagram header mbuf ; - r8 - interface address ; - r11 - address of socket address structure ;- SC$_IP_OUTPUT:: ; = ; ; Add your code and comment out the line: ; ; MOVZWL #SS$_NORMAL, R0 ; ; ; = MOVZWL #SS$_NORMAL, R0 ; RSB .dsabl lsb .SBTTL UDP_TCP_INPUT_SECURITY_ROUTINE .enabl lsb ;+ SC$_UDP_TCP_INPUT ; Input parameters: ; ; - r2 - protocol number ; - r3 - address of IP datagram header mbuf ; - r4 - address of IP header ; - r5 - address of UDP or TCP header ; - r6 - address of UCB ; ;- SC$_UDP_TCP_INPUT:: ; = ; ; Add your code and comment out the line: ; ; MOVZWL #SS$_NORMAL, R0 ; ; ; MOVZWL #SS$_NORMAL, R0 ; RSB .dsabl lsb .SBTTL UDP_TCP_OUTPUT_SECURITY_ROUTINE .enabl lsb ;+ SC$_UDP_TCP_OUTPUT ; Input parameters: ; ; - r2 - protocol number ; - r3 - address of IP datagram header mbuf ; - r4 - address of IP header ; - r5 - address of UDP or TCP header ; - r6 - address of UCB ; - r8 - INTERnet interface address ; ;- SC$_UDP_TCP_OUTPUT:: ; = ; ; Add your code and comment out the line: ; ; MOVZWL #SS$_NORMAL, R0 ; ; ; = MOVZWL #SS$_NORMAL, R0 ; RSB ; Done .dsabl lsb .PSECT $$$116_DRIVER,LONG SC$_END:: ; End of driver .End
The UCX TELNET implementation supports IBM 3270 terminal emulation. The default translation tables for DIGITAL/IBM-terminal compatibility satisfy most user needs.