/**/ /***************************************************************************/ /** **/ /** © 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:25:53 by OpenVMS SDL EV3-3 */ /* Source: 23-JUL-2003 15:57:49 $1$DGA7274:[LIB_H.SRC]LANUDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $VCRPLANDEF ***/ #ifndef __VCRPLANDEF_LOADED #define __VCRPLANDEF_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 /*++ */ /* LAN definitions that are embedded in the standard VCRP fields */ /*-- */ #define VCRP$K_FC_DLL_BASE 512 #define VCRP$K_FC_SYN_ENTER_MAINT 512 #define VCRP$K_FC_SYN_EXIT_MAINT 513 #define VCRP$K_FC_X25_RESET 514 #define VCRP$K_FC_X25_ACK_NOCOM 515 #define VCRP$K_FC_LAN_CHANGE_PORT 516 #define VCRP$K_FC_DLL_LAST 517 /* Data Link event codes */ #define VCRP$K_EC_DLL_BASE 4608 #define VCRP$K_EC_DLL_PORT_USABLE 4608 #define VCRP$K_EC_DLL_PORT_UNUSABLE 4609 #define VCRP$K_EC_LAN_NEW_ADDRESS 4610 #define VCRP$K_EC_LAN_RCV_CONGESTION 4611 #define VCRP$K_EC_LAN_RCV_PDU_LOST 4612 #define VCRP$K_EC_SYN_STATION_DELETED 4613 #define VCRP$K_EC_X25_INCOMING_RESET 4614 #define VCRP$K_EC_X25_INCOMING_NOCOM 4615 #define VCRP$K_EC_LAN_RESTART_FAIL 4616 #define VCRP$K_EC_LAN_STATION_RENAMED 4617 #define VCRP$K_EC_LAN_RCVBUF_CHANGE 4618 #define VCRP$K_EC_DLL_LAST 4619 #define VCRP$K_EC_DLL_PREF_CPU_CHANGED 4620 /* Since we need to overlay many fields, we will do each field in a */ #define VCRP$M_LAN_T_MORE 0x1 #define VCRP$L_LAN_802XMT 488 /* 802.2 XMT parameters */ #define VCRP$M_LAN_FLTR_STARTUP 0x1 #define VCRP$M_LAN_FLTR_INTXMIT 0x2 #define VCRP$M_LAN_FLTR_DAT 0x4 #define VCRP$M_LAN_FLTR_EXPLORE 0x8 #define VCRP$M_LAN_CHAINED 0x1 #define VCRP$M_LAN_SVAPTE 0x2 #define VCRP$T_LAN_DATA 592 #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 _vcrplandef { /* 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. */ #pragma __nomember_alignment __union { /*======================================================================== */ /* Data Request - For receive, LAN needs a field that will point to the */ /* data link header. For transmit, we need a flag for the MORE bit. For */ /* both we need the FC field for FDDI. And AC and FC fields for TR. */ __struct { char vcrp$b_lan_filler1 [196]; __union { void *vcrp$a_lan_r_header; /* Address of receive packet header */ __union { unsigned int vcrp$l_lan_t_flags; __struct { /* Flags for transmit */ unsigned vcrp$v_lan_t_more : 1; /* More transmit requests are coming */ unsigned vcrp$v_fill_7_ : 7; } vcrp$r_fill_6_; } vcrp$r_fill_5_; } vcrp$r_vcrpreq_overlay; __union { unsigned char vcrp$b_lan_fc; /* FC value for FDDI xmit/recv */ unsigned int vcrp$l_lan_fc; /* FC value for FDDI xmit/recv */ __struct { unsigned char vcrp$b_tr_ac; /* AC for TR xmit/recv */ unsigned char vcrp$b_tr_fc; /* FC for TR xmit/recv */ } vcrp$r_lan_tr_overlay; } vcrp$r_lan_fc_overlay; } vcrp$r_vcrplan_data_request; /*======================================================================== */ /* Mgmt Request - LAN needs the P2 buffer fields. */ __struct { char vcrp$b_lan_filler2 [84]; unsigned int vcrp$l_lan_p2buff_size; /* LAN P2 buffer size */ void *vcrp$a_lan_p2buff; /* LAN P2 buffer */ } vcrp$r_vcrplan_mgmt_request; /*======================================================================== */ /* Scratch area - LAN needs many fields here. */ __struct { char vcrp$b_lan_filler3 [468]; /* Note: We are longword aligned now. But we are not quadword aligned. */ /* The following fields are common to all VCRP requests. */ unsigned int vcrp$l_lan_function; /* S-Function for this request */ void *vcrp$a_lan_ucb; /* S-Address of UCB */ unsigned int vcrp$l_lan_port1; /* Port specific longword */ /* Note: We should be quadword aligned now. */ /* The following fields are defined for use by either the transmit code */ /* or the receive code. */ __union { /* The following fields are for transmit only. */ __struct { /* For transmit requests, we need the following fields to be initialized */ /* by the upper VCM. These fields could not fit in the request area, so */ /* they are included here in the scratch area. */ unsigned __int64 vcrp$q_lan_t_dest; /* Destination address */ unsigned short int vcrp$w_lan_t_ctl; /* 802.2 ctl field */ unsigned char vcrp$b_lan_t_ctl_size; /* 802.2 ctl field value size */ unsigned char vcrp$b_lan_t_dsap; /* 802.2 XMT dest. sap */ unsigned int vcrp$l_lan_t_resp; /* 802.2 command/response flag */ /* During the transmit request, the following fields are initialized and */ /* used by the transmit code in the LAN drivers. */ __union { unsigned int vcrp$l_lan_t_filter; /* S-Transmit filtering longword */ __struct { unsigned vcrp$v_lan_fltr_startup : 1; /* Delete VCRP, complete IRP */ unsigned vcrp$v_lan_fltr_intxmit : 1; /* Add VCRP to Receive list */ unsigned vcrp$v_lan_fltr_dat : 1; /* Duplicate Address Test VCRP */ unsigned vcrp$v_lan_fltr_explore : 1; /* Explorer VCRP */ unsigned vcrp$v_fill_8_ : 4; } vcrp$r_fl_lan_t_filter; } vcrp$r_un_lan_t_filter; __union { unsigned int vcrp$l_lan_flags; /* S-Flags */ __struct { unsigned vcrp$v_lan_chained : 1; /* Transmit is chained */ unsigned vcrp$v_lan_svapte : 1; /* 2nd entry uses SVAPTE/BOFF */ unsigned vcrp$v_fill_9_ : 6; } vcrp$r_fl_lan_flags; } vcrp$r_un_lan_flags; /* 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. */ unsigned int vcrp$l_lan_dcbbcnt; /* Size of 2nd entry */ __union { unsigned int vcrp$l_lan_dcbsva; /* SVA of 2nd entry */ unsigned int vcrp$l_lan_dcbsvapte; /* SVAPTE of 2nd entry */ } vcrp$r_lan_union1; unsigned int vcrp$l_lan_dcbboff; /* 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. */ unsigned int vcrp$l_lan_sboff; /* Saved BOFF value */ unsigned int vcrp$l_lan_sbcnt; /* Saved BCNT value */ unsigned int vcrp$l_lan_stps; /* Saved TOTAL_PDU_SIZE value */ } vcrp$r_st_lan_transmit; /* The following fields are for receive only. */ __struct { unsigned int vcrp$l_lan_diag_flags; /* Diagnostic receive flags */ unsigned int vcrp$l_lan_lenerr; /* Diagnostic receive info */ unsigned int vcrp$l_lan_pkformat; /* Packet format (prm only) */ void *vcrp$a_lan_r_802hdr; /* Address of 802 header */ } vcrp$r_st_lan_receive; } vcrp$r_un_lan_scratch; } vcrp$r_vcrplan_scratch; /*======================================================================== */ /* 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. */ __struct { /* Align the LAN data field to be quadword aligned. */ char vcrp$b_lan_filler4 [592]; /* Now define the generic "beginning of receive data" field */ } vcrp$r_vcrplan_rcvpdu; } vcrp$r_vcrplan_overlay; } VCRPLANDEF; #if !defined(__VAXC) #define vcrp$r_vcrplan_data_request vcrp$r_vcrplan_overlay.vcrp$r_vcrplan_data_request #define vcrp$r_vcrpreq_overlay vcrp$r_vcrplan_data_request.vcrp$r_vcrpreq_overlay #define vcrp$a_lan_r_header vcrp$r_vcrpreq_overlay.vcrp$a_lan_r_header #define vcrp$l_lan_t_flags vcrp$r_vcrpreq_overlay.vcrp$r_fill_5_.vcrp$l_lan_t_flags #define vcrp$v_lan_t_more vcrp$r_vcrpreq_overlay.vcrp$r_fill_5_.vcrp$r_fill_6_.vcrp$v_lan_t_more #define vcrp$r_lan_fc_overlay vcrp$r_vcrplan_data_request.vcrp$r_lan_fc_overlay #define vcrp$b_lan_fc vcrp$r_lan_fc_overlay.vcrp$b_lan_fc #define vcrp$l_lan_fc vcrp$r_lan_fc_overlay.vcrp$l_lan_fc #define vcrp$r_lan_tr_overlay vcrp$r_lan_fc_overlay.vcrp$r_lan_tr_overlay #define vcrp$b_tr_ac vcrp$r_lan_tr_overlay.vcrp$b_tr_ac #define vcrp$b_tr_fc vcrp$r_lan_tr_overlay.vcrp$b_tr_fc #define vcrp$r_vcrplan_mgmt_request vcrp$r_vcrplan_overlay.vcrp$r_vcrplan_mgmt_request #define vcrp$l_lan_p2buff_size vcrp$r_vcrplan_mgmt_request.vcrp$l_lan_p2buff_size #define vcrp$a_lan_p2buff vcrp$r_vcrplan_mgmt_request.vcrp$a_lan_p2buff #define vcrp$r_vcrplan_scratch vcrp$r_vcrplan_overlay.vcrp$r_vcrplan_scratch #define vcrp$l_lan_function vcrp$r_vcrplan_scratch.vcrp$l_lan_function #define vcrp$a_lan_ucb vcrp$r_vcrplan_scratch.vcrp$a_lan_ucb #define vcrp$l_lan_port1 vcrp$r_vcrplan_scratch.vcrp$l_lan_port1 #define vcrp$r_un_lan_scratch vcrp$r_vcrplan_scratch.vcrp$r_un_lan_scratch #define vcrp$r_st_lan_transmit vcrp$r_un_lan_scratch.vcrp$r_st_lan_transmit #define vcrp$q_lan_t_dest vcrp$r_st_lan_transmit.vcrp$q_lan_t_dest #define vcrp$w_lan_t_ctl vcrp$r_st_lan_transmit.vcrp$w_lan_t_ctl #define vcrp$b_lan_t_ctl_size vcrp$r_st_lan_transmit.vcrp$b_lan_t_ctl_size #define vcrp$b_lan_t_dsap vcrp$r_st_lan_transmit.vcrp$b_lan_t_dsap #define vcrp$l_lan_t_resp vcrp$r_st_lan_transmit.vcrp$l_lan_t_resp #define vcrp$r_un_lan_t_filter vcrp$r_st_lan_transmit.vcrp$r_un_lan_t_filter #define vcrp$l_lan_t_filter vcrp$r_un_lan_t_filter.vcrp$l_lan_t_filter #define vcrp$r_fl_lan_t_filter vcrp$r_un_lan_t_filter.vcrp$r_fl_lan_t_filter #define vcrp$v_lan_fltr_startup vcrp$r_fl_lan_t_filter.vcrp$v_lan_fltr_startup #define vcrp$v_lan_fltr_intxmit vcrp$r_fl_lan_t_filter.vcrp$v_lan_fltr_intxmit #define vcrp$v_lan_fltr_dat vcrp$r_fl_lan_t_filter.vcrp$v_lan_fltr_dat #define vcrp$v_lan_fltr_explore vcrp$r_fl_lan_t_filter.vcrp$v_lan_fltr_explore #define vcrp$r_un_lan_flags vcrp$r_st_lan_transmit.vcrp$r_un_lan_flags #define vcrp$l_lan_flags vcrp$r_un_lan_flags.vcrp$l_lan_flags #define vcrp$r_fl_lan_flags vcrp$r_un_lan_flags.vcrp$r_fl_lan_flags #define vcrp$v_lan_chained vcrp$r_fl_lan_flags.vcrp$v_lan_chained #define vcrp$v_lan_svapte vcrp$r_fl_lan_flags.vcrp$v_lan_svapte #define vcrp$l_lan_dcbbcnt vcrp$r_st_lan_transmit.vcrp$l_lan_dcbbcnt #define vcrp$r_lan_union1 vcrp$r_st_lan_transmit.vcrp$r_lan_union1 #define vcrp$l_lan_dcbsva vcrp$r_lan_union1.vcrp$l_lan_dcbsva #define vcrp$l_lan_dcbsvapte vcrp$r_lan_union1.vcrp$l_lan_dcbsvapte #define vcrp$l_lan_dcbboff vcrp$r_st_lan_transmit.vcrp$l_lan_dcbboff #define vcrp$l_lan_sboff vcrp$r_st_lan_transmit.vcrp$l_lan_sboff #define vcrp$l_lan_sbcnt vcrp$r_st_lan_transmit.vcrp$l_lan_sbcnt #define vcrp$l_lan_stps vcrp$r_st_lan_transmit.vcrp$l_lan_stps #define vcrp$r_st_lan_receive vcrp$r_un_lan_scratch.vcrp$r_st_lan_receive #define vcrp$l_lan_diag_flags vcrp$r_st_lan_receive.vcrp$l_lan_diag_flags #define vcrp$l_lan_lenerr vcrp$r_st_lan_receive.vcrp$l_lan_lenerr #define vcrp$l_lan_pkformat vcrp$r_st_lan_receive.vcrp$l_lan_pkformat #define vcrp$a_lan_r_802hdr vcrp$r_st_lan_receive.vcrp$a_lan_r_802hdr #define vcrp$r_vcrplan_rcvpdu vcrp$r_vcrplan_overlay.vcrp$r_vcrplan_rcvpdu #endif /* #if !defined(__VAXC) */ #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 /* __VCRPLANDEF_LOADED */