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