Annotation of ntddk/src/network/streams/inc/sys/dlpi.h, revision 1.1

1.1     ! root        1: #ifndef _SYS_DLPI_H
        !             2: #define _SYS_DLPI_H
        !             3: 
        !             4: typedef unsigned long ulong;
        !             5: typedef unsigned short ushort;
        !             6: 
        !             7: //
        !             8: //     DLPI revision definition history
        !             9: //
        !            10:  
        !            11: #define DL_VERSION_2       0x02                // version of dlpi March 12,1991 
        !            12: #define DL_CURRENT_VERSION DL_VERSION_2        // current version of dlpi 
        !            13: 
        !            14: //
        !            15: // Primitives for Local Management Services
        !            16: //
        !            17:  
        !            18: #define DL_INFO_REQ            0x00    // Information Req, LLI compatibility 
        !            19: #define DL_INFO_ACK            0x03    // Information Ack, LLI compatibility 
        !            20: #define DL_ATTACH_REQ          0x0b    // Attach a PPA 
        !            21: #define DL_DETACH_REQ          0x0c    // Detach a PPA 
        !            22: #define DL_BIND_REQ            0x01    // Bind dlsap address, LLI compatibility 
        !            23: #define DL_BIND_ACK            0x04    // Dlsap address bound, LLI compatibility 
        !            24: #define DL_UNBIND_REQ          0x02    // Unbind dlsap address, LLI compatibility 
        !            25: #define DL_OK_ACK              0x06    // Success acknowledgment, LLI compatibility 
        !            26: #define DL_ERROR_ACK           0x05    // Error acknowledgment, LLI compatibility 
        !            27: #define DL_SUBS_BIND_REQ       0x1b    // Bind Subsequent DLSAP address 
        !            28: #define DL_SUBS_BIND_ACK       0x1c    // Subsequent DLSAP address bound 
        !            29: #define DL_SUBS_UNBIND_REQ     0x15    // Subsequent unbind 
        !            30: #define DL_ENABMULTI_REQ       0x1d    // Enable multicast addresses 
        !            31: #define DL_DISABMULTI_REQ      0x1e    // Disable multicast addresses 
        !            32: #define DL_PROMISCON_REQ       0x1f    // Turn on promiscuous mode 
        !            33: #define DL_PROMISCOFF_REQ      0x20    // Turn off promiscuous mode 
        !            34: 
        !            35: //
        !            36: // Primitives used for Connectionless Service
        !            37: //
        !            38:  
        !            39: #define DL_UNITDATA_REQ                0x07    // datagram send request, LLI compatibility 
        !            40: #define DL_UNITDATA_IND                0x08    // datagram receive indication, LLI compatibility 
        !            41: #define DL_UDERROR_IND         0x09    // datagram error indication, LLI compatibility 
        !            42: #define DL_UDQOS_REQ           0x0a    // set QOS for subsequent datagram transmissions 
        !            43: 
        !            44: //
        !            45: // Primitives used for Connection-Oriented Service
        !            46: //
        !            47:  
        !            48: #define DL_CONNECT_REQ         0x0d    // Connect request 
        !            49: #define DL_CONNECT_IND         0x0e    // Incoming connect indication 
        !            50: #define DL_CONNECT_RES         0x0f    // Accept previous connect indication 
        !            51: #define DL_CONNECT_CON         0x10    // Connection established 
        !            52: 
        !            53: #define        DL_TOKEN_REQ            0x11    // Passoff token request 
        !            54: #define DL_TOKEN_ACK           0x12    // Passoff token ack 
        !            55: 
        !            56: #define DL_DISCONNECT_REQ      0x13    // Disconnect request 
        !            57: #define DL_DISCONNECT_IND      0x14    // Disconnect indication 
        !            58: 
        !            59: #define DL_RESET_REQ           0x17    // Reset service request 
        !            60: #define DL_RESET_IND           0x18    // Incoming reset indication 
        !            61: #define DL_RESET_RES           0x19    // Complete reset processing 
        !            62: #define DL_RESET_CON           0x1a    // Reset processing complete 
        !            63: 
        !            64: //
        !            65: // Primitives used for Acknowledged Connectionless Service
        !            66: //
        !            67:  
        !            68: #define DL_DATA_ACK_REQ                0x21    // data unit transmission request 
        !            69: #define DL_DATA_ACK_IND                0x22    // Arrival of a command PDU 
        !            70: #define DL_DATA_ACK_STATUS_IND 0x23    // Status indication of DATA_ACK_REQ 
        !            71: #define DL_REPLY_REQ           0x24    // Request a DLSDU from the remote 
        !            72: #define DL_REPLY_IND           0x25    // Arrival of a command PDU 
        !            73: #define DL_REPLY_STATUS_IND    0x26    // Status indication of REPLY_REQ 
        !            74: #define DL_REPLY_UPDATE_REQ    0x27    // Hold a DLSDU for transmission 
        !            75: #define DL_REPLY_UPDATE_STATUS_IND   0x28   // Status of REPLY_UPDATE req 
        !            76: 
        !            77: //
        !            78: // Primitives used for XID and TEST operation
        !            79: //
        !            80:  
        !            81: #define DL_XID_REQ             0x29    // Request to send an XID PDU 
        !            82: #define DL_XID_IND             0x2a    // Arrival of an XID PDU 
        !            83: #define DL_XID_RES             0x2b    // request to send a response XID PDU 
        !            84: #define DL_XID_CON             0x2c    // Arrival of a response XID PDU 
        !            85: #define DL_TEST_REQ            0x2d    // Test command request 
        !            86: #define DL_TEST_IND            0x2e    // Test response indication 
        !            87: #define DL_TEST_RES            0x2f    // Test request 
        !            88: #define DL_TEST_CON            0x30    // Test Confirmation 
        !            89: 
        !            90: //
        !            91: // Primitives to get and set the physical address, and to get
        !            92: // Statistics
        !            93: //
        !            94:  
        !            95: #define DL_PHYS_ADDR_REQ       0x31    // Request to get physical addr 
        !            96: #define DL_PHYS_ADDR_ACK       0x32    // Return physical addr 
        !            97: #define DL_SET_PHYS_ADDR_REQ   0x33    // set physical addr 
        !            98: #define DL_GET_STATISTICS_REQ  0x34    // Request to get statistics 
        !            99: #define DL_GET_STATISTICS_ACK  0x35    // Return statistics 
        !           100: 
        !           101: //
        !           102: // Primitives to use performance modifications
        !           103: //
        !           104: 
        !           105: #define DL_SHOULD_PUT_REQ       0xf0
        !           106: 
        !           107: //
        !           108: // Primitives to get at low level card information
        !           109: //
        !           110: 
        !           111: #define DL_ADAPTER_INFO_REQ     0xf1
        !           112: #define DL_ADAPTER_INFO_ACK     0xf2
        !           113: 
        !           114: //
        !           115: // DLPI interface states
        !           116: //
        !           117:  
        !           118: #define DL_UNATTACHED          0x04    // PPA not attached 
        !           119: #define DL_ATTACH_PENDING      0x05    // Waiting ack of DL_ATTACH_REQ 
        !           120: #define DL_DETACH_PENDING      0x06    // Waiting ack of DL_DETACH_REQ 
        !           121: #define DL_UNBOUND             0x00    // PPA attached, LLI compatibility 
        !           122: #define DL_BIND_PENDING                0x01    // Waiting ack of DL_BIND_REQ, LLI compatibility 
        !           123: #define DL_UNBIND_PENDING      0x02    // Waiting ack of DL_UNBIND_REQ, LLI compatibility 
        !           124: #define DL_IDLE                        0x03    // dlsap bound, awaiting use, LLI compatibility 
        !           125: #define DL_UDQOS_PENDING       0x07    // Waiting ack of DL_UDQOS_REQ 
        !           126: #define DL_OUTCON_PENDING      0x08    // outgoing connection, awaiting DL_CONN_CON 
        !           127: #define DL_INCON_PENDING       0x09    // incoming connection, awaiting DL_CONN_RES 
        !           128: #define DL_CONN_RES_PENDING    0x0a    // Waiting ack of DL_CONNECT_RES 
        !           129: #define DL_DATAXFER            0x0b    // connection-oriented data transfer 
        !           130: #define        DL_USER_RESET_PENDING   0x0c    // user initiated reset, awaiting DL_RESET_CON 
        !           131: #define DL_PROV_RESET_PENDING  0x0d    // provider initiated reset, awaiting DL_RESET_RES 
        !           132: #define DL_RESET_RES_PENDING   0x0e    // Waiting ack of DL_RESET_RES 
        !           133: #define DL_DISCON8_PENDING     0x0f    // Waiting ack of DL_DISC_REQ when in DL_OUTCON_PENDING 
        !           134: #define DL_DISCON9_PENDING     0x10    // Waiting ack of DL_DISC_REQ when in DL_INCON_PENDING 
        !           135: #define DL_DISCON11_PENDING    0x11    // Waiting ack of DL_DISC_REQ when in DL_DATAXFER 
        !           136: #define DL_DISCON12_PENDING    0x12    // Waiting ack of DL_DISC_REQ when in DL_USER_RESET_PENDING 
        !           137: #define DL_DISCON13_PENDING    0x13    // Waiting ack of DL_DISC_REQ when in DL_DL_PROV_RESET_PENDING 
        !           138: #define DL_SUBS_BIND_PND       0x14    // Waiting ack of DL_SUBS_BIND_REQ 
        !           139: #define DL_SUBS_UNBIND_PND     0x15    // Waiting ack of DL_SUBS_UNBIND_REQ 
        !           140: #define DL_INTERRUPT_PENDING   0x16    // awaiting DL_INTERRUPT_CON 
        !           141: 
        !           142: //
        !           143: // DL_ERROR_ACK error return values
        !           144: //
        !           145:  
        !           146: 
        !           147: #define DL_ACCESS      0x02    // Improper permissions for request, LLI compatibility 
        !           148: #define DL_BADADDR     0x01    // DLSAP address in improper format or invalid 
        !           149: #define DL_BADCORR     0x05    // Sequence number not from outstanding DL_CONN_IND 
        !           150: #define DL_BADDATA     0x06    // User data exceeded provider limit 
        !           151: #define DL_BADPPA      0x08    // Specified PPA was invalid 
        !           152: #define DL_BADPRIM     0x09    // Primitive received is not known by DLS provider 
        !           153: #define DL_BADQOSPARAM 0x0a    // QOS parameters contained invalid values 
        !           154: #define DL_BADQOSTYPE  0x0b    // QOS structure type is unknown or unsupported 
        !           155: #define DL_BADSAP      0x00    // Bad LSAP selector, LLI compatibility 
        !           156: #define DL_BADTOKEN    0x0c    // Token used not associated with an active stream 
        !           157: #define DL_BOUND       0x0d    // Attempted second bind with dl_max_conind or 
        !           158:                                //      dl_conn_mgmt > 0 on same DLSAP or PPA 
        !           159: #define DL_INITFAILED  0x0e    // Physical Link initialization failed 
        !           160: #define DL_NOADDR      0x0f    // Provider couldn't allocate alternate address 
        !           161: #define DL_NOTINIT     0x10    // Physical Link not initialized 
        !           162: #define DL_OUTSTATE    0x03    // Primitive issued in improper state, LLI compatibility 
        !           163: #define DL_SYSERR      0x04    // UNIX system error occurred, LLI compatibility 
        !           164: #define DL_UNSUPPORTED 0x07    // Requested service not supplied by provider 
        !           165: #define DL_UNDELIVERABLE 0x11  // Previous data unit could not be delivered 
        !           166: #define DL_NOTSUPPORTED         0x12   // Primitive is known bu not supported by DLS provider 
        !           167: #define DL_TOOMANY     0x13    // limit exceeded 
        !           168: #define DL_NOTENAB     0x14    // Promiscuous mode not enabled 
        !           169: #define DL_BUSY                0x15    // Other streams for a particular PPA in the
        !           170:                                //  post-attached state 
        !           171: #define DL_NOAUTO      0x16    // Automatic handling of XID & TEST responses
        !           172:                                //  not supported 
        !           173: #define DL_NOXIDAUTO   0x17    // Automatic handling of XID not supported 
        !           174: #define DL_NOTESTAUTO  0x18    // Automatic handling of TEST not supported 
        !           175: #define DL_XIDAUTO     0x19    // Automatic handling of XID response 
        !           176: #define DL_TESTAUTO    0x1a    // Automatic handling of TEST response 
        !           177: #define DL_PENDING     0x1b    // pending outstanding connect indications 
        !           178: 
        !           179: //
        !           180: // DLPI media types supported
        !           181: //
        !           182:  
        !           183: #define DL_CSMACD      0x0     // IEEE 802.3 CSMA/CD network, LLI Compatibility 
        !           184: #define DL_TPB         0x1     // IEEE 802.4 Token Passing Bus, LLI Compatibility 
        !           185: #define DL_TPR         0x2     // IEEE 802.5 Token Passing Ring, LLI Compatibility 
        !           186: #define DL_METRO       0x3     // IEEE 802.6 Metro Net, LLI Compatibility 
        !           187: #define DL_ETHER       0x4     // Ethernet Bus, LLI Compatibility 
        !           188: #define DL_HDLC                0x05    // ISO HDLC protocol support, bit synchronous 
        !           189: #define DL_CHAR                0x06    // Character Synchronous protocol support, eg BISYNC 
        !           190: #define DL_CTCA                0x07    // IBM Channel-to-Channel Adapter 
        !           191: #define DL_FDDI         0x08   // Fiber Distributed data interface 
        !           192: #define DL_OTHER       0x09    // Any other medium not listed above 
        !           193: #define DL_ARCNET       0x0a    // Raw arcnet packets
        !           194: #define DL_ASYN         0x0b   // Bit Asynchronous Serial Interface 
        !           195: 
        !           196: //
        !           197: // DLPI provider service supported.
        !           198: // These must be allowed to be bitwise-OR for dl_service_mode in
        !           199: // DL_INFO_ACK.
        !           200:  
        !           201: //
        !           202: #define DL_CODLS       0x01    // support connection-oriented service 
        !           203: #define DL_CLDLS       0x02    // support connectionless data link service 
        !           204: #define DL_ACLDLS      0x04    // support acknowledged connectionless service 
        !           205: 
        !           206: //
        !           207: // DLPI provider style.
        !           208: // The DLPI provider style which determines whether a provider
        !           209: // requires a DL_ATTACH_REQ to inform the provider which PPA
        !           210: // user messages should be sent/received on.
        !           211: //
        !           212:  
        !           213: #define DL_STYLE1      0x0500  // PPA is implicitly bound by open(2) 
        !           214: #define DL_STYLE2      0x0501  // PPA must be explicitly bound via DL_ATTACH_REQ 
        !           215: 
        !           216: //
        !           217: // DLPI Originator for Disconnect and Resets
        !           218: //
        !           219:  
        !           220: #define DL_PROVIDER    0x700
        !           221: #define DL_USER                0x701
        !           222: 
        !           223: //
        !           224: // DLPI Disconnect Reasons
        !           225: //
        !           226:  
        !           227: #define DL_CONREJ_DEST_UNKNOWN                 0x0800
        !           228: #define DL_CONREJ_DEST_UNREACH_PERMANENT       0x0801
        !           229: #define DL_CONREJ_DEST_UNREACH_TRANSIENT       0x0802
        !           230: #define DL_CONREJ_QOS_UNAVAIL_PERMANENT                0x0803
        !           231: #define DL_CONREJ_QOS_UNAVAIL_TRANSIENT                0x0804
        !           232: #define DL_CONREJ_PERMANENT_COND               0x0805
        !           233: #define DL_CONREJ_TRANSIENT_COND               0x0806
        !           234: #define DL_DISC_ABNORMAL_CONDITION             0x0807
        !           235: #define DL_DISC_NORMAL_CONDITION               0x0808
        !           236: #define DL_DISC_PERMANENT_CONDITION            0x0809
        !           237: #define DL_DISC_TRANSIENT_CONDITION            0x080a
        !           238: #define DL_DISC_UNSPECIFIED                    0x080b
        !           239: 
        !           240: //
        !           241: // DLPI Reset Reasons
        !           242: //
        !           243:  
        !           244: #define DL_RESET_FLOW_CONTROL  0x0900
        !           245: #define DL_RESET_LINK_ERROR    0x0901
        !           246: #define DL_RESET_RESYNCH       0x0902
        !           247: 
        !           248: //
        !           249: // DLPI status values for acknowledged connectionless data transfer
        !           250: //
        !           251:  
        !           252: #define DL_CMD_MASK    0x0f    // mask for command portion of status 
        !           253: #define DL_CMD_OK      0x00    // Command Accepted 
        !           254: #define DL_CMD_RS      0x01    // Unimplemented or inactivated service 
        !           255: #define DL_CMD_UE      0x05    // Data Link User interface error 
        !           256: #define DL_CMD_PE      0x06    // Protocol error 
        !           257: #define DL_CMD_IP      0x07    // Permanent implementation dependent error 
        !           258: #define DL_CMD_UN      0x09    // Resources temporarily unavailable 
        !           259: #define DL_CMD_IT      0x0f    // Temporary implementation dependent error 
        !           260: #define DL_RSP_MASK    0xf0    // mask for response portion of status 
        !           261: #define DL_RSP_OK      0x00    // Response DLSDU present 
        !           262: #define DL_RSP_RS      0x10    // Unimplemented or inactivated service 
        !           263: #define DL_RSP_NE      0x30    // Response DLSDU never submitted 
        !           264: #define DL_RSP_NR      0x40    // Response DLSDU not requested 
        !           265: #define DL_RSP_UE      0x50    // Data Link User interface error 
        !           266: #define DL_RSP_IP      0x70    // Permanent implementation dependent error 
        !           267: #define DL_RSP_UN      0x90    // Resources temporarily unavailable 
        !           268: #define DL_RSP_IT      0xf0    // Temporary implementation dependent error 
        !           269: 
        !           270: //
        !           271: // Service Class values for acknowledged connectionless data transfer
        !           272: //
        !           273: 
        !           274: #define DL_RQST_RSP    0x01    // Use acknowledge capability in MAC sublayer 
        !           275: #define DL_RQST_NORSP  0x02    // No acknowledgement service requested 
        !           276: 
        !           277: //
        !           278: // DLPI address type definition
        !           279: //
        !           280: 
        !           281: #define DL_FACT_PHYS_ADDR      0x01    // factory physical address 
        !           282: #define DL_CURR_PHYS_ADDR      0x02    // current physical address 
        !           283: 
        !           284: //
        !           285: // DLPI flag definitions
        !           286: //
        !           287: 
        !           288: #define DL_POLL_FINAL  0x01    // if set, indicates poll/final bit set 
        !           289: 
        !           290: //
        !           291: // XID and TEST responses supported by the provider
        !           292: //
        !           293: 
        !           294: #define DL_AUTO_XID    0x01    // provider will respond to XID 
        !           295: #define DL_AUTO_TEST   0x02    // provider will respond to TEST 
        !           296: 
        !           297: //
        !           298: // Subsequent bind type
        !           299: //
        !           300: 
        !           301: #define DL_PEER_BIND           0x01    // subsequent bind on a peer addr 
        !           302: #define DL_HIERARCHICAL_BIND   0x02    // subs_bind on a hierarchical addr 
        !           303: 
        !           304: //
        !           305: // DLPI promiscuous mode definitions
        !           306: //
        !           307: 
        !           308: #define DL_PROMISC_PHYS                0x01    // promiscuous mode at phys level 
        !           309: #define DL_PROMISC_SAP         0x02    // promiscuous mode at sap level 
        !           310: #define DL_PROMISC_MULTI       0x03    // promiscuous mode for multicast 
        !           311: 
        !           312: //
        !           313: // DLPI Quality Of Service definition for use in QOS structure definitions.
        !           314: // The QOS structures are used in connection establishment, DL_INFO_ACK,
        !           315: // and setting connectionless QOS values.
        !           316: //
        !           317:  
        !           318: 
        !           319: //
        !           320: // Throughput
        !           321: //
        !           322: // This parameter is specified for both directions.
        !           323: //
        !           324:  
        !           325: typedef struct {
        !           326:                long    dl_target_value;        // desired bits/second desired 
        !           327:                long    dl_accept_value;        // min. acceptable bits/second 
        !           328: } dl_through_t;
        !           329: 
        !           330: //
        !           331: // transit delay specification
        !           332: //
        !           333: // This parameter is specified for both directions.
        !           334: // expressed in milliseconds assuming a DLSDU size of 128 octets.
        !           335: // The scaling of the value to the current DLSDU size is provider dependent.
        !           336: //
        !           337:  
        !           338: typedef struct {
        !           339:                long    dl_target_value;        // desired value of service 
        !           340:                long    dl_accept_value;        // min. acceptable value of service 
        !           341: } dl_transdelay_t;
        !           342: 
        !           343: //
        !           344: // priority specification
        !           345: // priority range is 0-100, with 0 being highest value.
        !           346: //
        !           347:  
        !           348: typedef struct {
        !           349:                long    dl_min;
        !           350:                long    dl_max;
        !           351: } dl_priority_t;
        !           352: 
        !           353: //
        !           354: // protection specification
        !           355: //
        !           356:  
        !           357: #define DL_NONE                        0x0B01  // no protection supplied 
        !           358: #define DL_MONITOR             0x0B02  // protection against passive monitoring 
        !           359: #define DL_MAXIMUM             0x0B03  // protection against modification, replay, 
        !           360:                                        // addition, or deletion 
        !           361: typedef struct {
        !           362:                long    dl_min;
        !           363:                long    dl_max;
        !           364: } dl_protect_t;
        !           365: 
        !           366: //
        !           367: // Resilience specification
        !           368: // probabilities are scaled by a factor of 10,000 with a time interval
        !           369: // of 10,000 seconds.
        !           370: //
        !           371:  
        !           372: typedef struct {
        !           373:                long    dl_disc_prob;   // probability of provider init DISC 
        !           374:                long    dl_reset_prob;  // probability of provider init RESET 
        !           375: } dl_resilience_t;
        !           376: 
        !           377: //
        !           378: // QOS type definition to be used for negotiation with the
        !           379: // remote end of a connection, or a connectionless unitdata request.
        !           380: // There are two type definitions to handle the negotiation
        !           381: // process at connection establishment. The typedef dl_qos_neg_t
        !           382: // is used to present a range for parameters. This is used
        !           383: // in the DL_CONNECT_REQ and DL_CONNECT_IND messages. The typedef
        !           384: // dl_qos_sel_t is used to select a specific value for the QOS
        !           385: // parameters. This is used in the DL_CONNECT_RES, DL_CONNECT_CON,
        !           386: // and DL_INFO_ACK messages to define the selected QOS parameters
        !           387: // for a connection.
        !           388: //
        !           389: // NOTE
        !           390: //     A DataLink provider which has unknown values for any of the fields
        !           391: //     will use a value of DL_UNKNOWN for all values in the fields.
        !           392: //
        !           393: // NOTE
        !           394: //     A QOS parameter value of DL_QOS_DONT_CARE informs the DLS
        !           395: //     provider the user requesting this value doesn't care
        !           396: //     what the QOS parameter is set to. This value becomes the
        !           397: //     least possible value in the range of QOS parameters.
        !           398: //     The order of the QOS parameter range is then:
        !           399: //
        !           400: //             DL_QOS_DONT_CARE < 0 < MAZIMUM QOS VALUE
        !           401: //
        !           402:  
        !           403: #define DL_UNKNOWN             -1
        !           404: #define DL_QOS_DONT_CARE       -2
        !           405: 
        !           406: //
        !           407: // Every QOS structure has the first 4 bytes containing a type
        !           408: // field, denoting the definition of the rest of the structure.
        !           409: // This is used in the same manner has the dl_primitive variable
        !           410: // is in messages.
        !           411: //
        !           412: // The following list is the defined QOS structure type values and structures.
        !           413: //
        !           414:  
        !           415: #define DL_QOS_CO_RANGE1  0x0101     // QOS range struct. for Connection modeservice 
        !           416: #define DL_QOS_CO_SEL1   0x0102     // QOS selection structure 
        !           417: #define DL_QOS_CL_RANGE1  0x0103     // QOS range struct. for connectionless
        !           418: #define DL_QOS_CL_SEL1   0x0104     // QOS selection for connectionless mode
        !           419: 
        !           420: typedef struct {
        !           421:                unsigned long   dl_qos_type;
        !           422:                dl_through_t    dl_rcv_throughput;  // desired and acceptable
        !           423:                dl_transdelay_t dl_rcv_trans_delay; // desired and acceptable
        !           424:                dl_through_t    dl_xmt_throughput;
        !           425:                dl_transdelay_t dl_xmt_trans_delay;
        !           426:                dl_priority_t   dl_priority;        // min and max values 
        !           427:                dl_protect_t    dl_protection;      // min and max values 
        !           428:                long            dl_residual_error;
        !           429:                dl_resilience_t dl_resilience;
        !           430: }      dl_qos_co_range1_t;
        !           431: 
        !           432: typedef struct {
        !           433:                unsigned long   dl_qos_type;
        !           434:                long            dl_rcv_throughput;
        !           435:                long            dl_rcv_trans_delay;
        !           436:                long            dl_xmt_throughput;
        !           437:                long            dl_xmt_trans_delay;
        !           438:                long            dl_priority;
        !           439:                long            dl_protection;
        !           440:                long            dl_residual_error;
        !           441:                dl_resilience_t dl_resilience;
        !           442: }      dl_qos_co_sel1_t;
        !           443: 
        !           444: typedef struct {
        !           445:                unsigned long   dl_qos_type;
        !           446:                dl_transdelay_t dl_trans_delay;
        !           447:                dl_priority_t   dl_priority;
        !           448:                dl_protect_t    dl_protection;
        !           449:                long            dl_residual_error;
        !           450: }      dl_qos_cl_range1_t;
        !           451: 
        !           452: typedef struct {
        !           453:                unsigned long   dl_qos_type;
        !           454:                long            dl_trans_delay;
        !           455:                long            dl_priority;
        !           456:                long            dl_protection;
        !           457:                long            dl_residual_error;
        !           458: }      dl_qos_cl_sel1_t;
        !           459: 
        !           460: //
        !           461: // DLPI interface primitive definitions.
        !           462: //
        !           463: // Each primitive is sent as a stream message. It is possible that
        !           464: // the messages may be viewed as a sequence of bytes that have the
        !           465: // following form without any padding. The structure definition
        !           466: // of the following messages may have to change depending on the
        !           467: // underlying hardware architecture and crossing of a hardware
        !           468: // boundary with a differenct hardware architecture.
        !           469: //
        !           470: // Fields in the primitives having a name of the form
        !           471: // dl_reserved cannot be used and have the value of
        !           472: // binary zero, no bits turned on.
        !           473: //
        !           474: // Each message has the name defined followed by the
        !           475: // stream message type (M_PROTO, M_PCPROTO, M_DATA)
        !           476: //
        !           477:  
        !           478: 
        !           479: //
        !           480: //     LOCAL MANAGEMENT SERVICE PRIMITIVES
        !           481: //
        !           482:  
        !           483: 
        !           484: //
        !           485: // DL_INFO_REQ, M_PCPROTO type
        !           486: //
        !           487:  
        !           488: typedef struct {
        !           489:        unsigned long   dl_primitive;   // set to DL_INFO_REQ 
        !           490: } dl_info_req_t;
        !           491: 
        !           492: //
        !           493: // DL_INFO_ACK, M_PCPROTO type
        !           494: //
        !           495:  
        !           496: typedef struct {
        !           497:        unsigned long   dl_primitive;           // set to DL_INFO_ACK 
        !           498:        unsigned long   dl_max_sdu;             // Max bytes in a DLSDU 
        !           499:        unsigned long   dl_min_sdu;             // Min bytes in a DLSDU 
        !           500:        unsigned long   dl_addr_length;         // length of DLSAP address 
        !           501:        unsigned long   dl_mac_type;            // type of medium supported 
        !           502:        unsigned long   dl_reserved;            // value set to zero 
        !           503:        unsigned long   dl_current_state;       // state of DLPI interface 
        !           504:        long            dl_sap_length;          // current length of SAP part 
        !           505:                                                //  of dlsap address 
        !           506:        unsigned long   dl_service_mode;        // CO, CL or ACL 
        !           507:        unsigned long   dl_qos_length;          // length of qos values 
        !           508:        unsigned long   dl_qos_offset;          // offset from beg. of block 
        !           509:        unsigned long   dl_qos_range_length;    // available range of qos 
        !           510:        unsigned long   dl_qos_range_offset;    // offset from beg. of block 
        !           511:        unsigned long   dl_provider_style;      // style1 or style2 
        !           512:        unsigned long   dl_addr_offset;         // offset of the dlsap addr 
        !           513:        unsigned long   dl_version;             // version number 
        !           514:        unsigned long   dl_brdcst_addr_length;  // length of broadcast addr 
        !           515:        unsigned long   dl_brdcst_addr_offset;  // offset from beg. of block 
        !           516:        unsigned long   dl_growth;              // set to zero 
        !           517: } dl_info_ack_t;
        !           518: 
        !           519: //
        !           520: // DL_ATTACH_REQ, M_PROTO type
        !           521: //
        !           522:  
        !           523: typedef struct {
        !           524:        unsigned long   dl_primitive;   // set to DL_ATTACH_REQ 
        !           525:        unsigned long   dl_ppa;         // id of the PPA 
        !           526: } dl_attach_req_t;
        !           527: 
        !           528: //
        !           529: // DL_DETACH_REQ, M_PROTO type
        !           530: //
        !           531:  
        !           532: typedef struct {
        !           533:        unsigned long   dl_primitive;   // set to DL_DETACH_REQ 
        !           534: } dl_detach_req_t;
        !           535: 
        !           536: //
        !           537: // DL_BIND_REQ, M_PROTO type
        !           538: //
        !           539:  
        !           540: typedef struct {
        !           541:        unsigned long   dl_primitive;   // set to DL_BIND_REQ 
        !           542:        unsigned long   dl_sap;         // info to identify dlsap addr 
        !           543:        unsigned long   dl_max_conind;  // max # of outstanding con_ind 
        !           544:        unsigned short  dl_service_mode;// CO, CL or ACL 
        !           545:        unsigned short  dl_conn_mgmt;   // if non-zero, is con-mgmt stream
        !           546:        unsigned long   dl_xidtest_flg; // if set to 1 indicates automatic
        !           547:                                        //  initiation of test and xid frames 
        !           548: } dl_bind_req_t;
        !           549: 
        !           550: //
        !           551: // DL_BIND_ACK, M_PCPROTO type
        !           552: //
        !           553:  
        !           554: typedef struct {
        !           555:        unsigned long   dl_primitive;   // DL_BIND_ACK 
        !           556:        unsigned long   dl_sap;         // DLSAP addr info 
        !           557:        unsigned long   dl_addr_length; // length of complete DLSAP addr 
        !           558:        unsigned long   dl_addr_offset; // offset from beginning of M_PCPROTO
        !           559:        unsigned long   dl_max_conind;  // allowed max. # of con-ind 
        !           560:        unsigned long   dl_xidtest_flg; // responses supported by provider 
        !           561: } dl_bind_ack_t;
        !           562: 
        !           563: //
        !           564: // DL_SUBS_BIND_REQ, M_PROTO type
        !           565: //
        !           566:  
        !           567: typedef struct {
        !           568:        unsigned long   dl_primitive;           // DL_SUBS_BIND_REQ 
        !           569:        unsigned long   dl_subs_sap_offset;     // offset of subs_sap 
        !           570:        unsigned long   dl_subs_sap_length;     // length of subs_sap 
        !           571:        unsigned long   dl_subs_bind_class;     // peer or hierarchical 
        !           572: } dl_subs_bind_req_t;
        !           573: 
        !           574: //
        !           575: // DL_SUBS_BIND_ACK, M_PCPROTO type
        !           576: //
        !           577:  
        !           578: typedef struct {
        !           579:        unsigned long   dl_primitive;           // DL_SUBS_BIND_ACK 
        !           580:        unsigned long   dl_subs_sap_offset;     // offset of subs_sap 
        !           581:        unsigned long   dl_subs_sap_len;        // length of subs_sap 
        !           582: } dl_subs_bind_ack_t;
        !           583: 
        !           584: //
        !           585: // DL_UNBIND_REQ, M_PROTO type
        !           586: //
        !           587:  
        !           588: typedef struct {
        !           589:        unsigned long   dl_primitive;           // DL_UNBIND_REQ 
        !           590: } dl_unbind_req_t;
        !           591: 
        !           592: //
        !           593: // DL_SUBS_UNBIND_REQ, M_PROTO type
        !           594: //
        !           595:  
        !           596: typedef struct {
        !           597:        unsigned long   dl_primitive;           // DL_SUBS_UNBIND_REQ 
        !           598:        unsigned long   dl_subs_sap_offset;     // offset of subs_sap 
        !           599:        unsigned long   dl_subs_sap_length;     // length of subs_sap 
        !           600: } dl_subs_unbind_req_t;
        !           601: 
        !           602: //
        !           603: // DL_OK_ACK, M_PCPROTO type
        !           604: //
        !           605:  
        !           606: typedef struct {
        !           607:        unsigned long   dl_primitive;           // DL_OK_ACK 
        !           608:        unsigned long   dl_correct_primitive;   // primitive being acknokwledged 
        !           609: } dl_ok_ack_t;
        !           610: 
        !           611: //
        !           612: // DL_ERROR_ACK, M_PCPROTO type
        !           613: //
        !           614:  
        !           615: typedef struct {
        !           616:        unsigned long   dl_primitive;           // DL_ERROR_ACK 
        !           617:        unsigned long   dl_error_primitive;     // primitive in error 
        !           618:        unsigned long   dl_errno;               // DLPI error code 
        !           619:        unsigned long   dl_unix_errno;          // UNIX system error code 
        !           620: } dl_error_ack_t;
        !           621: 
        !           622: //
        !           623: // DL_ENABMULTI_REQ, M_PROTO type
        !           624: //
        !           625:  
        !           626: typedef struct {
        !           627:        unsigned long   dl_primitive;   // DL_ENABMULTI_REQ 
        !           628:        unsigned long   dl_addr_length; // length of multicast address 
        !           629:        unsigned long   dl_addr_offset; // offset from beg. of M_PROTO block 
        !           630: } dl_enabmulti_req_t;
        !           631: 
        !           632: //
        !           633: // DL_DISABMULTI_REQ, M_PROTO type
        !           634: //
        !           635:  
        !           636: typedef struct {
        !           637:        unsigned long   dl_primitive;   // DL_DISABMULTI_REQ 
        !           638:        unsigned long   dl_addr_length; // length of multicast address 
        !           639:        unsigned long   dl_addr_offset; // offset from beg. of M_PROTO block 
        !           640: } dl_disabmulti_req_t;
        !           641: 
        !           642: //
        !           643: // DL_PROMISCON_REQ, M_PROTO type
        !           644: //
        !           645:  
        !           646: typedef struct {
        !           647:        unsigned long   dl_primitive;   // DL_PROMISCON_REQ 
        !           648:        unsigned long   dl_level;       // physical,SAP level or ALLmulticast
        !           649: } dl_promiscon_req_t;
        !           650: 
        !           651: //
        !           652: // DL_PROMISCOFF_REQ, M_PROTO type
        !           653: //
        !           654:  
        !           655: typedef struct {
        !           656:        unsigned long   dl_primitive;   // DL_PROMISCOFF_REQ 
        !           657:        unsigned long   dl_level;       // physical,SAP level or ALLmulticast
        !           658: } dl_promiscoff_req_t;
        !           659: 
        !           660: //
        !           661: //     Primitives to get and set the Physical address
        !           662: //
        !           663:  
        !           664: 
        !           665: //
        !           666: // DL_PHYS_ADDR_REQ, M_PROTO type
        !           667: //
        !           668:  
        !           669: typedef struct {
        !           670:        unsigned long   dl_primitive;   // DL_PHYS_ADDR_REQ 
        !           671:        unsigned long   dl_addr_type;   // factory or current physical addr 
        !           672: } dl_phys_addr_req_t;
        !           673: 
        !           674: //
        !           675: // DL_PHYS_ADDR_ACK, M_PCPROTO type
        !           676: //
        !           677:  
        !           678: typedef struct {
        !           679:        unsigned long   dl_primitive;   // DL_PHYS_ADDR_ACK 
        !           680:        unsigned long   dl_addr_length; // length of physical address 
        !           681:        unsigned long   dl_addr_offset; // offset from beg. of block 
        !           682: } dl_phys_addr_ack_t;
        !           683: 
        !           684: //
        !           685: // DL_SET_PHYS_ADDR_REQ, M_PROTO type
        !           686: //
        !           687:  
        !           688: typedef struct {
        !           689:        unsigned long   dl_primitive;   // DL_SET_PHYS_ADDR_REQ 
        !           690:        unsigned long   dl_addr_length; // length of physical address 
        !           691:        unsigned long   dl_addr_offset; // offset from beg. of block 
        !           692: } dl_set_phys_addr_req_t;
        !           693: 
        !           694: //
        !           695: //     Primitives to get statistics
        !           696: //
        !           697:  
        !           698: 
        !           699: //
        !           700: // DL_GET_STATISTICS_REQ, M_PROTO type
        !           701: //
        !           702:  
        !           703: typedef struct {
        !           704:        unsigned long   dl_primitive;   // DL_GET_STATISTICS_REQ 
        !           705: } dl_get_statistics_req_t;
        !           706: 
        !           707: //
        !           708: // DL_GET_STATISTICS_ACK, M_PCPROTO type
        !           709: //
        !           710:  
        !           711: typedef struct {
        !           712:        unsigned long   dl_primitive;   // DL_GET_STATISTICS_ACK 
        !           713:        unsigned long   dl_stat_length; // length of statistics structure 
        !           714:        unsigned long   dl_stat_offset; // offset from beg. of block 
        !           715: } dl_get_statistics_ack_t;
        !           716: 
        !           717: //
        !           718: //     CONNECTION-ORIENTED SERVICE PRIMITIVES
        !           719: //
        !           720:  
        !           721: 
        !           722: //
        !           723: // DL_CONNECT_REQ, M_PROTO type
        !           724: //
        !           725:  
        !           726: typedef struct {
        !           727:        unsigned long   dl_primitive;           // DL_CONNECT_REQ 
        !           728:        unsigned long   dl_dest_addr_length;    // len. of dlsap addr 
        !           729:        unsigned long   dl_dest_addr_offset;    // offset 
        !           730:        unsigned long   dl_qos_length;          // len. of QOS parm val 
        !           731:        unsigned long   dl_qos_offset;          // offset 
        !           732:        unsigned long   dl_growth;              // set to zero 
        !           733: } dl_connect_req_t;
        !           734: 
        !           735: //
        !           736: // DL_CONNECT_IND, M_PROTO type
        !           737: //
        !           738:  
        !           739: typedef struct {
        !           740:        unsigned long   dl_primitive;           // DL_CONNECT_IND 
        !           741:        unsigned long   dl_correlation;         // provider's correlation token 
        !           742:        unsigned long   dl_called_addr_length;  // length of called address 
        !           743:        unsigned long   dl_called_addr_offset;  // offset from beginning of block 
        !           744:        unsigned long   dl_calling_addr_length; // length of calling address 
        !           745:        unsigned long   dl_calling_addr_offset; // offset from beginning of block 
        !           746:        unsigned long   dl_qos_length;          // length of qos structure 
        !           747:        unsigned long   dl_qos_offset;          // offset from beginning of block 
        !           748:        unsigned long   dl_growth;              // set to zero 
        !           749: } dl_connect_ind_t;
        !           750: 
        !           751: //
        !           752: // DL_CONNECT_RES, M_PROTO type
        !           753: //
        !           754:  
        !           755: typedef struct {
        !           756:        unsigned long   dl_primitive;   // DL_CONNECT_RES 
        !           757:        unsigned long   dl_correlation; // provider's correlation token 
        !           758:        unsigned long   dl_resp_token;  // token associated with responding stream 
        !           759:        unsigned long   dl_qos_length;  // length of qos structure 
        !           760:        unsigned long   dl_qos_offset;  // offset from beginning of block 
        !           761:        unsigned long   dl_growth;      // set to zero 
        !           762: } dl_connect_res_t;
        !           763: 
        !           764: //
        !           765: // DL_CONNECT_CON, M_PROTO type
        !           766: //
        !           767:  
        !           768: typedef struct {
        !           769:        unsigned long   dl_primitive;           // DL_CONNECT_CON 
        !           770:        unsigned long   dl_resp_addr_length;    // length of responder's address 
        !           771:        unsigned long   dl_resp_addr_offset;    // offset from beginning of block 
        !           772:        unsigned long   dl_qos_length;          // length of qos structure 
        !           773:        unsigned long   dl_qos_offset;          // offset from beginning of block 
        !           774:        unsigned long   dl_growth;              // set to zero 
        !           775: } dl_connect_con_t;
        !           776: 
        !           777: //
        !           778: // DL_TOKEN_REQ, M_PCPROTO type
        !           779: //
        !           780:  
        !           781: typedef struct {
        !           782:        unsigned long   dl_primitive;   // DL_TOKEN_REQ 
        !           783: } dl_token_req_t;
        !           784: 
        !           785: //
        !           786: // DL_TOKEN_ACK, M_PCPROTO type
        !           787: //
        !           788:  
        !           789: typedef struct {
        !           790:        unsigned long   dl_primitive;   // DL_TOKEN_ACK 
        !           791:        unsigned long   dl_token;       // Connection response token 
        !           792:                                        //  associated with the stream 
        !           793: } dl_token_ack_t;
        !           794: 
        !           795: //
        !           796: // DL_DISCONNECT_REQ, M_PROTO type
        !           797: //
        !           798:  
        !           799: typedef struct {
        !           800:        unsigned long   dl_primitive;   // DL_DISCONNECT_REQ 
        !           801:        unsigned long   dl_reason;      // normal, abnormal, perm. or transient 
        !           802:        unsigned long   dl_correlation; // association with connect_ind 
        !           803: } dl_disconnect_req_t;
        !           804: 
        !           805: //
        !           806: // DL_DISCONNECT_IND, M_PROTO type
        !           807: //
        !           808:  
        !           809: typedef struct {
        !           810:        unsigned long   dl_primitive;   // DL_DISCONNECT_IND 
        !           811:        unsigned long   dl_originator;  // USER or PROVIDER 
        !           812:        unsigned long   dl_reason;      // permanent or transient 
        !           813:        unsigned long   dl_correlation; // association with connect_ind 
        !           814: } dl_disconnect_ind_t;
        !           815: 
        !           816: //
        !           817: // DL_RESET_REQ, M_PROTO type
        !           818: //
        !           819:  
        !           820: typedef struct {
        !           821:        unsigned long   dl_primitive;   // DL_RESET_REQ 
        !           822: } dl_reset_req_t;
        !           823: 
        !           824: //
        !           825: // DL_RESET_IND, M_PROTO type
        !           826: //
        !           827:  
        !           828: typedef struct {
        !           829:        unsigned long   dl_primitive;   // DL_RESET_IND 
        !           830:        unsigned long   dl_originator;  // Provider or User 
        !           831:        unsigned long   dl_reason;      // flow control, link error or resynch 
        !           832: } dl_reset_ind_t;
        !           833: 
        !           834: //
        !           835: // DL_RESET_RES, M_PROTO type
        !           836: //
        !           837:  
        !           838: typedef struct {
        !           839:        unsigned long   dl_primitive;   // DL_RESET_RES 
        !           840: } dl_reset_res_t;
        !           841: 
        !           842: //
        !           843: // DL_RESET_CON, M_PROTO type
        !           844: //
        !           845:  
        !           846: typedef struct {
        !           847:        unsigned long   dl_primitive;   // DL_RESET_CON 
        !           848: } dl_reset_con_t;
        !           849: 
        !           850: //
        !           851: //     CONNECTIONLESS SERVICE PRIMITIVES
        !           852: //
        !           853:  
        !           854: 
        !           855: //
        !           856: // DL_UNITDATA_REQ, M_PROTO type, with M_DATA block(s)
        !           857: //
        !           858:  
        !           859: typedef struct {
        !           860:        unsigned long   dl_primitive;           // DL_UNITDATA_REQ 
        !           861:        unsigned long   dl_dest_addr_length;    // DLSAP length of dest. user 
        !           862:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           863:        dl_priority_t   dl_priority;            // priority value 
        !           864: } dl_unitdata_req_t;
        !           865: 
        !           866: //
        !           867: // DL_UNITDATA_IND, M_PROTO type, with M_DATA block(s)
        !           868: //
        !           869:  
        !           870: typedef struct {
        !           871:        unsigned long   dl_primitive;           // DL_UNITDATA_IND 
        !           872:        unsigned long   dl_dest_addr_length;    // DLSAP length of dest. user 
        !           873:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           874:        unsigned long   dl_src_addr_length;     // DLSAP addr length of sending user 
        !           875:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !           876:        unsigned long   dl_group_address;       // set to one if multicast/broadcast 
        !           877: } dl_unitdata_ind_t;
        !           878: 
        !           879: //
        !           880: // DL_UDERROR_IND, M_PROTO type
        !           881: //     (or M_PCPROTO type if LLI-based provider)
        !           882: //
        !           883:  
        !           884: typedef struct {
        !           885:        unsigned long   dl_primitive;           // DL_UDERROR_IND 
        !           886:        unsigned long   dl_dest_addr_length;    // Destination DLSAP 
        !           887:        unsigned long   dl_dest_addr_offset;    // Offset from beg. of block 
        !           888:        unsigned long   dl_unix_errno;          // unix system error code 
        !           889:        unsigned long   dl_errno;               // DLPI error code 
        !           890: } dl_uderror_ind_t;
        !           891: 
        !           892: //
        !           893: // DL_UDQOS_REQ, M_PROTO type
        !           894: //
        !           895:  
        !           896: typedef struct {
        !           897:        unsigned long   dl_primitive;   // DL_UDQOS_REQ 
        !           898:        unsigned long   dl_qos_length;  // length in bytes of requested qos 
        !           899:        unsigned long   dl_qos_offset;  // offset from beg. of block 
        !           900: } dl_udqos_req_t;
        !           901: 
        !           902: //
        !           903: //     Primitives to handle XID and TEST operations
        !           904: //
        !           905:  
        !           906: 
        !           907: //
        !           908: // DL_TEST_REQ, M_PROTO type
        !           909: //
        !           910:  
        !           911: typedef struct {
        !           912:        unsigned long   dl_primitive;           // DL_TEST_REQ 
        !           913:        unsigned long   dl_flag;                // poll/final 
        !           914:        unsigned long   dl_dest_addr_length;    // DLSAP length of dest. user 
        !           915:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           916: } dl_test_req_t;
        !           917: 
        !           918: //
        !           919: // DL_TEST_IND, M_PROTO type
        !           920: //
        !           921:  
        !           922: typedef struct {
        !           923:        unsigned long   dl_primitive;           // DL_TEST_IND 
        !           924:        unsigned long   dl_flag;                // poll/final 
        !           925:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           926:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           927:        unsigned long   dl_src_addr_length;     // dlsap length of source user 
        !           928:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !           929: } dl_test_ind_t;
        !           930: 
        !           931: //
        !           932: // DL_TEST_RES, M_PROTO type
        !           933: //
        !           934:  
        !           935: typedef struct {
        !           936:        unsigned long   dl_primitive;           // DL_TEST_RES 
        !           937:        unsigned long   dl_flag;                // poll/final 
        !           938:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           939:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           940: } dl_test_res_t;
        !           941: 
        !           942: //
        !           943: // DL_TEST_CON, M_PROTO type
        !           944: //
        !           945:  
        !           946: typedef struct {
        !           947:        unsigned long   dl_primitive;           // DL_TEST_CON 
        !           948:        unsigned long   dl_flag;                // poll/final 
        !           949:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           950:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           951:        unsigned long   dl_src_addr_length;     // dlsap length of source user 
        !           952:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !           953: } dl_test_con_t;
        !           954: 
        !           955: //
        !           956: // DL_XID_REQ, M_PROTO type
        !           957: //
        !           958:  
        !           959: typedef struct {
        !           960:        unsigned long   dl_primitive;           // DL_XID_REQ 
        !           961:        unsigned long   dl_flag;                // poll/final 
        !           962:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           963:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           964: } dl_xid_req_t;
        !           965: 
        !           966: //
        !           967: // DL_XID_IND, M_PROTO type
        !           968: //
        !           969:  
        !           970: typedef struct {
        !           971:        unsigned long   dl_primitive;           // DL_XID_IND 
        !           972:        unsigned long   dl_flag;                // poll/final 
        !           973:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           974:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           975:        unsigned long   dl_src_addr_length;     // dlsap length of source user 
        !           976:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !           977: } dl_xid_ind_t;
        !           978: 
        !           979: //
        !           980: // DL_XID_RES, M_PROTO type
        !           981: //
        !           982:  
        !           983: typedef struct {
        !           984:        unsigned long   dl_primitive;           // DL_XID_RES 
        !           985:        unsigned long   dl_flag;                // poll/final 
        !           986:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           987:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           988: } dl_xid_res_t;
        !           989: 
        !           990: //
        !           991: // DL_XID_CON, M_PROTO type
        !           992: //
        !           993:  
        !           994: typedef struct {
        !           995:        unsigned long   dl_primitive;           // DL_XID_CON 
        !           996:        unsigned long   dl_flag;                // poll/final 
        !           997:        unsigned long   dl_dest_addr_length;    // dlsap length of dest. user 
        !           998:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !           999:        unsigned long   dl_src_addr_length;     // dlsap length of source user 
        !          1000:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !          1001: } dl_xid_con_t;
        !          1002: 
        !          1003: //
        !          1004: //     ACKNOWLEDGED CONNECTIONLESS SERVICE PRIMITIVES
        !          1005: //
        !          1006:  
        !          1007: 
        !          1008: //
        !          1009: // DL_DATA_ACK_REQ, M_PROTO type
        !          1010: //
        !          1011:  
        !          1012: typedef struct {
        !          1013:        unsigned long   dl_primitive;           // DL_DATA_ACK_REQ 
        !          1014:        unsigned long   dl_correlation;         // User's correlation token 
        !          1015:        unsigned long   dl_dest_addr_length;    // length of destination addr 
        !          1016:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !          1017:        unsigned long   dl_src_addr_length;     // length of source address 
        !          1018:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !          1019:        unsigned long   dl_priority;            // priority 
        !          1020:        unsigned long   dl_service_class;       // DL_RQST_RSP or DL_RQST_NORSP 
        !          1021: } dl_data_ack_req_t;
        !          1022: 
        !          1023: //
        !          1024: // DL_DATA_ACK_IND, M_PROTO type
        !          1025: //
        !          1026:  
        !          1027: typedef struct {
        !          1028:        unsigned long   dl_primitive;           // DL_DATA_ACK_IND 
        !          1029:        unsigned long   dl_dest_addr_length;    // length of destination addr 
        !          1030:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !          1031:        unsigned long   dl_src_addr_length;     // length of source address 
        !          1032:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !          1033:        unsigned long   dl_priority;            // priority for data unit transm. 
        !          1034:        unsigned long   dl_service_class;       // DL_RQST_RSP or DL_RQST_NORSP 
        !          1035: } dl_data_ack_ind_t;
        !          1036: 
        !          1037: //
        !          1038: // DL_DATA_ACK_STATUS_IND, M_PROTO type
        !          1039: //
        !          1040:  
        !          1041: typedef struct {
        !          1042:        unsigned long   dl_primitive;   // DL_DATA_ACK_STATUS_IND 
        !          1043:        unsigned long   dl_correlation; // User's correlation token 
        !          1044:        unsigned long   dl_status;      // success or failure of previous req 
        !          1045: } dl_data_ack_status_ind_t;
        !          1046: 
        !          1047: //
        !          1048: // DL_REPLY_REQ, M_PROTO type
        !          1049: //
        !          1050:  
        !          1051: typedef struct {
        !          1052:        unsigned long   dl_primitive;           // DL_REPLY_REQ 
        !          1053:        unsigned long   dl_correlation;         // User's correlation token 
        !          1054:        unsigned long   dl_dest_addr_length;    // length of destination addr 
        !          1055:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !          1056:        unsigned long   dl_src_addr_length;     // source address length 
        !          1057:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !          1058:        unsigned long   dl_priority;            // priority for data unit transm. 
        !          1059:        unsigned long   dl_service_class;
        !          1060: } dl_reply_req_t;
        !          1061: 
        !          1062: //
        !          1063: // DL_REPLY_IND, M_PROTO type
        !          1064: //
        !          1065:  
        !          1066: typedef struct {
        !          1067:        unsigned long   dl_primitive;           // DL_REPLY_IND 
        !          1068:        unsigned long   dl_dest_addr_length;    // length of destination addr 
        !          1069:        unsigned long   dl_dest_addr_offset;    // offset from beg. of block 
        !          1070:        unsigned long   dl_src_addr_length;     // source address length 
        !          1071:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !          1072:        unsigned long   dl_priority;            // priority for data unit transm. 
        !          1073:        unsigned long   dl_service_class;       // DL_RQST_RSP or DL_RQST_NORSP 
        !          1074: } dl_reply_ind_t;
        !          1075: 
        !          1076: //
        !          1077: // DL_REPLY_STATUS_IND, M_PROTO type
        !          1078: //
        !          1079:  
        !          1080: typedef struct {
        !          1081:        unsigned long   dl_primitive;   // DL_REPLY_STATUS_IND 
        !          1082:        unsigned long   dl_correlation; // User's correlation token 
        !          1083:        unsigned long   dl_status;      // success or failure of previous req 
        !          1084: } dl_reply_status_ind_t;
        !          1085: 
        !          1086: //
        !          1087: // DL_REPLY_UPDATE_REQ, M_PROTO type
        !          1088: //
        !          1089:  
        !          1090: typedef struct {
        !          1091:        unsigned long   dl_primitive;           // DL_REPLY_UPDATE_REQ 
        !          1092:        unsigned long   dl_correlation;         // User's correlation token 
        !          1093:        unsigned long   dl_src_addr_length;     // source address length 
        !          1094:        unsigned long   dl_src_addr_offset;     // offset from beg. of block 
        !          1095: } dl_reply_update_req_t;
        !          1096: 
        !          1097: //
        !          1098: // DL_REPLY_UPDATE_STATUS_IND, M_PROTO type
        !          1099: //
        !          1100:  
        !          1101: typedef struct {
        !          1102:        unsigned long   dl_primitive;   // DL_REPLY_UPDATE_STATUS_IND 
        !          1103:        unsigned long   dl_correlation; // User's correlation token 
        !          1104:        unsigned long   dl_status;      // success or failure of previous req 
        !          1105: } dl_reply_update_status_ind_t;
        !          1106: 
        !          1107: //
        !          1108: // Performance optimization
        !          1109: //
        !          1110: 
        !          1111: typedef struct {
        !          1112:        ulong   dl_primitive;           /* DL_SHOULD_PUT_REQ */
        !          1113:         ulong   context;                /* context to pass in should_put */
        !          1114:        int     (*should_put) (         /* this is the function to call to */
        !          1115:                ulong,                  /*  see if a packet should be passed */
        !          1116:                char *,                 /*  upstream */
        !          1117:                int,                    /* Arguments are */
        !          1118:                 char *,                 /* context, header, headerlen, */
        !          1119:                 int,                    /* data, datalen, broadcast flag */
        !          1120:                 BOOLEAN);
        !          1121: } dl_shouldput_t;
        !          1122: 
        !          1123: //
        !          1124: // low level adapter info
        !          1125: //
        !          1126: 
        !          1127: typedef struct {
        !          1128:        ulong   dl_primitive;           /* DL_ADAPTER_INFO_REQ */
        !          1129: } dl_adapter_info_req;
        !          1130: 
        !          1131: typedef struct {
        !          1132:        ulong   dl_primitive;           /* DL_ADAPTER_INFO_ACK */
        !          1133:         ulong   link_speed;             /* kbits/second */
        !          1134:         ulong   receive_buffer_size;    /* bytes */
        !          1135: } dl_adapter_info_ack;
        !          1136: 
        !          1137: 
        !          1138: union DL_primitives {
        !          1139:        unsigned long           dl_primitive;
        !          1140:        dl_info_req_t           info_req;
        !          1141:        dl_info_ack_t           info_ack;
        !          1142:        dl_attach_req_t         attach_req;
        !          1143:        dl_detach_req_t         detach_req;
        !          1144:        dl_bind_req_t           bind_req;
        !          1145:        dl_bind_ack_t           bind_ack;
        !          1146:        dl_unbind_req_t         unbind_req;
        !          1147:        dl_subs_bind_req_t      subs_bind_req;
        !          1148:        dl_subs_bind_ack_t      subs_bind_ack;
        !          1149:        dl_subs_unbind_req_t    subs_unbind_req;
        !          1150:        dl_ok_ack_t             ok_ack;
        !          1151:        dl_error_ack_t          error_ack;
        !          1152:        dl_connect_req_t        connect_req;
        !          1153:        dl_connect_ind_t        connect_ind;
        !          1154:        dl_connect_res_t        connect_res;
        !          1155:        dl_connect_con_t        connect_con;
        !          1156:        dl_token_req_t          token_req;
        !          1157:        dl_token_ack_t          token_ack;
        !          1158:        dl_disconnect_req_t     disconnect_req;
        !          1159:        dl_disconnect_ind_t     disconnect_ind;
        !          1160:        dl_reset_req_t          reset_req;
        !          1161:        dl_reset_ind_t          reset_ind;
        !          1162:        dl_reset_res_t          reset_res;
        !          1163:        dl_reset_con_t          reset_con;
        !          1164:        dl_unitdata_req_t       unitdata_req;
        !          1165:        dl_unitdata_ind_t       unitdata_ind;
        !          1166:        dl_uderror_ind_t        uderror_ind;
        !          1167:        dl_udqos_req_t          udqos_req;
        !          1168:        dl_enabmulti_req_t      enabmulti_req;
        !          1169:        dl_disabmulti_req_t     disabmulti_req;
        !          1170:        dl_promiscon_req_t      promiscon_req;
        !          1171:        dl_promiscoff_req_t     promiscoff_req;
        !          1172:        dl_phys_addr_req_t      physaddr_req;
        !          1173:        dl_phys_addr_ack_t      physaddr_ack;
        !          1174:        dl_set_phys_addr_req_t  set_physaddr_req;
        !          1175:        dl_get_statistics_req_t get_statistics_req;
        !          1176:        dl_get_statistics_ack_t get_statistics_ack;
        !          1177:        dl_test_req_t           test_req;
        !          1178:        dl_test_ind_t           test_ind;
        !          1179:        dl_test_res_t           test_res;
        !          1180:        dl_test_con_t           test_con;
        !          1181:        dl_xid_req_t            xid_req;
        !          1182:        dl_xid_ind_t            xid_ind;
        !          1183:        dl_xid_res_t            xid_res;
        !          1184:        dl_xid_con_t            xid_con;
        !          1185:        dl_data_ack_req_t       data_ack_req;
        !          1186:        dl_data_ack_ind_t       data_ack_ind;
        !          1187:        dl_data_ack_status_ind_t        data_ack_status_ind;
        !          1188:        dl_reply_req_t          reply_req;
        !          1189:        dl_reply_ind_t          reply_ind;
        !          1190:        dl_reply_status_ind_t   reply_status_ind;
        !          1191:        dl_reply_update_req_t   reply_update_req;
        !          1192:        dl_reply_update_status_ind_t    reply_update_status_ind;
        !          1193: };
        !          1194: 
        !          1195: #define DL_INFO_REQ_SIZE       sizeof(dl_info_req_t)
        !          1196: #define DL_INFO_ACK_SIZE       sizeof(dl_info_ack_t)
        !          1197: #define DL_ATTACH_REQ_SIZE     sizeof(dl_attach_req_t)
        !          1198: #define DL_DETACH_REQ_SIZE     sizeof(dl_detach_req_t)
        !          1199: #define DL_BIND_REQ_SIZE       sizeof(dl_bind_req_t)
        !          1200: #define DL_BIND_ACK_SIZE       sizeof(dl_bind_ack_t)
        !          1201: #define DL_UNBIND_REQ_SIZE     sizeof(dl_unbind_req_t)
        !          1202: #define DL_SUBS_BIND_REQ_SIZE  sizeof(dl_subs_bind_req_t)
        !          1203: #define DL_SUBS_BIND_ACK_SIZE  sizeof(dl_subs_bind_ack_t)
        !          1204: #define DL_SUBS_UNBIND_REQ_SIZE        sizeof(dl_subs_unbind_req_t)
        !          1205: #define DL_OK_ACK_SIZE         sizeof(dl_ok_ack_t)
        !          1206: #define DL_ERROR_ACK_SIZE      sizeof(dl_error_ack_t)
        !          1207: #define DL_CONNECT_REQ_SIZE    sizeof(dl_connect_req_t)
        !          1208: #define DL_CONNECT_IND_SIZE    sizeof(dl_connect_ind_t)
        !          1209: #define DL_CONNECT_RES_SIZE    sizeof(dl_connect_res_t)
        !          1210: #define DL_CONNECT_CON_SIZE    sizeof(dl_connect_con_t)
        !          1211: #define DL_TOKEN_REQ_SIZE      sizeof(dl_token_req_t)
        !          1212: #define DL_TOKEN_ACK_SIZE      sizeof(dl_token_ack_t)
        !          1213: #define DL_DISCONNECT_REQ_SIZE sizeof(dl_disconnect_req_t)
        !          1214: #define DL_DISCONNECT_IND_SIZE sizeof(dl_disconnect_ind_t)
        !          1215: #define DL_RESET_REQ_SIZE      sizeof(dl_reset_req_t)
        !          1216: #define DL_RESET_IND_SIZE      sizeof(dl_reset_ind_t)
        !          1217: #define DL_RESET_RES_SIZE      sizeof(dl_reset_res_t)
        !          1218: #define DL_RESET_CON_SIZE      sizeof(dl_reset_con_t)
        !          1219: #define DL_UNITDATA_REQ_SIZE   sizeof(dl_unitdata_req_t)
        !          1220: #define DL_UNITDATA_IND_SIZE   sizeof(dl_unitdata_ind_t)
        !          1221: #define DL_UDERROR_IND_SIZE    sizeof(dl_uderror_ind_t)
        !          1222: #define DL_UDQOS_REQ_SIZE      sizeof(dl_udqos_req_t)
        !          1223: #define DL_ENABMULTI_REQ_SIZE  sizeof(dl_enabmulti_req_t)
        !          1224: #define DL_DISABMULTI_REQ_SIZE sizeof(dl_disabmulti_req_t)
        !          1225: #define DL_PROMISCON_REQ_SIZE  sizeof(dl_promiscon_req_t)
        !          1226: #define DL_PROMISCOFF_REQ_SIZE sizeof(dl_promiscoff_req_t)
        !          1227: #define DL_PHYS_ADDR_REQ_SIZE  sizeof(dl_phys_addr_req_t)
        !          1228: #define DL_PHYS_ADDR_ACK_SIZE  sizeof(dl_phys_addr_ack_t)
        !          1229: #define DL_SET_PHYS_ADDR_REQ_SIZE      sizeof(dl_set_phys_addr_req_t)
        !          1230: #define DL_GET_STATISTICS_REQ_SIZE     sizeof(dl_get_statistics_req_t)
        !          1231: #define DL_GET_STATISTICS_ACK_SIZE     sizeof(dl_get_statistics_ack_t)
        !          1232: #define DL_XID_REQ_SIZE                sizeof(dl_xid_req_t)
        !          1233: #define DL_XID_IND_SIZE                sizeof(dl_xid_ind_t)
        !          1234: #define DL_XID_RES_SIZE                sizeof(dl_xid_res_t)
        !          1235: #define DL_XID_CON_SIZE                sizeof(dl_xid_con_t)
        !          1236: #define DL_TEST_REQ_SIZE       sizeof(dl_test_req_t)
        !          1237: #define DL_TEST_IND_SIZE       sizeof(dl_test_ind_t)
        !          1238: #define DL_TEST_RES_SIZE       sizeof(dl_test_res_t)
        !          1239: #define DL_TEST_CON_SIZE       sizeof(dl_test_con_t)
        !          1240: #define DL_DATA_ACK_REQ_SIZE   sizeof(dl_data_ack_req_t)
        !          1241: #define DL_DATA_ACK_IND_SIZE   sizeof(dl_data_ack_ind_t)
        !          1242: #define DL_DATA_ACK_STATUS_IND_SIZE    sizeof(dl_data_ack_status_ind_t)
        !          1243: #define DL_REPLY_REQ_SIZE      sizeof(dl_reply_req_t)
        !          1244: #define DL_REPLY_IND_SIZE      sizeof(dl_reply_ind_t)
        !          1245: #define DL_REPLY_STATUS_IND_SIZE       sizeof(dl_reply_status_ind_t)
        !          1246: #define DL_REPLY_UPDATE_REQ_SIZE       sizeof(dl_reply_update_req_t)
        !          1247: #define DL_REPLY_UPDATE_STATUS_IND_SIZE        sizeof(dl_reply_update_status_ind_t)
        !          1248: 
        !          1249: #endif // _SYS_DLPI_H 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.