Annotation of ntddk/src/network/streams/inc/sys/dlpi.h, revision 1.1.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.