summaryrefslogtreecommitdiffstats
path: root/private/ntos/dlc/llcdef.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/dlc/llcdef.h')
-rw-r--r--private/ntos/dlc/llcdef.h282
1 files changed, 282 insertions, 0 deletions
diff --git a/private/ntos/dlc/llcdef.h b/private/ntos/dlc/llcdef.h
new file mode 100644
index 000000000..240aa9a19
--- /dev/null
+++ b/private/ntos/dlc/llcdef.h
@@ -0,0 +1,282 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ dldef.h
+
+Abstract:
+
+ This module defines all internal constants in data link driver.
+
+Author:
+
+ Antti Saarenheimo (o-anttis) 25-MAY-1991
+
+Revision History:
+
+--*/
+
+#define DEBUG_VERSION 1
+
+//
+// Marks for FSM compiler
+//
+
+#define FSM_DATA
+#define FSM_PREDICATE_CASES
+#define FSM_ACTION_CASES
+#define FSM_CONST
+
+#define MAX_NDIS_PACKETS 5 // 5 for XID/TEST and 5 for others
+#define LLC_OPEN_TIMEOUT 1200 // 60 seconds (enough for tr open?)
+
+#define DEFAULT_TR_ACCESS 0x50
+#define NON_MAC_FRAME 0x40
+
+//
+// 2nd source routing control bit
+//
+
+#define SRC_ROUTING_LF_MASK 0x70
+
+#define MAX_TR_LAN_HEADER_SIZE 32
+#define LLC_MAX_LAN_HEADER 32
+#define MAX_TR_SRC_ROUTING_INFO 18
+
+//
+// the next status values are used internally by DLCAPI driver:
+//
+
+#define CONFIRM_CONNECT 0x0008
+#define CONFIRM_DISCONNECT 0x0004
+#define CONFIRM_CONNECT_FAILED 0x0002
+
+//
+// The following structures define I-frame, U-frame, and S-frame DLC headers.
+//
+
+#define LLC_SSAP_RESPONSE 0x0001 // if (ssap & LLC_SSAP_RESP),it's a response.
+#define LLC_DSAP_GROUP 0x0001 // Dsap lowest bit set when group sap
+#define LLC_SSAP_GLOBAL 0x00ff // the global SAP.
+#define LLC_SSAP_NULL 0x0000 // the null SAP.
+#define LLC_SSAP_MASK 0x00fe // mask to wipe out the response bit.
+#define LLC_DSAP_MASK 0x00fe // mask to wipe out the group SAP bit.
+
+#define LLC_RR 0x01 // command code for RR.
+#define LLC_RNR 0x05 // command code for RNR.
+#define LLC_REJ 0x09 // command code for REJ.
+
+#define LLC_SABME 0x6f // command code for SABME.
+#define LLC_DISC 0x43 // command code for DISC.
+#define LLC_UA 0x63 // command code for UA.
+#define LLC_DM 0x0f // command code for DM.
+#define LLC_FRMR 0x87 // command code for FRMR.
+#define LLC_UI 0x03 // command code for UI.
+#define LLC_XID 0xaf // command code for XID.
+#define LLC_TEST 0xe3 // command code for TEST.
+#define IEEE_802_XID_ID 0x81 // IEEE 802.2 XID identifier
+#define LLC_CLASS_II 3 // we support LLC Class II
+
+#define LLC_S_U_TYPE_MASK 3
+#define LLC_U_TYPE 3
+#define LLC_U_TYPE_BIT 2
+#define LLC_S_TYPE 1
+
+#define LLC_NOT_I_FRAME 0x01
+#define LLC_U_INDICATOR 0x03 // (cmd & LLC_U_IND) == LLC_U_IND --> U-frame.
+#define LLC_U_POLL_FINAL 0x10 // (cmd & LLC_U_PF) -> poll/final set.
+
+#define LLC_I_S_POLL_FINAL 1
+
+//
+// You may use 2048 or 1024 if you want to make link more aggressively to
+// increment the transmit window when there has been a I-c1 retransmission
+// after a T1 timeout.
+//
+
+#define LLC_MAX_T1_TO_I_RATIO 4096
+
+//
+// Link station flags
+//
+
+#define DLC_WAITING_RESPONSE_TO_POLL 0x01
+#define DLC_FIRST_POLL 0x02
+#define DLC_ACTIVE_REMOTE_CONNECT_REQUEST 0x04
+#define DLC_SEND_DISABLED 0x10
+#define DLC_FINAL_RESPONSE_PENDING_IN_NDIS 0x20
+
+#define DLC_LOCAL_BUSY_BUFFER 0x40
+#define DLC_LOCAL_BUSY_USER 0x80
+
+//
+// Test file for FSM compiler!!!!
+//
+
+#ifdef FSM_CONST
+
+enum eLanLlcInput {
+ DISC0 = 0,
+ DISC1 = 1,
+ DM0 = 2,
+ DM1 = 3,
+ FRMR0 = 4,
+ FRMR1 = 5,
+ SABME0 = 6,
+ SABME1 = 7,
+ UA0 = 8,
+ UA1 = 9,
+ IS_I_r0 = 10,
+ IS_I_r1 = 11,
+ IS_I_c0 = 12,
+ IS_I_c1 = 13,
+ OS_I_r0 = 14,
+ OS_I_r1 = 15,
+ OS_I_c0 = 16,
+ OS_I_c1 = 17,
+ REJ_r0 = 18,
+ REJ_r1 = 19,
+ REJ_c0 = 20,
+ REJ_c1 = 21,
+ RNR_r0 = 22,
+ RNR_r1 = 23,
+ RNR_c0 = 24,
+ RNR_c1 = 25,
+ RR_r0 = 26,
+ RR_r1 = 27,
+ RR_c0 = 28,
+ RR_c1 = 29,
+ LPDU_INVALID_r0 = 30,
+ LPDU_INVALID_r1 = 31,
+ LPDU_INVALID_c0 = 32,
+ LPDU_INVALID_c1 = 33,
+ ACTIVATE_LS = 34,
+ DEACTIVATE_LS = 35,
+ ENTER_LCL_Busy = 36,
+ EXIT_LCL_Busy = 37,
+ SEND_I_POLL = 38,
+ SET_ABME = 39,
+ SET_ADM = 40,
+ Ti_Expired = 41,
+ T1_Expired = 42,
+ T2_Expired = 43
+};
+
+enum eLanLlcState {
+ LINK_CLOSED = 0,
+ DISCONNECTED = 1,
+ LINK_OPENING = 2,
+ DISCONNECTING = 3,
+ FRMR_SENT = 4,
+ LINK_OPENED = 5,
+ LOCAL_BUSY = 6,
+ REJECTION = 7,
+ CHECKPOINTING = 8,
+ CHKP_LOCAL_BUSY = 9,
+ CHKP_REJECT = 10,
+ RESETTING = 11,
+ REMOTE_BUSY = 12,
+ LOCAL_REMOTE_BUSY = 13,
+ REJECT_LOCAL_BUSY = 14,
+ REJECT_REMOTE_BUSY = 15,
+ CHKP_REJECT_LOCAL_BUSY = 16,
+ CHKP_CLEARING = 17,
+ CHKP_REJECT_CLEARING = 18,
+ REJECT_LOCAL_REMOTE_BUSY = 19,
+ FRMR_RECEIVED = 20
+};
+
+#endif
+
+#define MAX_LLC_LINK_STATE 21 // KEEP THIS IN SYNC WITH PREV ENUM!!!!
+
+#define DLC_DSAP_OFFSET 0
+#define DLC_SSAP_OFFSET 1
+#define DLC_COMMAND_OFFSET 2
+#define DLC_XID_INFO_ID 3
+#define DLC_XID_INFO_TYPE 4
+#define DLC_XID_INFO_WIN_SIZE 5
+
+#define MAX_XID_TEST_RESPONSES 20
+
+enum _LLC_FRAME_XLATE_MODES {
+ LLC_SEND_UNSPECIFIED = -1,
+ LLC_SEND_802_5_TO_802_3,
+ LLC_SEND_802_5_TO_DIX,
+ LLC_SEND_802_5_TO_802_5,
+ LLC_SEND_802_5_TO_FDDI,
+ LLC_SEND_DIX_TO_DIX,
+ LLC_SEND_802_3_TO_802_3,
+ LLC_SEND_802_3_TO_DIX,
+ LLC_SEND_802_3_TO_802_5,
+ LLC_SEND_UNMODIFIED,
+ LLC_SEND_FDDI_TO_FDDI,
+ LLC_SEND_FDDI_TO_802_5,
+ LLC_SEND_FDDI_TO_802_3
+};
+
+#define DLC_TOKEN_RESPONSE 0
+#define DLC_TOKEN_COMMAND 2
+
+//*********************************************************************
+// **** Objects in _DLC_CMD_TOKENs enumeration and in auchLlcCommands
+// **** table bust MUST ABSOLUTELY BE IN THE SAME ORDER, !!!!!!!!
+// **** THEY ARE USED TO COMPRESS ********
+// **** THE SEND INITIALIZATION ********
+//
+enum _DLC_CMD_TOKENS {
+ DLC_REJ_TOKEN = 4,
+ DLC_RNR_TOKEN = 8,
+ DLC_RR_TOKEN = 12,
+ DLC_DISC_TOKEN = 16 | DLC_TOKEN_COMMAND,
+ DLC_DM_TOKEN = 20,
+ DLC_FRMR_TOKEN = 24,
+ DLC_SABME_TOKEN = 28 | DLC_TOKEN_COMMAND,
+ DLC_UA_TOKEN = 32
+};
+
+enum _LLC_PACKET_TYPES {
+ LLC_PACKET_8022 = 0,
+ LLC_PACKET_MAC,
+ LLC_PACKET_DIX,
+ LLC_PACKET_OTHER_DESTINATION,
+ LLC_PACKET_MAX
+};
+
+#define MAX_DIX_TABLE 13 // good odd number!
+
+enum _LlcSendCompletionTypes {
+ LLC_XID_RESPONSE, // 802.2 XID response packet
+ LLC_U_COMMAND_RESPONSE, // link command response
+ LLC_MIN_MDL_PACKET, // all packets above this have MDL
+ LLC_DIX_DUPLICATE, // used to duplicate TEST and XID packets
+ LLC_TEST_RESPONSE, // Test response (buffer in non Paged Pool)
+ LLC_MAX_RESPONSE_PACKET,// all packets above this are indicated to user
+ LLC_TYPE_1_PACKET,
+ LLC_TYPE_2_PACKET,
+
+ //
+ // We use extra status bits to indicate, when I- packet has been both
+ // completed by NDIS and acknowledged the other side of link connection.
+ // An I packet can be queued to the completion queue by
+ // the second guy (either state machine or SendCompletion handler)
+ // only when the first guy has set completed its work.
+ // An I packet could be acknowledged by the other side before
+ // its completion is indicated by NDIS. Dlc Driver deallocates
+ // the packet immediately, when Llc driver completes the acknowledged
+ // packet => possible data corruption (if packet is reused before
+ // NDIS has completed it). This is probably not possible in a
+ // single processor NT- system, but very possible in multiprocessor
+ // NT or systems without a single level DPC queue (like OS/2 and DOS).
+ //
+
+ LLC_I_PACKET_COMPLETE = 0x10,
+ LLC_I_PACKET_UNACKNOWLEDGED = 0x20,
+ LLC_I_PACKET_PENDING_NDIS = 0x40,
+ LLC_I_PACKET = 0x70, // when we are sending it
+ LLC_I_PACKET_WAITING_NDIS = 0x80
+};
+
+#define LLC_MAX_MULTICAST_ADDRESS 32