! ******************************************************************************************************************************** ! Created 11-OCT-1991 20:41:51 by VAX SDL T3.2-8 Source: 10-OCT-1991 15:54:48 _$254$DUA99:[PHV_LAN.SRC]LANUDEF.SDL;1 ! ******************************************************************************************************************************** !*** MODULE LANU *** ! ! LANUDEF Version Identification ! literal LAN$C_LANUDEF_VER = 12; ! This constant is used (after swapping the protocol type bytes) to validate ! a protocol type. literal LAN$C_PTY_MIN = 1501; ! Protocol Types literal NI$C_PTY_DUMP_LOAD = 352; ! DNA Dump/Load (MOP) literal NI$C_PTY_RMTCN = 608; ! DNA Remote Console (MOP) literal NI$C_PTY_ROUTE = 864; ! DNA Routing literal NI$C_PTY_LAT = 1120; ! Local Area Transport (LAT) literal NI$C_PTY_DIAG = 1376; ! Diagnostics literal NI$C_PTY_CUST = 1632; ! Customer Use literal NI$C_PTY_SCA = 1888; ! System Communication Architecture (SCA) literal NI$C_PTY_LOOPB = 144; ! Loopback Assist protocol type literal NI$C_PTY_TCPIP = 8; ! TCP/IP literal NI$C_PTY_ARP = 1544; ! ARP literal NI$C_PTY_BRIDGE = 14464; ! BRIDGE literal NI$C_PTY_ELN = 15232; ! VAX ELN literal NI$C_PTY_DNAME = 15488; ! DNA Name Service literal NI$C_PTY_ENCRY = 15744; ! Encryption literal NI$C_PTY_DTIME = 16000; ! DNA Time Service literal NI$C_PTY_LTM = 16256; ! LTM literal NI$C_PTY_BIOS = 16512; ! BIOS literal NI$C_PTY_LAST = 16768; ! Local Area Storage (LAST) ! DIGITAL multicast address assignments literal NI$C_MCA_L_MOP = 16777387; ! DNA Dump/Load Assistance (MOP) literal NI$C_MCA_W_MOP = 0; ! DNA Dump/Load Assistance (MOP) literal NI$C_MCA_L_RMTCN = 33554603; ! DNA Remote Console (MOP) literal NI$C_MCA_W_RMTCN = 0; ! DNA Remote Console (MOP) literal NI$C_MCA_L_ROUTERS = 50331819; ! DNA Routing Routers literal NI$C_MCA_W_ROUTERS = 0; ! DNA Routing Routers literal NI$C_MCA_L_ENDNODE = 67109035; ! DNA Routing End nodes literal NI$C_MCA_W_ENDNODE = 0; ! DNA Routing End nodes literal NI$C_MCA_L_LAT = 196779; ! Local Area Transport (LAT) literal NI$C_MCA_W_LAT = 0; ! Local Area Transport (LAT) literal NI$C_MCA_L_CUST = 262315; ! Customer Use ! CONSTANT MCA_W_CUST EQUALS %X0000-%XFFFF TAG C PREFIX NI$; /* Customer Use literal NI$C_MCA_L_SCA = 17039531; ! System Communication Architecture (SCA) ! CONSTANT MCA_W_SCA EQUALS %X0000-%XFFFF TAG C PREFIX NI$; /* System Communication Architecture (SCA) ! Cross-company address assignments literal NI$C_CCA_L_BROADCAST = -1; ! Broadcast literal NI$C_CCA_W_BROADCAST = 65535; ! Broadcast literal NI$C_CCA_L_LOOPBACKA = 207; ! Loopback Assistance literal NI$C_CCA_W_LOOPBACKA = 0; ! Loopback Assistance ! DNA SNAP SAP assignments literal NI$C_NULL_SAP = 0; ! The NULL SAP literal NI$C_LLC_MGT_FNC_SAP = 2; ! LLC SUBLAYER MANAGEMENT FUNCTION SAP literal NI$C_LLC_MGT_SAP = 3; ! LLC SUBLAYER MANAGEMENT SAP literal NI$C_SNAP_SAP = 170; ! The SNAP SAP ! DNA DSAP assignments literal NI$C_GLOBAL_DSAP = 255; ! GLOBAL DSAP ! DNA GROUP SAP assignments literal NI$C_MAX_NO_GSAP = 4; ! Maximum number of group SAPs per user ! LAN frame constants literal NI$C_CRC = 4; ! Size of Ethernet CRC literal NI$C_ADDR_SIZE = 6; ! Maximum size of NI address literal NI$C_LEN_SIZE = 2; ! Size of the length field ! CSMACD frame constants literal NI$C_MAX_PKTSIZE = 1500; ! Maximum of Ethernet Packet without padding literal NI$C_MAX_PKTSIZE_PAD = 1498; ! Maximum of Ethernet Packet with padding literal NI$C_MAX_PKTSIZE_CLI = 1497; ! Maximum of 802 Packet literal NI$C_MAX_PKTSIZE_USR = 1496; ! Maximum of 802 Packet literal NI$C_MAX_PKTSIZE_802E = 1492; ! Maximum of 802E Packet literal NI$C_MAX_PKTSIZE_HWA = 1518; ! Maximum hardware Packet including header and CRC literal NI$C_MIN_PKTSIZE = 46; ! Minimum of Ethernet Packet ! ! Frame/packet header sizes for CSMACD ! literal NI$C_HDRSIZE_ETH = 14; ! Maximum of Ethernet Packet without padding literal NI$C_HDRSIZE_PAD = 16; ! Maximum of Ethernet Packet with padding literal NI$C_HDRSIZE_CLI = 17; ! Maximum of 802 Packet literal NI$C_HDRSIZE_USR = 18; ! Maximum of 802 Packet literal NI$C_HDRSIZE_802E = 22; ! Maximum of 802E Packet ! LAN Item List definitions literal DLL$K_DL_ENTITY = 1; ! Create Input literal DLL$K_CLIENT = 2; ! Create Input literal DLL$K_DL_TEMPLATE = 3; ! Create Input literal DLL$K_LAN_DEVICE = 4; ! Create Input literal DLL$K_PORT_ENTITY = 5; ! Create Output literal DLL$K_MINIMUM_BUFFER_SIZE = 6; ! Enable Input literal DLL$K_PREFERRED_BUFFER_SIZE = 7; ! Enable Input literal DLL$K_PROTOCOLID = 8; ! Enable Input literal DLL$K_DECUSERDATA = 9; ! Enable Input literal DLL$K_PROFILE = 10; ! Enable Output literal DLL$K_ACTUAL_BUFFER_SIZE = 11; ! Enable Output ! ++ ! ! This structure represents a LAN module entity. There will be one used to ! represent CSMA/CD; even if there are multiple CSMA/CD stations. There will ! also be one used to represent FDDI. ! ! These are the common fields of the LAN module entity. ! -- literal LAN$K_FIXED_LENGTH = 76; ! Length of LAN block literal LAN$S_LANUDEF = 76; ! This is version 1 of the LAN structure. Use #1 (no symbol) for the ! version field. macro LAN$L_VERSION = 0,0,32,0 %; ! Version of LAN database macro LAN$L_RESERVED1 = 4,0,32,0 %; ! Reserved macro LAN$A_GET_DEVICE = 8,0,32,0 %; ! Address of LAN$GET_DEVICE macro LAN$L_RESERVED2 = 12,0,32,0 %; ! Reserved macro LAN$A_CREATE_PORT = 16,0,32,0 %; ! Address of LAN$CREATE_PORT macro LAN$A_DELETE_PORT = 20,0,32,0 %; ! Address of LAN$DELETE_PORT macro LAN$T_TQE = 24,0,0,1 %; literal LAN$S_TQE = 52; ! TQE for the one second timer !*** MODULE LDC *** ! ++ ! ! LAN Device Characteristics structure ! ! This data structure is returned on a call to LAN$GET_DEVICE. It is ! embedded in the LSB. ! ! -- literal LDC$K_LENGTH = 24; ! Length of LDC block literal LDC$S_LDCDEF = 24; macro LDC$A_NAME = 0,0,32,0 %; ! Address of a counted string ! containing the device name macro LDC$W_TYPE = 4,0,16,0 %; ! Type of device - same as ! VCIB$W_DLL_TYPE macro LDC$W_RCVSIZE = 6,0,16,0 %; ! Number of entries in the receive ! ring macro LDC$L_RATE128 = 8,0,32,0 %; ! Kilobits per second with 128 bytes ! of user data (on transmit) macro LDC$L_RATE256 = 12,0,32,0 %; ! Kilobits per second with 256 bytes ! of user data (on transmit) macro LDC$B_DEVTYPE = 16,0,8,0 %; ! VMS Device type (from the UCB) macro LDC$B_MOPID = 17,0,8,0 %; ! MOP ID for this device macro LDC$L_MOPNAME = 20,0,32,0 %; ! Counted string (always three ! characters) for MOP name ! Remember to make sure that this structure is an integral number of ! quadwords. That helps keep the LSB fields aligned. !*** MODULE LIL *** ! ++ ! ! LAN Item List definitions ! ! This data structure should look like a DECnet-VAX item list. We don't use ! the DECnet-VAX item list symbols because they are not available. ! ! -- literal LIL$T_DATA = 12; ! Start of the itemlist literal LIL$T_ITEMVAL = 4; ! Value for this item literal LIL$S_LILDEF = 12; macro LIL$R_LIL_UNION = 0,0,0,0 %; literal LIL$S_LIL_UNION = 12; ! This structure definition will describe the header of the itemlist. macro LIL$R_HEADER_FIELDS = 0,0,0,0 %; macro LIL$L_LISTLEN = 0,0,32,0 %; ! Number of bytes in the list macro LIL$A_LISTADR = 4,0,32,0 %; ! Address of the list macro LIL$W_SIZE = 8,0,16,0 %; ! Size of structure macro LIL$B_TYPE = 10,0,8,0 %; ! Type = DYN$C_NET macro LIL$B_SUBTYPE = 11,0,8,0 %; ! Subtype = DYN$C_NET_ITEM ! This structure definition will describe an item in the itemlist. Note ! that the ITEMLEN field includes the size of the ITEMLEN, ITEMTAG, and ! ITEMVAL fields. macro LIL$R_LIST_FIELDS = 0,0,32,0 %; macro LIL$W_ITEMLEN = 0,0,16,0 %; ! Number of bytes in the item macro LIL$W_ITEMTAG = 2,0,16,0 %; ! Size of structure !*** MODULE VCIBDLL *** ! ++ ! ! Data Link definitions that follow the standard VCIB fields ! ! -- literal VCIB$M_DLL_RCV_DCB = 1; literal VCIB$M_DLL_RCV_MAC = 2; literal VCIB$M_DLL_XMT_CHAIN = 1; literal VCIB$M_DLL_XMT_RCVRSB = 2; literal VCIB$M_DLL_PORT_STATUS = 4; literal VCIB$K_DLL_CSMACD = 1; ! CSMACD data link literal VCIB$K_DLL_DDCMP = 2; ! DDCMP data link literal VCIB$K_DLL_FDDI = 3; ! FDDI data link literal VCIB$K_DLL_HDLC = 4; ! HDLC data link literal VCIB$K_DLL_LAPB = 5; ! LAPB data link literal VCIB$M_LAN_RCV_LIM = 1; literal VCIB$M_LAN_RCV_ICS = 2; literal VCIB$M_LAN_FTC = 4; literal VCIB$M_LAN_2ND_DEV = 8; literal VCIB$M_LAN_SFR = 16; literal VCIB$M_LAN_SCC = 32; literal VCIB$M_LAN_RCV_DCB = 1; literal VCIB$M_LAN_DP_DELAY = 2; literal VCIB$K_LAN_FIXED_LENGTH = 140; ! Length of LAN VCIB literal VCIB$M_SYN_UNSEQ = 1; literal VCIB$K_SYN_FIXED_LENGTH = 86; ! Length of SYN VCIB literal VCIB$S_VCIBDLLDEF = 140; ! First get to the end of the common VCIB section. Then we can start ! the overlay. ! DLL extensions to the VCIB. Note that the DLL extension includes ! some generic extensions (DLL) followed by an overlay of the LAN ! and SYN extensions. macro VCIB$A_DLL_INPUT_LIST = 60,0,32,0 %; ! Address of input item list macro VCIB$A_DLL_OUTPUT_LIST = 64,0,32,0 %; ! Address of output item list macro VCIB$R_DLL_OVERLAY_1 = 68,0,16,0 %; macro VCIB$W_DLL_CLIENT_FLAGS = 68,0,16,0 %; ! Flags specified by client macro VCIB$V_DLL_RCV_DCB = 68,0,1,0 %; ! 1 = Can pass DCB on RCV macro VCIB$V_DLL_RCV_MAC = 68,1,1,0 %; ! determines where ! VCRP$A_LAN_R_HEADER points: ! 0 = the LHI structure ! 1 = MAC specific frame header ! FDDI: [FC] ! CSMACD: [DA] macro VCIB$R_DLL_OVERLAY_2 = 70,0,16,0 %; macro VCIB$W_DLL_FLAGS = 70,0,16,0 %; ! Flags specified by data link macro VCIB$V_DLL_XMT_CHAIN = 70,0,1,0 %; ! 1 = device can chain macro VCIB$V_DLL_XMT_RCVRSB = 70,1,1,0 %; ! 1 = DL can XMT on RCV RSB macro VCIB$V_DLL_PORT_STATUS = 70,2,1,0 %; ! 1 = PORT USABLE was last event ! 0 = PORT UNUSABLE was last ! event, OR no USABLE/UNUSABLE ! event has occured yet macro VCIB$W_DLL_TYPE = 72,0,16,0 %; ! Type of data link macro VCIB$W_DLL_HDR_SIZE = 74,0,16,0 %; ! Max data link header in bytes macro VCIB$W_DLL_XMT_SIZE = 76,0,16,0 %; ! Max transmit in bytes macro VCIB$W_DLL_CHAIN_SIZE = 78,0,16,0 %; ! Min size of 1st chain in bytes ! Define the values for the field VCIB$W_DLL_TYPE. macro VCIB$R_DLL_VCIB_ADDITIONS = 80,0,0,0 %; literal VCIB$S_DLL_VCIB_ADDITIONS = 60; ! LAN extensions to the VCIB; after the DLL extensions. macro VCIB$R_LAN_VCIB = 80,0,0,0 %; literal VCIB$S_LAN_VCIB = 60; macro VCIB$A_LAN_LPB = 80,0,32,0 %; ! Address of LAN Port Block macro VCIB$A_LAN_UCB = 84,0,32,0 %; ! Address of UCB macro VCIB$A_LAN_BUILD_HDR = 88,0,32,0 %; ! Address of LAN's Build Header ! service macro VCIB$A_LAN_TRANSMIT_FRAME = 92,0,32,0 %; ! Address of LAN's Transmit ! Frame service macro VCIB$A_LAN_TRANSMIT_AVAIL = 96,0,32,0 %; ! Address of available Transmits macro VCIB$W_LAN_MAX_RCV = 100,0,16,0 %; ! Max outstanding receives macro VCIB$W_LAN_OUT_RCV = 102,0,16,0 %; ! Number of outstanding receives macro VCIB$R_LAN_OVERLAY_1 = 104,0,16,0 %; macro VCIB$W_LAN_CLIENT_FLAGS = 104,0,16,0 %; ! Flags specified by client macro VCIB$V_LAN_RCV_LIM = 104,0,1,0 %; ! 1 = DL will limit the # ! of RCV VCRPs macro VCIB$V_LAN_RCV_ICS = 104,1,1,0 %; ! 1 = DL must init context ! stack in RCV VCRPs macro VCIB$V_LAN_FTC = 104,2,1,0 %; ! 1 = Fast Transmit Complete macro VCIB$V_LAN_2ND_DEV = 104,3,1,0 %; ! 1 = Use 2nd device macro VCIB$V_LAN_SFR = 104,4,1,0 %; ! 1 = Skip field restore macro VCIB$V_LAN_SCC = 104,5,1,0 %; ! 1 = Skip completion check macro VCIB$R_LAN_OVERLAY_2 = 106,0,16,0 %; macro VCIB$W_LAN_FLAGS = 106,0,16,0 %; ! Flags specified by LAN macro VCIB$V_LAN_RCV_DCB = 106,0,1,0 %; ! 1 = DL supports delivery of ! VCRP/DCB sets macro VCIB$V_LAN_DP_DELAY = 106,1,1,0 %; ! 1 = Disable Port is being ! delayed macro VCIB$A_LAN_LDC = 108,0,32,0 %; ! Address of the LDC structure macro VCIB$L_LAN_OOCNT = 112,0,32,1 %; ! Number of operations outstanding macro VCIB$A_LAN_DP_VCRP = 116,0,32,0 %; ! Address of the Disable Port VCRP ! being disabled. Only valid if ! the DP_DELAY flag is set. macro VCIB$A_LAN_HWA = 120,0,32,0 %; ! pointer to HWA/MLA macro VCIB$A_LAN_PHA = 124,0,32,0 %; ! pointer to PHA macro VCIB$L_LAN_RESERVED1 = 128,0,32,1 %; ! For future expansion macro VCIB$Q_LAN_RESERVED2 = 132,0,0,0 %; literal VCIB$S_LAN_RESERVED2 = 8; ! For future expansion ! SYN extensions to the VCIB; after the DLL extensions. macro VCIB$R_SYN_VCIB = 80,0,0,0 %; literal VCIB$S_SYN_VCIB = 6; macro VCIB$A_SYN_UP_PORT = 80,0,32,0 %; ! Used only by the data link macro VCIB$R_SYN_OVERLAY_1 = 84,0,16,0 %; macro VCIB$W_SYN_CLIENT_FLAGS = 84,0,16,0 %; ! Flags specified by client macro VCIB$V_SYN_UNSEQ = 84,0,1,0 %; ! 1 = Client wants unseq port !*** MODULE VCRPLAN *** ! ++ ! ! LAN definitions that are embedded in the standard VCRP fields ! ! -- literal VCRP$K_FC_DLL_BASE = 512; literal VCRP$K_FC_SYN_ENTER_MAINT = 512; literal VCRP$K_FC_SYN_EXIT_MAINT = 513; literal VCRP$K_FC_X25_RESET = 514; literal VCRP$K_FC_X25_ACK_NOCOM = 515; literal VCRP$K_FC_LAN_CHANGE_PORT = 516; literal VCRP$K_FC_DLL_LAST = 517; ! Data Link event codes literal VCRP$K_EC_DLL_BASE = 4608; literal VCRP$K_EC_DLL_PORT_USABLE = 4608; literal VCRP$K_EC_DLL_PORT_UNUSABLE = 4609; literal VCRP$K_EC_LAN_NEW_ADDRESS = 4610; literal VCRP$K_EC_LAN_RCV_CONGESTION = 4611; literal VCRP$K_EC_LAN_RCV_PDU_LOST = 4612; literal VCRP$K_EC_SYN_STATION_DELETED = 4613; literal VCRP$K_EC_X25_INCOMING_RESET = 4614; literal VCRP$K_EC_X25_INCOMING_NOCOM = 4615; literal VCRP$K_EC_LAN_RESTART_FAIL = 4616; literal VCRP$K_EC_LAN_STATION_RENAMED = 4617; literal VCRP$K_EC_DLL_LAST = 4618; ! Since we need to overlay many fields, we will do each field in a literal VCRP$L_LAN_802XMT = 204; ! 802.2 XMT parameters literal VCRP$M_LAN_FLTR_MCA = 1; literal VCRP$M_LAN_FLTR_CTL = 2; literal VCRP$M_LAN_FLTR_SRC = 4; literal VCRP$M_LAN_FLTR_STARTUP = 1; literal VCRP$M_LAN_FLTR_INTXMIT = 2; literal VCRP$M_LAN_FLTR_DAT = 4; literal VCRP$M_LAN_CHAINED = 1; literal VCRP$M_LAN_SVAPTE = 2; literal VCRP$M_LAN_1ST_SEG = 4; literal VCRP$T_LAN_DATA = 264; ! Now define maximum length needed, allowing for maximum alignment literal VCRP$C_LAN_OVERHEAD = 326; ! Now define all the fields in the various headers literal VCRP$W_LAN_LEN_802 = 276; ! 802 length field literal VCRP$T_LAN_USER_ETH = 278; ! Start of user ETH data literal VCRP$W_LAN_SIZE = 278; ! Size of message if padded literal VCRP$X_LAN_CTL = 280; ! 802 CTL field literal VCRP$G_LAN_PID = 281; ! 5-byte Protocol Identifier literal VCRP$T_LAN_USER_802E = 286; ! Start of user 802E data literal VCRP$S_VCRPLANDEF = 280; ! First we will define all the function codes and all the event codes ! used specifically by the data links. ! Data Link function codes ! separate overlay. That way, we can do them in any order. macro VCRP$R_VCRPLAN_OVERLAY = 0,0,0,0 %; ! ======================================================================== ! Data Request - For receive, LAN needs a field that will point to the ! data link header. macro VCRP$R_VCRPLAN_DATA_REQUEST = 0,0,0,0 %; literal VCRP$S_VCRPLAN_DATA_REQUEST = 65; macro VCRP$A_LAN_R_HEADER = 60,0,32,0 %; ! Address of receive packet header macro VCRP$B_LAN_FC = 64,0,8,0 %; ! FC value for FDDI xmit/recv ! ======================================================================== ! Mgmt Request - LAN needs the P2 buffer fields. macro VCRP$R_VCRPLAN_MGMT_REQUEST = 0,0,0,0 %; literal VCRP$S_VCRPLAN_MGMT_REQUEST = 56; macro VCRP$L_LAN_P2BUFF_SIZE = 48,0,32,0 %; ! LAN P2 buffer size macro VCRP$A_LAN_P2BUFF = 52,0,32,0 %; ! LAN P2 buffer ! ======================================================================== ! Scratch area - LAN needs many fields here. macro VCRP$R_VCRPLAN_SCRATCH = 0,0,0,0 %; literal VCRP$S_VCRPLAN_SCRATCH = 252; macro VCRP$Q_LAN_T_DEST = 196,0,0,0 %; literal VCRP$S_LAN_T_DEST = 8; ! Destination address macro VCRP$W_LAN_T_CTL = 204,0,16,0 %; ! 802.2 ctl field macro VCRP$B_LAN_T_CTL_SIZE = 206,0,8,0 %; ! 802.2 ctl field value size macro VCRP$B_LAN_T_DSAP = 207,0,8,0 %; ! 802.2 XMT dest. sap macro VCRP$B_LAN_T_RESP = 208,0,8,0 %; ! 802.2 command/response flag macro VCRP$R_LAN_FILTER = 209,0,8,0 %; literal VCRP$S_LAN_FILTER = 1; macro VCRP$B_LAN_R_FILTER = 209,0,8,0 %; ! Receive filtering mask macro VCRP$V_LAN_FLTR_MCA = 209,0,1,0 %; ! MCA filtering has been performed macro VCRP$V_LAN_FLTR_CTL = 209,1,1,0 %; ! CTL filtering has been performed macro VCRP$V_LAN_FLTR_SRC = 209,2,1,0 %; ! SRC filtering has been performed macro VCRP$B_LAN_T_FILTER = 209,0,8,0 %; ! Transmit filtering mask macro VCRP$V_LAN_FLTR_STARTUP = 209,0,1,0 %; ! Delete VCRP, complete IRP macro VCRP$V_LAN_FLTR_INTXMIT = 209,1,1,0 %; ! Add VCRP to Receive list macro VCRP$V_LAN_FLTR_DAT = 209,2,1,0 %; ! Duplicate Address Test ! VCRP for LOOPBACK macro VCRP$B_LAN_PORT1 = 210,0,8,0 %; ! Port specific byte macro VCRP$B_LAN_PORT2 = 211,0,8,0 %; ! Port specific byte macro VCRP$W_LAN_HDR_SIZE = 212,0,16,0 %; ! Size of receive hdr macro VCRP$B_LAN_R_FMT = 214,0,8,0 %; ! Receive packet format macro VCRP$A_LAN_UCB = 215,0,32,0 %; ! Address of UCB macro VCRP$B_LAN_DIAG_FLAGS = 219,0,8,0 %; ! Diagnostic flags macro VCRP$B_LAN_FUNCTION = 220,0,8,0 %; ! Function for this request macro VCRP$W_LAN_CODE = 221,0,16,0 %; ! Parameter code macro VCRP$W_LAN_LENERR = 223,0,16,0 %; ! Diagnostic info. macro VCRP$W_LAN_STATUS = 225,0,16,0 %; ! LAN status info. macro VCRP$B_LAN_FLAGS = 227,0,8,0 %; ! Flags macro VCRP$V_LAN_CHAINED = 227,0,1,0 %; ! Transmit is chained macro VCRP$V_LAN_SVAPTE = 227,1,1,0 %; ! 2nd entry uses SVAPTE/BOFF macro VCRP$V_LAN_1ST_SEG = 227,2,1,0 %; ! 1st entry is being worked ! When the CHAINED bit is set, the following fields are used to get to ! the second buffer in the chain. DCBBCNT has the number of bytes in ! the second entry. Either DCBSVA or DCBSVAPTE/DCBBOFF are used to ! locate the buffer. Use DCBSVA if the SVAPTE flag is clear. Use ! DCBSVAPTE/DCBBOFF if the SVAPTE flag is set. macro VCRP$L_LAN_DCBBCNT = 228,0,32,0 %; ! Size of 2nd entry macro VCRP$R_LAN_UNION1 = 232,0,32,0 %; literal VCRP$S_LAN_UNION1 = 4; macro VCRP$L_LAN_DCBSVA = 232,0,32,0 %; ! SVA of 2nd entry macro VCRP$L_LAN_DCBSVAPTE = 232,0,32,0 %; ! SVAPTE of 2nd entry macro VCRP$L_LAN_DCBBOFF = 236,0,32,0 %; ! BOFF of 2nd entry ! If requested, we will save the buffer descriptor fields here on a ! transmit request so that we can restore them when we are finished. macro VCRP$L_LAN_SBOFF = 240,0,32,0 %; ! Saved BOFF value macro VCRP$L_LAN_SBCNT = 244,0,32,0 %; ! Saved BCNT value macro VCRP$L_LAN_STPS = 248,0,32,0 %; ! Saved TOTAL_PDU_SIZE value ! ======================================================================== ! Receive PDU area - We will define the fields that describe the ! fields in the received frames. Note that the DA must be quadword ! aligned for some devices. macro VCRP$R_VCRPLAN_RCVPDU = 0,0,0,0 %; literal VCRP$S_VCRPLAN_RCVPDU = 280; ! First we need to align the data field to be quadword aligned. ! In the furture we should do this so that it adjusts itself. ! Right now we are hacking in a longword because we know that's ! what we need. macro VCRP$L_LAN_ALIGN = 260,0,32,0 %; ! Need quadword alignment ! Now define the generic "beginning of receive data" field ! in any driver (currently that maximum is 31 bytes for FXDRIVER) macro VCRP$G_LAN_DEST = 264,0,0,1 %; literal VCRP$S_LAN_DEST = 6; ! Destination address macro VCRP$G_LAN_SRC = 270,0,0,1 %; literal VCRP$S_LAN_SRC = 6; ! Source address macro VCRP$W_LAN_PTYPE = 276,0,16,0 %; ! Protocol type macro VCRP$B_LAN_DSAP = 278,0,8,0 %; ! 802 DSAP field macro VCRP$B_LAN_SSAP = 279,0,8,0 %; ! 802 SSAP field !*** MODULE PROTO *** ! ! LAN FRAME/PACKET DEFINITONS ! FRAME TYPES: ! FDDI ! CSMA/CD ! Ethernet ! IEEE 802.3 ! PACKET TYPES ! Mapped Ethernet (FDDI only) ! 802.2 ! 802E ! ! ! FDDI Frame Header ! literal FDDI$C_HDR_LEN = 13; ! Size of FDDI Header literal FDDI$S_FDDI_HDR = 13; ! FDDI Frame header structure macro FDDI$B_FC = 0,0,8,0 %; ! Frame Control field macro FDDI$G_DA = 1,0,0,0 %; literal FDDI$S_DA = 6; ! Destination Address field macro FDDI$G_SA = 7,0,0,0 %; literal FDDI$S_SA = 6; ! Source Address field ! ! Maximum Frame length for FDDI including all fields from FC through CRC ! literal FDDI$C_MAX_FRM_LEN = 4495; ! ! Maximum Packet lengths for FDDI users ! literal FDDI$C_MAX_PKTSIZE = 4478; ! Maximum Packet for FDDI (SMT user can send this size) literal FDDI$C_MAX_PKTSIZE_ETH = 4470; ! Maximum of Mapped Ethernet Packet on FDDI literal FDDI$C_MAX_PKTSIZE_PAD = 4468; ! Maximum of Mapped Ethernet Packet with padding on FDDI literal FDDI$C_MAX_PKTSIZE_CLI = 4475; ! Maximum of 802 Packet on FDDI literal FDDI$C_MAX_PKTSIZE_USR = 4474; ! Maximum of 802 Packet on FDDI literal FDDI$C_MAX_PKTSIZE_802E = 4470; ! Maximum of 802E Packet on FDDI literal FDDI$C_MAX_PKTSIZE_HWA = 4495; ! Maximum hardware Packet including header and CRC literal FDDI$C_MIN_PKTSIZE = 0; ! Minimum Packet (any user) ! ! Frame/packet header sizes for FDDI ! literal FDDI$C_HDRSIZE_ETH = 21; ! Maximum of Ethernet Packet without padding literal FDDI$C_HDRSIZE_PAD = 23; ! Maximum of Ethernet Packet with padding literal FDDI$C_HDRSIZE_CLI = 16; ! Maximum of 802 Packet literal FDDI$C_HDRSIZE_USR = 17; ! Maximum of 802 Packet literal FDDI$C_HDRSIZE_802E = 21; ! Maximum of 802E Packet literal FDDI$C_MAX802_PKTSIZ = 4475; literal FDDI$C_MAX802E_PKTSIZ = 4470; literal FDDI$C_MAXMPETH_PKTSIZ = 4470; literal FDDI$C_MAXMPETHPAD_PKTSIZ = 4468; ! ! Constants for FC definitions ! literal FDDI$V_FC_PPP = 0; ! FC PPP field starts at bit 0 literal FDDI$M_FC_PPP = 7; ! FC PPP field is low order three bits literal FDDI$S_FC_PPP = 3; ! FC PPP field is 3 bits wide literal FDDI$C_FC_LLC_MIN = 80; ! FC for LLC Users (minimum) literal FDDI$C_FC_LLC_DEF = 80; ! FC for LLC Users (default) literal FDDI$C_FC_LLC_MAX = 87; ! FC for LLC Users (maximum) literal FDDI$C_FC_SMT_MIN = 65; ! FC for LLC Users (minimum) literal FDDI$C_FC_SMT_DEF = 65; ! FC for LLC Users (default) literal FDDI$C_FC_SMT_MAX = 79; ! FC for LLC Users (maximum) ! ! CSMACD (Ethernet/IEEE 802.3) Frame Header ! literal CSMACD$C_HDR_LEN = 14; ! Size of CSMACD Header literal CSMACD$C_PAD_LEN = 16; ! Size of CSMACD Header literal CSMACD$S_CSMACD_HDR = 16; macro CSMACD$G_DA = 0,0,0,0 %; literal CSMACD$S_DA = 6; ! Destination Address field macro CSMACD$G_SA = 6,0,0,0 %; literal CSMACD$S_SA = 6; ! Source Address field ! The next field (field3) has different meanings depending on the ! Specific CSMACD frame type (Ethernet vs. IEEE 802.3): macro CSMACD$r_field3 = 12,0,16,0 %; literal CSMACD$s_field3 = 2; macro CSMACD$r_field3_eth = 12,0,16,0 %; literal CSMACD$s_field3_eth = 2; macro CSMACD$W_PTY = 12,0,16,0 %; ! Ethernet Protocol Type field macro CSMACD$r_field3_802 = 12,0,16,0 %; literal CSMACD$s_field3_802 = 2; macro CSMACD$W_LEN_8023 = 12,0,16,0 %; ! IEEE 802.3 Length field macro CSMACD$W_PAD = 14,0,16,0 %; ! optional Ethenet Length (PAD) field ! ! Maximum Frame length for FDDI including all fields from FC through CRC ! literal CSMACD$C_MAX_FRM_LEN = 1518; ! ! Maximum Packet lengths for CSMACD users ! literal CSMACD$C_MAX_PKTSIZE = 1500; ! Maximum of Ethernet Packet without padding literal CSMACD$C_MAX_PKTSIZE_ETH = 1500; ! Maximum of Ethernet Packet without padding literal CSMACD$C_MAX_PKTSIZE_PAD = 1498; ! Maximum of Ethernet Packet with padding literal CSMACD$C_MAX_PKTSIZE_CLI = 1497; ! Maximum of 802 Packet literal CSMACD$C_MAX_PKTSIZE_USR = 1496; ! Maximum of 802 Packet literal CSMACD$C_MAX_PKTSIZE_802E = 1492; ! Maximum of 802E Packet literal CSMACD$C_MAX_PKTSIZE_HWA = 1518; ! Maximum hardware Packet including header and CRC literal CSMACD$C_MIN_PKTSIZE = 46; ! Minimum of Ethernet Packet literal CSMACD$C_HDRSIZE_ETH = 14; ! Maximum of Ethernet Packet without padding literal CSMACD$C_HDRSIZE_PAD = 16; ! Maximum of Ethernet Packet with padding literal CSMACD$C_HDRSIZE_CLI = 17; ! Maximum of 802 Packet literal CSMACD$C_HDRSIZE_USR = 18; ! Maximum of 802 Packet literal CSMACD$C_HDRSIZE_802E = 22; ! Maximum of 802E Packet literal CSMACD$C_MAX802_PKTSIZ = 1497; literal CSMACD$C_MAX802E_PKTSIZ = 1492; literal CSMACD$C_MAXETH_PKTSIZ = 1500; literal CSMACD$C_MAXETHPAD_PKTSIZ = 1498; ! ! Packet Header Definitions ! ! Packet headers begin at the byte following the FDDI or CSCMACD ! frame header. (at offsets FDDI$C_HDR_LEN/CSMACD$C_HDR_LEN) ! ! Packet types supported: ! - FDDI mapped ethernet (for FDDI only) ! - IEEE 802.1 SNAP SAP (802E/802PID) ! - IEEE 802.2, Class I, including (Type 1 packets only): ! -- UI ! -- XID ! -- TEST ! ! FDDI Mapped Ethernet packet header ! literal MPDETH$C_LEN = 8; ! Size of Mapped Ethernet Header without Padding literal MPDETH$C_PAD_LEN = 10; ! Size of Mapped Eth Header with Padding literal MPDETH$S_MPDETH_HDR = 10; macro MPDETH$G_SNAP_SAP = 0,0,24,0 %; literal MPDETH$S_SNAP_SAP = 3; ! SNAP-SAP hex macro MPDETH$G_MAP_PID = 3,0,24,0 %; literal MPDETH$S_MAP_PID = 3; ! SNAP PID <00-00-00> macro MPDETH$W_PTY = 6,0,16,0 %; ! Ethernet Protocol Type field macro MPDETH$W_PAD = 8,0,16,0 %; ! PAD (length) field (If User enables it) ! ! IEEE Standard 802.2 (LLC), packet header ! literal LLC$C_ONEBYTCTL_LEN = 3; ! Size of 802.2 Header with ! one byte CTL literal LLC$G_ONEBYT_DATA = 3; ! Start of User Data ! with 1 byte control field literal LLC$C_TWOBYTCTL_LEN = 4; ! Size of 802.2 Header with ! two byte CTL literal LLC$G_TWOBYT_DATA = 4; ! Start of User Data ! with 1 byte control field literal LLC$S_HDR_802 = 4; macro LLC$B_DSAP = 0,0,8,0 %; ! Destination Service Access Point macro LLC$B_SSAP = 1,0,8,0 %; ! Source Service Access Point macro LLC$B_CTL1 = 2,0,8,0 %; ! Control field macro LLC$B_CTL2 = 3,0,8,0 %; ! optional second byte of CTL ! ! IEEE 802.1 SNAP SAP packet header (802E/802PID) ! literal SNAP$C_LEN = 8; ! Size of 802 SNAP Header literal SNAP$S_SNAP_HDR = 8; macro SNAP$G_SAP = 0,0,24,0 %; literal SNAP$S_SAP = 3; ! SNAP-SAP hex macro SNAP$G_PID = 3,0,0,0 %; literal SNAP$S_PID = 5; ! Protocol Identifier (PID)