/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:27:10 by OpenVMS SDL EV3-3 */ /* Source: 05-MAR-1996 18:11:49 $1$DGA7274:[LIB_H.SRC]CXBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $CXBDEF ***/ #ifndef __CXBDEF_LOADED #define __CXBDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /* + */ /* CXB - COMPLEX CHAINED BUFFER */ /* */ /* THESE OFFSETS ARE USED IN THE HEADER OF DISJOINT SEGMENTS */ /* WHICH ARE TO BE PRESENTED TO THE USER AS A UNIT. */ /* */ /* - */ #define CXB$M_RESP 0x1 #define CXB$L_NI_ALTXMT 28 /* ALTSTART XMT parameters */ #define CXB$C_AGENT_SCRATCH_LEN 52 /* This marks the length of the standard CXB. */ #define CXB$K_LENGTH 92 #define CXB$C_LENGTH 92 /* Data link layer scratch space */ #define CXB$M_FLTR_MCA 0x1 #define CXB$M_FLTR_CTL 0x2 #define CXB$M_FLTR_SRC 0x4 #define CXB$M_FLTR_STARTUP 0x1 #define CXB$M_FLTR_INTXMIT 0x2 #define CXB$T_R_DATA 128 /* Start of RCV data */ #define CXB$W_R_LEN_802 140 /* 802 length field */ #define CXB$T_R_USER_ETH 142 /* Start of user ETH data */ #define CXB$W_R_SIZE 142 /* Size of message if padded */ #define CXB$X_R_CTL 144 /* 802 CTL field */ #define CXB$G_R_PID 145 /* 5-byte Protocol Identifier */ #define CXB$T_R_USER_802E 150 /* Start of user 802E data */ #define CXB$C_DLL 52 /* Size of CXB$T_DLL */ #define CXB$C_DLL_SCRATCH_LEN 52 /* Size of CXB$T_DLL */ /* ** This field must be quadword aligned for CNDRIVER. */ #define CXB$K_HEADER 144 /* CXB size up to this point */ #define CXB$C_HEADER 144 /* CXB size up to this point */ #define CXB$C_TRAILER 4 /* Space after CXB data for CRC code */ #define CXB$K_OVERHEAD 148 /* CXB$C_HEADER + CXB$C_TRAILER */ #define CXB$C_OVERHEAD 148 /* CXB$C_HEADER + CXB$C_TRAILER */ #ifdef __cplusplus /* Define structure prototypes */ struct _irp; struct _dcb; struct _ucb; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _cxb { #pragma __nomember_alignment __union { __struct { /* CXB can be in a queue... */ struct _cxb *cxb$l_fl; /* Forward queue link */ struct _cxb *cxb$l_bl; /* Backward queue link */ } cxb$r_qlinks; /* ...or... */ __struct { /* CXB for IRP sent to I/O Post */ void *cxb$ps_pktdata; /* Pointer to buffered data in packet */ void *cxb$ps_uva32; /* 32-bit pointer to user's buffer, or BUFIO$K_64 (-1) */ } cxb$r_iopost; } cxb$r_qlinks_overlay; unsigned short int cxb$w_size; /* Block size */ unsigned char cxb$b_type; /* Block type */ __union { unsigned char cxb$b_flag; /* Flag byte */ __struct { unsigned cxb$v_resp : 1; /* Command/Response indicator */ unsigned cxb$v_fill_16_ : 7; } cxb$r_fill_1_; } cxb$r_fill_0_; unsigned short int cxb$w_boff; /* Offset to data link data */ unsigned short int cxb$w_bcnt; /* Size of data link data */ void *cxb$l_data_chain; /* Pointer to data chain buffer descriptor */ unsigned __int64 cxb$q_station; /* Contains destination address or source address */ unsigned short int cxb$w_ctl; /* 802.2 ctl field either byte or word value */ unsigned char cxb$b_ctl_size; /* 802.2 ctl field value size */ unsigned char cxb$b_dsap; /* 802.2 ALT/FFI XMT dest sap */ unsigned __int64 cxb$q_reserved; /* Reserved for future use */ /* Agent specific scratch space. */ __union { char cxb$t_agent_scratch [52]; /* DECnet-VAX agent specific fields. */ __union { unsigned char cxb$t_agent_decnet [52]; __struct { unsigned short int cxb$w_length; /* Length of data */ unsigned short int cxb$w_offset; /* Offset to start of nsp message */ unsigned char cxb$b_code; /* Buffer code */ unsigned char cxb$b_sts; /* Status fields */ unsigned short int cxb$w_channel; /* Store channel number for AST */ void *cxb$l_link; /* Link word for chained data message */ struct _irp *cxb$l_irp; /* IRP address for transmits */ int (*cxb$l_end_action)(); /* Pointer to I/O done routine */ /* The following fields contain the context that NSP needs to process a packet */ /* which has been received out of order. */ void *cxb$l_r_nsp_msg; /* This is the address of the next */ /* byte in the NSP message after */ /* the segment number field (R1) */ unsigned int cxb$l_r_data_size; /* This is the number of as yet */ /* unaccounted bytes in message (R2) */ unsigned short int cxb$w_r_seg_num; /* This is the messages segment number (R3) */ short int cxb$w_filler_1; /* Filler to longword align */ /* Backlink pointer for NSP to associate the CXB with the user's originating */ /* IRP. The non-agent specific field, CXB$L_IRP, cannot be used because the */ /* datalink drivers use this field for the same purpose, but different IRP. */ /* The datalink's IRP is the DECnet routing supplied IRP queued to the */ /* altstart interface. */ struct _irp *cxb$l_user_irp; /* link to user's IRP */ struct _dcb *cxb$l_last_dcb; /* pointer to last DCB */ /* 64-bit pointer to user buffer address that's valid if and only if */ /* CXB$PS_UVA32 contains the value BUFIO$K_64 (-1). */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *cxb$pq_uva64; /* 64-bit pointer to user's buffer */ #else unsigned __int64 cxb$pq_uva64; #endif } cxb$r_fill_3_; } cxb$r_fill_2_; } cxb$r_agent_overlay; /* Size of the agent scratch area */ #pragma __nomember_alignment __union { char cxb$t_dll [52]; /* The following three structures define the fields used by the */ /* Ethernet/802 datalink drivers. */ __union { unsigned char cxb$t_dll_ni802 [52]; __struct { unsigned char cxb$b_ni_func; /* Internal function code */ unsigned char cxb$b_r_flags; /* Flags */ __union { unsigned short int cxb$w_ni_rid; /* Request ID */ __struct { unsigned char cxb$b_ni_slot; /* Mapping slot number */ unsigned char cxb$b_ni_ring; /* Ring Entry number */ } cxb$r_fill_7_; } cxb$r_fill_6_; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif struct _irp *cxb$l_t_irp; /* User IRP address */ unsigned short int cxb$w_r_nchain; /* Number of buffers in chain */ unsigned short int cxb$w_r_lenerr; /* Length and Rcv error status */ struct _ucb *cxb$l_r_ucb; /* UCB address of receiver */ unsigned short int cxb$w_hdr_size; /* Size of receive header */ unsigned char cxb$b_r_fmt; /* Receive packet format */ __union { __union { unsigned char cxb$b_r_filter; /* Receive CXB filtering mask word */ __struct { unsigned cxb$v_fltr_mca : 1; /* MCA filtering has been performed */ unsigned cxb$v_fltr_ctl : 1; /* CTL filtering has been performed */ unsigned cxb$v_fltr_src : 1; /* SRC filtering has been performed */ unsigned cxb$v_fill_17_ : 5; } cxb$r_fill_9_; } cxb$r_fill_8_; __union { unsigned char cxb$b_t_filter; /* Transmit CXB filtering mask word */ __struct { unsigned cxb$v_fltr_startup : 1; /* Delete CXB, complete IRP */ unsigned cxb$v_fltr_intxmit : 1; /* Add CXB to Receive list */ unsigned cxb$v_fill_18_ : 6; } cxb$r_fill_11_; } cxb$r_fill_10_; } cxb$r_filter; } cxb$r_fill_5_; } cxb$r_fill_4_; __union { unsigned char cxb$t_dll_ni802xmt [52]; __struct { char cxbdef$$_nixmt_fill [38]; unsigned char cxb$t_t_data [14]; /* Start of standard XMT */ } cxb$r_fill_13_; } cxb$r_fill_12_; __union { unsigned char cxb$t_dll_ni802rcv [52]; __struct { char cxbdef$$_nircv_fill1 [36]; unsigned short int cxb$g_r_dest [3]; /* Destination address */ unsigned short int cxb$g_r_src [3]; /* Source address */ unsigned short int cxb$w_r_ptype; /* Protocol type */ unsigned char cxb$b_r_dsap; /* 802 DSAP field */ unsigned char cxb$b_r_ssap; /* 802 SSAP field */ } cxb$r_fill_15_; } cxb$r_fill_14_; } cxb$r_dll_overlay; int cxbdef$$_fill_1; /* This represents the space taken for */ /* the CRC trailer */ char cxb$b_fill_19_ [4]; } CXB; #if !defined(__VAXC) #define cxb$l_fl cxb$r_qlinks_overlay.cxb$r_qlinks.cxb$l_fl #define cxb$l_bl cxb$r_qlinks_overlay.cxb$r_qlinks.cxb$l_bl #define cxb$ps_pktdata cxb$r_qlinks_overlay.cxb$r_iopost.cxb$ps_pktdata #define cxb$ps_uva32 cxb$r_qlinks_overlay.cxb$r_iopost.cxb$ps_uva32 #define cxb$b_flag cxb$r_fill_0_.cxb$b_flag #define cxb$v_resp cxb$r_fill_0_.cxb$r_fill_1_.cxb$v_resp #define cxb$t_agent_scratch cxb$r_agent_overlay.cxb$t_agent_scratch #define cxb$t_agent_decnet cxb$r_agent_overlay.cxb$r_fill_2_.cxb$t_agent_decnet #define cxb$w_length cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$w_length #define cxb$w_offset cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$w_offset #define cxb$b_code cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$b_code #define cxb$b_sts cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$b_sts #define cxb$w_channel cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$w_channel #define cxb$l_link cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_link #define cxb$l_irp cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_irp #define cxb$l_end_action cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_end_action #define cxb$l_r_nsp_msg cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_r_nsp_msg #define cxb$l_r_data_size cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_r_data_size #define cxb$w_r_seg_num cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$w_r_seg_num #define cxb$l_user_irp cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_user_irp #define cxb$l_last_dcb cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$l_last_dcb #define cxb$pq_uva64 cxb$r_agent_overlay.cxb$r_fill_2_.cxb$r_fill_3_.cxb$pq_uva64 #define cxb$t_dll cxb$r_dll_overlay.cxb$t_dll #define cxb$t_dll_ni802 cxb$r_dll_overlay.cxb$r_fill_4_.cxb$t_dll_ni802 #define cxb$b_ni_func cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$b_ni_func #define cxb$b_r_flags cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$b_r_flags #define cxb$w_ni_rid cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$r_fill_6_.cxb$w_ni_rid #define cxb$b_ni_slot cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$r_fill_6_.cxb$r_fill_7_.cxb$b_ni_slot #define cxb$b_ni_ring cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$r_fill_6_.cxb$r_fill_7_.cxb$b_ni_ring #define cxb$l_t_irp cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$l_t_irp #define cxb$w_r_nchain cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$w_r_nchain #define cxb$w_r_lenerr cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$w_r_lenerr #define cxb$l_r_ucb cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$l_r_ucb #define cxb$w_hdr_size cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$w_hdr_size #define cxb$b_r_fmt cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$b_r_fmt #define cxb$r_filter cxb$r_dll_overlay.cxb$r_fill_4_.cxb$r_fill_5_.cxb$r_filter #define cxb$b_r_filter cxb$r_filter.cxb$r_fill_8_.cxb$b_r_filter #define cxb$v_fltr_mca cxb$r_filter.cxb$r_fill_8_.cxb$r_fill_9_.cxb$v_fltr_mca #define cxb$v_fltr_ctl cxb$r_filter.cxb$r_fill_8_.cxb$r_fill_9_.cxb$v_fltr_ctl #define cxb$v_fltr_src cxb$r_filter.cxb$r_fill_8_.cxb$r_fill_9_.cxb$v_fltr_src #define cxb$b_t_filter cxb$r_filter.cxb$r_fill_10_.cxb$b_t_filter #define cxb$v_fltr_startup cxb$r_filter.cxb$r_fill_10_.cxb$r_fill_11_.cxb$v_fltr_startup #define cxb$v_fltr_intxmit cxb$r_filter.cxb$r_fill_10_.cxb$r_fill_11_.cxb$v_fltr_intxmit #define cxb$t_dll_ni802xmt cxb$r_dll_overlay.cxb$r_fill_12_.cxb$t_dll_ni802xmt #define cxb$t_t_data cxb$r_dll_overlay.cxb$r_fill_12_.cxb$r_fill_13_.cxb$t_t_data #define cxb$t_dll_ni802rcv cxb$r_dll_overlay.cxb$r_fill_14_.cxb$t_dll_ni802rcv #define cxb$g_r_dest cxb$r_dll_overlay.cxb$r_fill_14_.cxb$r_fill_15_.cxb$g_r_dest #define cxb$g_r_src cxb$r_dll_overlay.cxb$r_fill_14_.cxb$r_fill_15_.cxb$g_r_src #define cxb$w_r_ptype cxb$r_dll_overlay.cxb$r_fill_14_.cxb$r_fill_15_.cxb$w_r_ptype #define cxb$b_r_dsap cxb$r_dll_overlay.cxb$r_fill_14_.cxb$r_fill_15_.cxb$b_r_dsap #define cxb$b_r_ssap cxb$r_dll_overlay.cxb$r_fill_14_.cxb$r_fill_15_.cxb$b_r_ssap #endif /* #if !defined(__VAXC) */ #define CXB$S_CXBDEF 152 /* Old size name - synonym */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __CXBDEF_LOADED */