Add the "struct ucred *" argument to the remaining nic ioctls in LINT.
[dragonfly.git] / sys / netproto / atm / atm.h
1 /*
2  *
3  * ===================================
4  * HARP  |  Host ATM Research Platform
5  * ===================================
6  *
7  *
8  * This Host ATM Research Platform ("HARP") file (the "Software") is
9  * made available by Network Computing Services, Inc. ("NetworkCS")
10  * "AS IS".  NetworkCS does not provide maintenance, improvements or
11  * support of any kind.
12  *
13  * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
14  * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
15  * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
16  * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
17  * In no event shall NetworkCS be responsible for any damages, including
18  * but not limited to consequential damages, arising from or relating to
19  * any use of the Software or related support.
20  *
21  * Copyright 1994-1998 Network Computing Services, Inc.
22  *
23  * Copies of this Software may be made, however, the above copyright
24  * notice must be reproduced on all copies.
25  *
26  *      @(#) $FreeBSD: src/sys/netatm/atm.h,v 1.2 1999/08/28 00:48:34 peter Exp $
27  *      @(#) $DragonFly: src/sys/netproto/atm/atm.h,v 1.2 2003/06/17 04:28:48 dillon Exp $
28  *
29  */
30
31 /*
32  * Core ATM Services
33  * -----------------
34  *
35  * ATM address family definitions
36  *
37  */
38
39 #ifndef _NETATM_ATM_H
40 #define _NETATM_ATM_H
41
42
43 /*
44  * The definitions in this file are intended to conform to the 
45  * specifications defined in:
46  *
47  *      The Open Group, Networking Services (XNS) Issue 5
48  *
49  *      ATM Transport Protocol Information for Sockets
50  *
51  * which is Copyright (c) 1997, The Open Group.
52  *
53  * All extensions contained in this file to the base specification 
54  * are denoted with a comment string of "XNS_EXT".
55  */
56
57 /*
58  * ATM socket protocols
59  */
60 #define ATM_PROTO_AAL5          0x5301  /* AAL type 5 protocol */
61 #define ATM_PROTO_SSCOP         0x5302  /* SSCOP protocol      */
62
63
64 /*
65  * ATM address defintions
66  */
67 /*
68  * General format of an ATM address
69  */
70 #define ATM_ADDR_LEN    20              /* Size of address field (XNS_EXT) */
71
72 struct t_atm_addr {
73         int8_t          address_format; /* Address format (see below) */
74         u_int8_t        address_length; /* Length of address field */
75         u_int8_t        address[ATM_ADDR_LEN];  /* Address field */
76 };
77 typedef struct t_atm_addr       Atm_addr;       /* XNS_EXT */
78
79 /*
80  * ATM address formats
81  */
82 #define T_ATM_ABSENT            (-1)    /* No address present */
83 #define T_ATM_ENDSYS_ADDR       1       /* ATM Endsystem */
84 #define T_ATM_NSAP_ADDR         1       /* NSAP */
85 #define T_ATM_E164_ADDR         2       /* E.164 */
86 #define T_ATM_SPANS_ADDR        3       /* FORE SPANS (XNS_EXT) */
87 #define T_ATM_PVC_ADDR          4       /* PVC (VPI,VCI) (XNS_EXT) */
88
89 /*
90  * ATM Endsystem / NSAP address format
91  */
92 struct atm_addr_nsap {                  /* XNS_EXT */
93         u_char          aan_afi;        /* Authority and Format Identifier */
94                                         /* (see below) */
95         u_char          aan_afspec[12]; /* AFI specific fields */
96         u_char          aan_esi[6];     /* End System Identifier */
97         u_char          aan_sel;        /* Selector */
98 };
99 typedef struct atm_addr_nsap    Atm_addr_nsap;
100
101 /*
102  * AFI codes
103  */
104 #define AFI_DCC         0x39            /* DCC ATM Format (XNS_EXT) */
105 #define AFI_ICD         0x47            /* ICD ATM Format (XNS_EXT) */
106 #define AFI_E164        0x45            /* E.164 ATM Format (XNS_EXT) */
107
108 /*
109  * E.164 address format
110  */
111 struct atm_addr_e164 {                  /* XNS_EXT */
112         u_char          aae_addr[15];   /* E.164 address */
113 };
114 typedef struct atm_addr_e164    Atm_addr_e164;
115
116 /*
117  * SPANS address format
118  */
119 struct atm_addr_spans {                 /* XNS_EXT */
120         u_char          aas_addr[8];    /* See SPANS code for specific fields */
121 };
122 typedef struct atm_addr_spans   Atm_addr_spans;
123
124 /*
125  * PVC address format
126  */
127 struct atm_addr_pvc {                   /* XNS_EXT */
128         u_int8_t        aap_vpi[2];     /* VPI */
129         u_int8_t        aap_vci[2];     /* VCI */
130 };
131 typedef struct atm_addr_pvc     Atm_addr_pvc;
132
133 #define ATM_PVC_GET_VPI(addr)           /* XNS_EXT */           \
134         ((u_int16_t)(((addr)->aap_vpi[0] << 8) | (addr)->aap_vpi[1]))
135 #define ATM_PVC_GET_VCI(addr)           /* XNS_EXT */           \
136         ((u_int16_t)(((addr)->aap_vci[0] << 8) | (addr)->aap_vci[1]))
137 #define ATM_PVC_SET_VPI(addr,vpi) {     /* XNS_EXT */           \
138         (addr)->aap_vpi[0] = ((vpi) >> 8) & 0xff;               \
139         (addr)->aap_vpi[1] = (vpi) & 0xff;                      \
140 }
141 #define ATM_PVC_SET_VCI(addr,vci) {     /* XNS_EXT */           \
142         (addr)->aap_vci[0] = ((vci) >> 8) & 0xff;               \
143         (addr)->aap_vci[1] = (vci) & 0xff;                      \
144 }
145
146
147 /*
148  * ATM service access point (SAP)
149  *
150  * A SAP address consists of SAP Vector Elements (SVE).  Each SVE consists 
151  * of the following fields:
152  *      o tag - defines the interpretation of the SVE;
153  *      o length - the length of the SVE value field;
154  *      o value - the value associated with the SVE;
155  *
156  * All of the possible SAP field values are either defined below
157  * or in the corresponding option value definitions.
158  */
159
160 /*
161  * ATM Address and Selector SVE
162  */
163 struct t_atm_sap_addr {
164         int8_t          SVE_tag_addr;   /* SVE tag (address) */
165         int8_t          SVE_tag_selector; /* SVE tag (selector) */
166                                         /* Address/selector value */
167         int8_t          address_format; /* Address format */
168         u_int8_t        address_length; /* Length of address field */
169         u_int8_t        address[ATM_ADDR_LEN];  /* Address field */
170 };
171
172 /*
173  * B-LLI Layer 2 SVE
174  */
175 struct t_atm_sap_layer2 {
176         int8_t          SVE_tag;        /* SVE tag */
177         u_int8_t        ID_type;        /* Layer 2 protocol discriminator */
178         union {                         /* Layer 2 protocol */
179                 u_int8_t        simple_ID;      /* ITU */
180                 u_int8_t        user_defined_ID;/* User-defined */
181         } ID;
182 };
183
184 /*
185  * B-LLI Layer 3 SVE
186  */
187 struct t_atm_sap_layer3 {
188         int8_t          SVE_tag;        /* SVE tag */
189         u_int8_t        ID_type;        /* Layer 3 protocol discriminator */
190         union {                         /* Layer 3 protocol */
191                 u_int8_t        simple_ID;      /* ITU */
192                 u_int8_t        IPI_ID;         /* ISO IPI */
193                 struct {                        /* IEEE 802.1 SNAP ID */
194                         u_int8_t        OUI[3];
195                         u_int8_t        PID[2];
196                 } SNAP_ID;
197                 u_int8_t        user_defined_ID;/* User-defined */
198         } ID;
199 };
200
201 /*
202  * B_HLI SVE
203  */
204 struct t_atm_sap_appl {
205         int8_t          SVE_tag;        /* SVE tag */
206         u_int8_t        ID_type;        /* High Layer type discriminator */
207         union {                         /* High Layer type */
208                 u_int8_t        ISO_ID[8];      /* ISO */
209                 struct {                        /* Vendor-specific */
210                         u_int8_t        OUI[3];
211                         u_int8_t        app_ID[4];
212                 } vendor_ID;
213                 u_int8_t        user_defined_ID[8];/* User-defined */
214         } ID;
215 };
216
217 /*
218  * ATM SAP (protocol) address structure
219  */
220 struct t_atm_sap {
221         struct t_atm_sap_addr           t_atm_sap_addr;
222         struct t_atm_sap_layer2         t_atm_sap_layer2;
223         struct t_atm_sap_layer3         t_atm_sap_layer3;
224         struct t_atm_sap_appl           t_atm_sap_appl;
225 };
226
227 /*
228  * SVE Tag values
229  */
230 #define T_ATM_ABSENT            (-1)    /* Value field invalid; match none */
231 #define T_ATM_PRESENT           (-2)    /* Value field valid; match value */
232 #define T_ATM_ANY               (-3)    /* Value field invalid; match any */
233
234
235 /*
236  * ATM socket address
237  */
238 struct sockaddr_atm {                   /* XNS_EXT */
239 #if (defined(BSD) && (BSD >= 199103))
240         u_char          satm_len;       /* Length of socket structure */
241         u_char          satm_family;    /* Address family */
242 #else
243         u_short         satm_family;    /* Address family */
244 #endif
245         struct t_atm_sap        satm_addr;      /* Protocol address */
246 };
247
248
249 /*
250  * ATM socket options for use with [gs]etsockopt()
251  */
252 #define T_ATM_SIGNALING         0x5301  /* Option level */
253
254 #define T_ATM_AAL5              1       /* ATM adaptation layer 5      */
255 #define T_ATM_TRAFFIC           2       /* ATM traffic descriptor      */
256 #define T_ATM_BEARER_CAP        3       /* ATM service capabilities    */
257 #define T_ATM_BHLI              4       /* Higher-layer protocol       */
258 #define T_ATM_BLLI              5       /* Lower-layer protocol        */
259 #define T_ATM_DEST_ADDR         6       /* Call responder's address    */
260 #define T_ATM_DEST_SUB          7       /* Call responder's subaddress */
261 #define T_ATM_ORIG_ADDR         8       /* Call initiator's address    */
262 #define T_ATM_ORIG_SUB          9       /* Call initiator's subaddress */
263 #define T_ATM_CALLER_ID         10      /* Caller's ID attributes      */
264 #define T_ATM_CAUSE             11      /* Cause of disconection       */
265 #define T_ATM_QOS               12      /* Quality of service          */
266 #define T_ATM_TRANSIT           13      /* Choice of public carrier    */
267 #define T_ATM_ADD_LEAF          14      /* Add leaf to connection      */
268 #define T_ATM_DROP_LEAF         15      /* Remove leaf from connection */
269 #define T_ATM_LEAF_IND          16      /* Indication of leaf status   */
270 #define T_ATM_NET_INTF          17      /* Network interface XNS_EXT   */
271 #define T_ATM_LLC               18      /* LLC multiplexing XNS_EXT    */
272 #define T_ATM_APP_NAME          19      /* Application name XNS_EXT    */
273
274
275 /*
276  * Common socket option values
277  *
278  * See API specification for individual option applicability/meaning
279  */
280 #define T_ATM_ABSENT            (-1)    /* No option value present */
281 #define T_ATM_NULL              0       /* Option value is null */
282 #define T_NO                    0       /* Option is not requested */
283 #define T_YES                   1       /* Option is requested */
284
285
286 /*
287  * T_ATM_AAL5 option value structure
288  */
289 struct t_atm_aal5 {
290         int32_t         forward_max_SDU_size;
291         int32_t         backward_max_SDU_size;
292         int32_t         SSCS_type;
293 };
294
295 /*
296  * T_ATM_AAL5 option values
297  */
298                 /* SSCS_type */
299 #define T_ATM_SSCS_SSCOP_REL    1       /* SSCOP assured operation */
300 #define T_ATM_SSCS_SSCOP_UNREL  2       /* SSCOP non-assured operation */
301 #define T_ATM_SSCS_FR           4       /* Frame relay */
302
303
304 /*
305  * T_ATM_TRAFFIC option value structure
306  */
307 struct t_atm_traffic_substruct {
308         int32_t         PCR_high_priority;
309         int32_t         PCR_all_traffic;
310         int32_t         SCR_high_priority;
311         int32_t         SCR_all_traffic;
312         int32_t         MBS_high_priority;
313         int32_t         MBS_all_traffic;
314         int32_t         tagging;
315 };
316
317 struct t_atm_traffic {
318         struct t_atm_traffic_substruct  forward;
319         struct t_atm_traffic_substruct  backward;
320         u_int8_t        best_effort;
321 };
322
323
324 /*
325  * T_ATM_BEARER_CAP option value structure
326  */
327 struct t_atm_bearer {
328         u_int8_t        bearer_class;
329         u_int8_t        traffic_type;
330         u_int8_t        timing_requirements;
331         u_int8_t        clipping_susceptibility;
332         u_int8_t        connection_configuration;
333 };
334
335 /*
336  * T_ATM_BEARER_CAP option values
337  */
338                 /* bearer_class */
339 #define T_ATM_CLASS_A           0x01    /* Bearer class A                 */
340 #define T_ATM_CLASS_C           0x03    /* Bearer class C                 */
341 #define T_ATM_CLASS_X           0x10    /* Bearer class X                 */
342
343                 /* traffic_type */
344 #define T_ATM_CBR               0x01    /* Constant bit rate              */
345 #define T_ATM_VBR               0x02    /* Variable bit rate              */
346
347                 /* timing_requirements */
348 #define T_ATM_END_TO_END        0x01    /* End-to-end timing required     */
349 #define T_ATM_NO_END_TO_END     0x02    /* End-to-end timing not required */
350
351                 /* connection_configuration */
352 #define T_ATM_1_TO_1            0x00    /* Point-to-point connection      */
353 #define T_ATM_1_TO_MANY         0x01    /* Point-to-multipoint connection */
354
355
356 /*
357  * T_ATM_BHLI option value structure
358  */
359 struct t_atm_bhli {
360         int32_t         ID_type;
361         union {
362                 u_int8_t        ISO_ID[8];
363                 struct {
364                         u_int8_t        OUI[3];
365                         u_int8_t        app_ID[4];
366                 } vendor_ID;
367                 u_int8_t        user_defined_ID[8];
368         } ID;
369 };
370
371 /*
372  * T_ATM_BHLI option values
373  */
374                 /* ID_type */
375 #define T_ATM_ISO_APP_ID        0       /* ISO codepoint             */
376 #define T_ATM_USER_APP_ID       1       /* User-specific codepoint   */
377 #define T_ATM_VENDOR_APP_ID     3       /* Vendor-specific codepoint */
378
379 /*
380  * T_ATM_BLLI option value structure
381  */
382 struct t_atm_blli {
383         struct {
384                 int8_t          ID_type;
385                 union {
386                         u_int8_t        simple_ID;
387                         u_int8_t        user_defined_ID;
388                 } ID;
389                 int8_t          mode;
390                 int8_t          window_size;
391         } layer_2_protocol;
392         struct {
393                 int8_t          ID_type;
394                 union {
395                         u_int8_t        simple_ID;
396                         int32_t         IPI_ID;
397                         struct {
398                                 u_int8_t        OUI[3];
399                                 u_int8_t        PID[2];
400                         } SNAP_ID;
401                         u_int8_t        user_defined_ID;
402                 } ID;
403                 int8_t          mode;
404                 int8_t          packet_size;
405                 int8_t          window_size;
406         } layer_3_protocol;
407 };
408
409
410 /*
411  * T_ATM_BLLI option values
412  */
413                 /* layer_[23]_protocol.ID_type */
414 #define T_ATM_SIMPLE_ID         1       /* ID via ITU encoding    */
415 #define T_ATM_IPI_ID            2       /* ID via ISO/IEC TR 9577 */
416 #define T_ATM_SNAP_ID           3       /* ID via SNAP            */
417 #define T_ATM_USER_ID           4       /* ID via user codepoints */
418
419                 /* layer_[23]_protocol.mode */
420 #define T_ATM_BLLI_NORMAL_MODE  1
421 #define T_ATM_BLLI_EXTENDED_MODE        2
422
423                 /* layer_2_protocol.simple_ID */
424 #define T_ATM_BLLI2_I1745       1       /* I.1745           */
425 #define T_ATM_BLLI2_Q921        2       /* Q.921            */
426 #define T_ATM_BLLI2_X25_LINK    6       /* X.25, link layer */
427 #define T_ATM_BLLI2_X25_MLINK   7       /* X.25, multilink  */
428 #define T_ATM_BLLI2_LAPB        8       /* Extended LAPB    */
429 #define T_ATM_BLLI2_HDLC_ARM    9       /* I.4335, ARM      */
430 #define T_ATM_BLLI2_HDLC_NRM    10      /* I.4335, NRM      */
431 #define T_ATM_BLLI2_HDLC_ABM    11      /* I.4335, ABM      */
432 #define T_ATM_BLLI2_I8802       12      /* I.8802           */
433 #define T_ATM_BLLI2_X75         13      /* X.75             */
434 #define T_ATM_BLLI2_Q922        14      /* Q.922            */
435 #define T_ATM_BLLI2_I7776       17      /* I.7776           */
436
437                 /* layer_3_protocol.simple_ID */
438 #define T_ATM_BLLI3_X25         6       /* X.25             */
439 #define T_ATM_BLLI3_I8208       7       /* I.8208           */
440 #define T_ATM_BLLI3_X223        8       /* X.223            */
441 #define T_ATM_BLLI3_I8473       9       /* I.8473           */
442 #define T_ATM_BLLI3_T70         10      /* T.70             */
443 #define T_ATM_BLLI3_I9577       11      /* I.9577           */
444
445                 /* layer_3_protocol.packet_size */
446 #define T_ATM_PACKET_SIZE_16    4
447 #define T_ATM_PACKET_SIZE_32    5
448 #define T_ATM_PACKET_SIZE_64    6
449 #define T_ATM_PACKET_SIZE_128   7
450 #define T_ATM_PACKET_SIZE_256   8
451 #define T_ATM_PACKET_SIZE_512   9
452 #define T_ATM_PACKET_SIZE_1024  10
453 #define T_ATM_PACKET_SIZE_2048  11
454 #define T_ATM_PACKET_SIZE_4096  12
455
456
457 /*
458  * T_ATM_CALLER_ID option value structure
459  */
460 struct t_atm_caller_id {
461         int8_t          presentation;
462         u_int8_t        screening;
463 };
464
465 /*
466  * T_ATM_CALLER_ID option values
467  */
468                 /* presentation */
469 #define T_ATM_PRES_ALLOWED              0
470 #define T_ATM_PRES_RESTRICTED           1
471 #define T_ATM_PRES_UNAVAILABLE          2
472                 /* screening */
473 #define T_ATM_USER_ID_NOT_SCREENED      0
474 #define T_ATM_USER_ID_PASSED_SCREEN     1
475 #define T_ATM_USER_ID_FAILED_SCREEN     2
476 #define T_ATM_NETWORK_PROVIDED_ID       3
477
478
479 /*
480  * T_ATM_CAUSE option value structure
481  */
482 struct t_atm_cause {
483         int8_t          coding_standard;
484         u_int8_t        location;
485         u_int8_t        cause_value;
486         u_int8_t        diagnostics[4];
487 };
488
489 /*
490  * T_ATM_CAUSE option values
491  */
492                 /* coding_standard */
493 #define T_ATM_ITU_CODING                0
494 #define T_ATM_NETWORK_CODING            3
495
496                 /* location */
497 #define T_ATM_LOC_USER                  0
498 #define T_ATM_LOC_LOCAL_PRIVATE_NET     1
499 #define T_ATM_LOC_LOCAL_PUBLIC_NET      2
500 #define T_ATM_LOC_TRANSIT_NET           3
501 #define T_ATM_LOC_REMOTE_PUBLIC_NET     4
502 #define T_ATM_LOC_REMOTE_PRIVATE_NET    5
503 #define T_ATM_LOC_INTERNATIONAL_NET     7
504 #define T_ATM_LOC_BEYOND_INTERWORKING   10
505
506                 /* cause_value */
507 #define T_ATM_CAUSE_UNALLOCATED_NUMBER                          1
508 #define T_ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK                 2
509 #define T_ATM_CAUSE_NO_ROUTE_TO_DESTINATION                     3
510 #define T_ATM_CAUSE_NORMAL_CALL_CLEARING                        16
511 #define T_ATM_CAUSE_USER_BUSY                                   17
512 #define T_ATM_CAUSE_NO_USER_RESPONDING                          18
513 #define T_ATM_CAUSE_CALL_REJECTED                               21
514 #define T_ATM_CAUSE_NUMBER_CHANGED                              22
515 #define T_ATM_CAUSE_ALL_CALLS_WITHOUT_CALLER_ID_REJECTED        23
516 #define T_ATM_CAUSE_DESTINATION_OUT_OF_ORDER                    27
517 #define T_ATM_CAUSE_INVALID_NUMBER_FORMAT                       28
518 #define T_ATM_CAUSE_RESPONSE_TO_STATUS_ENQUIRY                  30
519 #define T_ATM_CAUSE_UNSPECIFIED_NORMAL                          31
520 #define T_ATM_CAUSE_REQUESTED_VPCI_VCI_NOT_AVAILABLE            35
521 #define T_ATM_CAUSE_VPCI_VCI_ASSIGNMENT_FAILURE                 36
522 #define T_ATM_CAUSE_USER_CELL_RATE_NOT_AVAILABLE                37
523 #define T_ATM_CAUSE_NETWORK_OUT_OF_ORDER                        38
524 #define T_ATM_CAUSE_TEMPORARY_FAILURE                           41
525 #define T_ATM_CAUSE_ACCESS_INFO_DISCARDED                       43
526 #define T_ATM_CAUSE_NO_VPCI_VCI_AVAILABLE                       45
527 #define T_ATM_CAUSE_UNSPECIFIED_RESOURCE_UNAVAILABLE            47
528 #define T_ATM_CAUSE_QUALITY_OF_SERVICE_UNAVAILABLE              49
529 #define T_ATM_CAUSE_BEARER_CAPABILITY_NOT_AUTHORIZED            57
530 #define T_ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE               58
531 #define T_ATM_CAUSE_SERVICE_OR_OPTION_UNAVAILABLE               63
532 #define T_ATM_CAUSE_BEARER_CAPABILITY_NOT_IMPLEMENTED           65
533 #define T_ATM_CAUSE_INVALID_TRAFFIC_PARAMETERS                  73
534 #define T_ATM_CAUSE_AAL_PARAMETERS_NOT_SUPPORTED                78
535 #define T_ATM_CAUSE_INVALID_CALL_REFERENCE_VALUE                81
536 #define T_ATM_CAUSE_IDENTIFIED_CHANNEL_DOES_NOT_EXIST           82
537 #define T_ATM_CAUSE_INCOMPATIBLE_DESTINATION                    88
538 #define T_ATM_CAUSE_INVALID_ENDPOINT_REFERENCE                  89
539 #define T_ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION           91
540 #define T_ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY_REQUESTS         92
541 #define T_ATM_CAUSE_MANDITORY_INFO_ELEMENT_MISSING              96
542 #define T_ATM_CAUSE_MESSAGE_TYPE_NOT_IMPLEMENTED                97
543 #define T_ATM_CAUSE_INFO_ELEMENT_NOT_IMPLEMENTED                99
544 #define T_ATM_CAUSE_INVALID_INFO_ELEMENT_CONTENTS               100
545 #define T_ATM_CAUSE_MESSAGE_INCOMPATIBLE_WITH_CALL_STATE        101
546 #define T_ATM_CAUSE_RECOVERY_ON_TIMER_EXPIRY                    102
547 #define T_ATM_CAUSE_INCORRECT_MESSAGE_LENGTH                    104
548 #define T_ATM_CAUSE_UNSPECIFIED_PROTOCOL_ERROR                  111
549
550
551 /*
552  * T_ATM_QOS option value structure
553  */
554 struct t_atm_qos_substruct {
555         int32_t         qos_class;
556 };
557
558 struct t_atm_qos {
559         int8_t          coding_standard;
560         struct t_atm_qos_substruct      forward;
561         struct t_atm_qos_substruct      backward;
562 };
563
564 /*
565  * T_ATM_QOS option values
566  */
567                 /* qos_class */
568 #define T_ATM_QOS_CLASS_0       0
569 #define T_ATM_QOS_CLASS_1       1
570 #define T_ATM_QOS_CLASS_2       2
571 #define T_ATM_QOS_CLASS_3       3
572 #define T_ATM_QOS_CLASS_4       4
573
574
575 /*
576  * T_ATM_TRANSIT structure
577  */
578 #define T_ATM_MAX_NET_ID        4               /* XNS_EXT */
579 struct t_atm_transit {
580         u_int8_t        length;
581         u_int8_t        network_id[T_ATM_MAX_NET_ID];
582 };
583
584
585 /*
586  * T_ATM_ADD_LEAF option value structure
587  */
588 struct t_atm_add_leaf {
589         int32_t         leaf_ID;
590         struct t_atm_addr       leaf_address;
591 };
592
593
594 /*
595  * T_ATM_DROP_LEAF option value structure
596  */
597 struct t_atm_drop_leaf {
598         int32_t         leaf_ID;
599         int32_t         reason;
600 };
601
602 /*
603  * T_ATM_LEAF_IND option value structure
604  */
605 struct t_atm_leaf_ind {
606         int32_t         status;
607         int32_t         leaf_ID;
608         int32_t         reason;
609 };
610
611 /*
612  * T_ATM_LEAF_IND option values
613  */
614                 /* status */
615 #define T_LEAF_NOCHANGE         0
616 #define T_LEAF_CONNECTED        1
617 #define T_LEAF_DISCONNECTED     2
618
619 /*
620  * T_ATM_NET_INTF option value structure        (XNS_EXT)
621  */
622 struct t_atm_net_intf {                         /* XNS_EXT */
623         char            net_intf[IFNAMSIZ];
624 };
625
626 /*
627  * T_ATM_LLC option value structure             (XNS_EXT)
628  */
629 #define T_ATM_LLC_MIN_LEN       3
630 #define T_ATM_LLC_MAX_LEN       8
631
632 struct t_atm_llc {                              /* XNS_EXT */
633         u_int8_t        flags;                  /* LLC flags (see below) */
634         u_int8_t        llc_len;                /* Length of LLC information */
635         u_int8_t        llc_info[T_ATM_LLC_MAX_LEN];    /* LLC information */
636 };
637
638 /*
639  * T_ATM_LLC option values
640  */
641                 /* flags */
642 #define T_ATM_LLC_SHARING       0x01            /* LLC sharing allowed */
643
644 /*
645  * T_ATM_APP_NAME option value structure        (XNS_EXT)
646  */
647 #define T_ATM_APP_NAME_LEN      8
648 struct t_atm_app_name {                         /* XNS_EXT */
649         char            app_name[T_ATM_APP_NAME_LEN];
650 };
651
652 #endif  /* _NETATM_ATM_H */