summaryrefslogtreecommitdiffstats
path: root/sys/netatm/atm.h
blob: c92312e418aed1b8fc9d398510eba9d1de1a225b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
/*
 *
 * ===================================
 * HARP  |  Host ATM Research Platform
 * ===================================
 *
 *
 * This Host ATM Research Platform ("HARP") file (the "Software") is
 * made available by Network Computing Services, Inc. ("NetworkCS")
 * "AS IS".  NetworkCS does not provide maintenance, improvements or
 * support of any kind.
 *
 * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
 * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
 * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
 * In no event shall NetworkCS be responsible for any damages, including
 * but not limited to consequential damages, arising from or relating to
 * any use of the Software or related support.
 *
 * Copyright 1994-1998 Network Computing Services, Inc.
 *
 * Copies of this Software may be made, however, the above copyright
 * notice must be reproduced on all copies.
 *
 *	@(#) $FreeBSD$
 *
 */

/*
 * Core ATM Services
 * -----------------
 *
 * ATM address family definitions
 *
 */

#ifndef _NETATM_ATM_H
#define _NETATM_ATM_H


/*
 * The definitions in this file are intended to conform to the 
 * specifications defined in:
 *
 *	The Open Group, Networking Services (XNS) Issue 5
 *
 *	ATM Transport Protocol Information for Sockets
 *
 * which is Copyright (c) 1997, The Open Group.
 *
 * All extensions contained in this file to the base specification 
 * are denoted with a comment string of "XNS_EXT".
 */

/*
 * ATM socket protocols
 */
#define	ATM_PROTO_AAL5		0x5301	/* AAL type 5 protocol */
#define	ATM_PROTO_SSCOP		0x5302	/* SSCOP protocol      */


/*
 * ATM address defintions
 */
/*
 * General format of an ATM address
 */
#define	ATM_ADDR_LEN	20		/* Size of address field (XNS_EXT) */

struct t_atm_addr {
	int8_t		address_format;	/* Address format (see below) */
	u_int8_t	address_length;	/* Length of address field */
	u_int8_t	address[ATM_ADDR_LEN];	/* Address field */
};
typedef struct t_atm_addr	Atm_addr;	/* XNS_EXT */

/*
 * ATM address formats
 */
#define	T_ATM_ABSENT		(-1)	/* No address present */
#define	T_ATM_ENDSYS_ADDR	1	/* ATM Endsystem */
#define	T_ATM_NSAP_ADDR		1	/* NSAP */
#define	T_ATM_E164_ADDR		2	/* E.164 */
#define	T_ATM_SPANS_ADDR	3	/* FORE SPANS (XNS_EXT) */
#define	T_ATM_PVC_ADDR		4	/* PVC (VPI,VCI) (XNS_EXT) */

/*
 * ATM Endsystem / NSAP address format
 */
struct atm_addr_nsap {			/* XNS_EXT */
	u_char		aan_afi;	/* Authority and Format Identifier */
					/* (see below) */
	u_char		aan_afspec[12];	/* AFI specific fields */
	u_char		aan_esi[6];	/* End System Identifier */
	u_char		aan_sel;	/* Selector */
};
typedef struct atm_addr_nsap	Atm_addr_nsap;

/*
 * AFI codes
 */
#define	AFI_DCC		0x39		/* DCC ATM Format (XNS_EXT) */
#define	AFI_ICD		0x47		/* ICD ATM Format (XNS_EXT) */
#define	AFI_E164	0x45		/* E.164 ATM Format (XNS_EXT) */

/*
 * E.164 address format
 */
struct atm_addr_e164 {			/* XNS_EXT */
	u_char		aae_addr[15];	/* E.164 address */
};
typedef struct atm_addr_e164	Atm_addr_e164;

/*
 * SPANS address format
 */
struct atm_addr_spans {			/* XNS_EXT */
	u_char		aas_addr[8];	/* See SPANS code for specific fields */
};
typedef struct atm_addr_spans	Atm_addr_spans;

/*
 * PVC address format
 */
struct atm_addr_pvc {			/* XNS_EXT */
	u_int8_t	aap_vpi[2];	/* VPI */
	u_int8_t	aap_vci[2];	/* VCI */
};
typedef struct atm_addr_pvc	Atm_addr_pvc;

#define	ATM_PVC_GET_VPI(addr)		/* XNS_EXT */		\
	((u_int16_t)(((addr)->aap_vpi[0] << 8) | (addr)->aap_vpi[1]))
#define	ATM_PVC_GET_VCI(addr)		/* XNS_EXT */		\
	((u_int16_t)(((addr)->aap_vci[0] << 8) | (addr)->aap_vci[1]))
#define	ATM_PVC_SET_VPI(addr,vpi) {	/* XNS_EXT */		\
	(addr)->aap_vpi[0] = ((vpi) >> 8) & 0xff;		\
	(addr)->aap_vpi[1] = (vpi) & 0xff;			\
}
#define	ATM_PVC_SET_VCI(addr,vci) {	/* XNS_EXT */		\
	(addr)->aap_vci[0] = ((vci) >> 8) & 0xff;		\
	(addr)->aap_vci[1] = (vci) & 0xff;			\
}


/*
 * ATM service access point (SAP)
 *
 * A SAP address consists of SAP Vector Elements (SVE).  Each SVE consists 
 * of the following fields:
 * 	o tag - defines the interpretation of the SVE;
 * 	o length - the length of the SVE value field;
 * 	o value - the value associated with the SVE;
 *
 * All of the possible SAP field values are either defined below
 * or in the corresponding option value definitions.
 */

/*
 * ATM Address and Selector SVE
 */
struct t_atm_sap_addr {
	int8_t		SVE_tag_addr;	/* SVE tag (address) */
	int8_t		SVE_tag_selector; /* SVE tag (selector) */
					/* Address/selector value */
	int8_t		address_format;	/* Address format */
	u_int8_t	address_length;	/* Length of address field */
	u_int8_t	address[ATM_ADDR_LEN];	/* Address field */
};

/*
 * B-LLI Layer 2 SVE
 */
struct t_atm_sap_layer2 {
	int8_t		SVE_tag;	/* SVE tag */
	u_int8_t	ID_type;	/* Layer 2 protocol discriminator */
	union {				/* Layer 2 protocol */
		u_int8_t	simple_ID;	/* ITU */
		u_int8_t	user_defined_ID;/* User-defined */
	} ID;
};

/*
 * B-LLI Layer 3 SVE
 */
struct t_atm_sap_layer3 {
	int8_t		SVE_tag;	/* SVE tag */
	u_int8_t	ID_type;	/* Layer 3 protocol discriminator */
	union {				/* Layer 3 protocol */
		u_int8_t	simple_ID;	/* ITU */
		u_int8_t	IPI_ID;		/* ISO IPI */
		struct {			/* IEEE 802.1 SNAP ID */
			u_int8_t	OUI[3];
			u_int8_t	PID[2];
		} SNAP_ID;
		u_int8_t	user_defined_ID;/* User-defined */
	} ID;
};

/*
 * B_HLI SVE
 */
struct t_atm_sap_appl {
	int8_t		SVE_tag;	/* SVE tag */
	u_int8_t	ID_type;	/* High Layer type discriminator */
	union {				/* High Layer type */
		u_int8_t	ISO_ID[8];	/* ISO */
		struct {			/* Vendor-specific */
			u_int8_t	OUI[3];
			u_int8_t	app_ID[4];
		} vendor_ID;
		u_int8_t	user_defined_ID[8];/* User-defined */
	} ID;
};

/*
 * ATM SAP (protocol) address structure
 */
struct t_atm_sap {
	struct t_atm_sap_addr		t_atm_sap_addr;
	struct t_atm_sap_layer2		t_atm_sap_layer2;
	struct t_atm_sap_layer3		t_atm_sap_layer3;
	struct t_atm_sap_appl		t_atm_sap_appl;
};

/*
 * SVE Tag values
 */
#define	T_ATM_ABSENT		(-1)	/* Value field invalid; match none */
#define	T_ATM_PRESENT		(-2)	/* Value field valid; match value */
#define	T_ATM_ANY		(-3)	/* Value field invalid; match any */


/*
 * ATM socket address
 */
struct sockaddr_atm {			/* XNS_EXT */
	u_char		satm_len;	/* Length of socket structure */
	u_char		satm_family;	/* Address family */
	struct t_atm_sap	satm_addr;	/* Protocol address */
};


/*
 * ATM socket options for use with [gs]etsockopt()
 */
#define	T_ATM_SIGNALING		0x5301	/* Option level */

#define	T_ATM_AAL5		1	/* ATM adaptation layer 5      */
#define	T_ATM_TRAFFIC		2	/* ATM traffic descriptor      */
#define	T_ATM_BEARER_CAP	3	/* ATM service capabilities    */
#define	T_ATM_BHLI		4	/* Higher-layer protocol       */
#define	T_ATM_BLLI		5	/* Lower-layer protocol        */
#define	T_ATM_DEST_ADDR		6	/* Call responder's address    */
#define	T_ATM_DEST_SUB		7	/* Call responder's subaddress */
#define	T_ATM_ORIG_ADDR		8	/* Call initiator's address    */
#define	T_ATM_ORIG_SUB		9	/* Call initiator's subaddress */
#define	T_ATM_CALLER_ID		10	/* Caller's ID attributes      */
#define	T_ATM_CAUSE		11	/* Cause of disconection       */
#define	T_ATM_QOS		12	/* Quality of service          */
#define	T_ATM_TRANSIT		13	/* Choice of public carrier    */
#define	T_ATM_ADD_LEAF		14	/* Add leaf to connection      */
#define	T_ATM_DROP_LEAF		15	/* Remove leaf from connection */
#define	T_ATM_LEAF_IND		16	/* Indication of leaf status   */
#define	T_ATM_NET_INTF		17	/* Network interface XNS_EXT   */
#define	T_ATM_LLC		18	/* LLC multiplexing XNS_EXT    */
#define	T_ATM_APP_NAME		19	/* Application name XNS_EXT    */


/*
 * Common socket option values
 *
 * See API specification for individual option applicability/meaning
 */
#define	T_ATM_ABSENT		(-1)	/* No option value present */
#define	T_ATM_NULL		0	/* Option value is null */
#define	T_NO			0	/* Option is not requested */
#define	T_YES			1	/* Option is requested */


/*
 * T_ATM_AAL5 option value structure
 */
struct t_atm_aal5 {
	int32_t		forward_max_SDU_size;
	int32_t		backward_max_SDU_size;
	int32_t		SSCS_type;
};

/*
 * T_ATM_AAL5 option values
 */
		/* SSCS_type */
#define	T_ATM_SSCS_SSCOP_REL	1	/* SSCOP assured operation */
#define	T_ATM_SSCS_SSCOP_UNREL	2	/* SSCOP non-assured operation */
#define	T_ATM_SSCS_FR		4	/* Frame relay */


/*
 * T_ATM_TRAFFIC option value structure
 */
struct t_atm_traffic_substruct {
	int32_t		PCR_high_priority;
	int32_t		PCR_all_traffic;
	int32_t		SCR_high_priority;
	int32_t		SCR_all_traffic;
	int32_t		MBS_high_priority;
	int32_t		MBS_all_traffic;
	int32_t		tagging;
};

struct t_atm_traffic {
	struct t_atm_traffic_substruct	forward;
	struct t_atm_traffic_substruct	backward;
	u_int8_t	best_effort;
};


/*
 * T_ATM_BEARER_CAP option value structure
 */
struct t_atm_bearer {
	u_int8_t	bearer_class;
	u_int8_t	traffic_type;
	u_int8_t	timing_requirements;
	u_int8_t	clipping_susceptibility;
	u_int8_t	connection_configuration;
};

/*
 * T_ATM_BEARER_CAP option values
 */
		/* bearer_class */
#define	T_ATM_CLASS_A		0x01	/* Bearer class A                 */
#define	T_ATM_CLASS_C		0x03	/* Bearer class C                 */
#define	T_ATM_CLASS_X		0x10	/* Bearer class X                 */

		/* traffic_type */
#define	T_ATM_CBR		0x01	/* Constant bit rate              */
#define	T_ATM_VBR		0x02	/* Variable bit rate              */
#define	T_ATM_ABR		0x03	/* Available Bit Rate		  */
#define	T_ATM_UBR		0x04	/* Unspecified bit rate		  */

		/* timing_requirements */
#define	T_ATM_END_TO_END	0x01	/* End-to-end timing required     */
#define	T_ATM_NO_END_TO_END	0x02	/* End-to-end timing not required */

		/* connection_configuration */
#define	T_ATM_1_TO_1		0x00	/* Point-to-point connection      */
#define	T_ATM_1_TO_MANY		0x01	/* Point-to-multipoint connection */


/*
 * T_ATM_BHLI option value structure
 */
struct t_atm_bhli {
	int32_t		ID_type;
	union {
		u_int8_t	ISO_ID[8];
		struct {
			u_int8_t	OUI[3];
			u_int8_t	app_ID[4];
		} vendor_ID;
		u_int8_t	user_defined_ID[8];
	} ID;
};

/*
 * T_ATM_BHLI option values
 */
		/* ID_type */
#define	T_ATM_ISO_APP_ID	0	/* ISO codepoint             */
#define	T_ATM_USER_APP_ID	1	/* User-specific codepoint   */
#define	T_ATM_VENDOR_APP_ID	3	/* Vendor-specific codepoint */

/*
 * T_ATM_BLLI option value structure
 */
struct t_atm_blli {
	struct {
		int8_t		ID_type;
		union {
			u_int8_t	simple_ID;
			u_int8_t	user_defined_ID;
		} ID;
		int8_t		mode;
		int8_t		window_size;
	} layer_2_protocol;
	struct {
		int8_t		ID_type;
		union {
			u_int8_t	simple_ID;
			int32_t		IPI_ID;
			struct {
				u_int8_t	OUI[3];
				u_int8_t	PID[2];
			} SNAP_ID;
			u_int8_t	user_defined_ID;
		} ID;
		int8_t		mode;
		int8_t		packet_size;
		int8_t		window_size;
	} layer_3_protocol;
};


/*
 * T_ATM_BLLI option values
 */
		/* layer_[23]_protocol.ID_type */
#define	T_ATM_SIMPLE_ID		1	/* ID via ITU encoding    */
#define	T_ATM_IPI_ID		2	/* ID via ISO/IEC TR 9577 */
#define	T_ATM_SNAP_ID		3	/* ID via SNAP            */
#define	T_ATM_USER_ID		4	/* ID via user codepoints */

		/* layer_[23]_protocol.mode */
#define	T_ATM_BLLI_NORMAL_MODE	1
#define	T_ATM_BLLI_EXTENDED_MODE	2

		/* layer_2_protocol.simple_ID */
#define	T_ATM_BLLI2_I1745	1	/* I.1745           */
#define	T_ATM_BLLI2_Q921	2	/* Q.921            */
#define	T_ATM_BLLI2_X25_LINK	6	/* X.25, link layer */
#define	T_ATM_BLLI2_X25_MLINK	7	/* X.25, multilink  */
#define	T_ATM_BLLI2_LAPB	8	/* Extended LAPB    */
#define	T_ATM_BLLI2_HDLC_ARM	9	/* I.4335, ARM      */
#define	T_ATM_BLLI2_HDLC_NRM	10	/* I.4335, NRM      */
#define	T_ATM_BLLI2_HDLC_ABM	11	/* I.4335, ABM      */
#define	T_ATM_BLLI2_I8802	12	/* I.8802           */
#define	T_ATM_BLLI2_X75		13	/* X.75             */
#define	T_ATM_BLLI2_Q922	14	/* Q.922            */
#define	T_ATM_BLLI2_I7776	17	/* I.7776           */

		/* layer_3_protocol.simple_ID */
#define	T_ATM_BLLI3_X25		6	/* X.25             */
#define	T_ATM_BLLI3_I8208	7	/* I.8208           */
#define	T_ATM_BLLI3_X223	8	/* X.223            */
#define	T_ATM_BLLI3_I8473	9	/* I.8473           */
#define	T_ATM_BLLI3_T70		10	/* T.70             */
#define	T_ATM_BLLI3_I9577	11	/* I.9577           */

		/* layer_3_protocol.packet_size */
#define	T_ATM_PACKET_SIZE_16	4
#define	T_ATM_PACKET_SIZE_32	5
#define	T_ATM_PACKET_SIZE_64	6
#define	T_ATM_PACKET_SIZE_128	7
#define	T_ATM_PACKET_SIZE_256	8
#define	T_ATM_PACKET_SIZE_512	9
#define	T_ATM_PACKET_SIZE_1024	10
#define	T_ATM_PACKET_SIZE_2048	11
#define	T_ATM_PACKET_SIZE_4096	12


/*
 * T_ATM_CALLER_ID option value structure
 */
struct t_atm_caller_id {
	int8_t		presentation;
	u_int8_t	screening;
};

/*
 * T_ATM_CALLER_ID option values
 */
		/* presentation */
#define	T_ATM_PRES_ALLOWED		0
#define	T_ATM_PRES_RESTRICTED		1
#define	T_ATM_PRES_UNAVAILABLE		2
		/* screening */
#define	T_ATM_USER_ID_NOT_SCREENED	0
#define	T_ATM_USER_ID_PASSED_SCREEN	1
#define	T_ATM_USER_ID_FAILED_SCREEN	2
#define	T_ATM_NETWORK_PROVIDED_ID	3


/*
 * T_ATM_CAUSE option value structure
 */
struct t_atm_cause {
	int8_t		coding_standard;
	u_int8_t	location;
	u_int8_t	cause_value;
	u_int8_t	diagnostics[4];
};

/*
 * T_ATM_CAUSE option values
 */
		/* coding_standard */
#define	T_ATM_ITU_CODING		0
#define	T_ATM_NETWORK_CODING		3

		/* location */
#define	T_ATM_LOC_USER			0
#define	T_ATM_LOC_LOCAL_PRIVATE_NET	1
#define	T_ATM_LOC_LOCAL_PUBLIC_NET	2
#define	T_ATM_LOC_TRANSIT_NET		3
#define	T_ATM_LOC_REMOTE_PUBLIC_NET	4
#define	T_ATM_LOC_REMOTE_PRIVATE_NET	5
#define	T_ATM_LOC_INTERNATIONAL_NET	7
#define	T_ATM_LOC_BEYOND_INTERWORKING	10

		/* cause_value */
#define	T_ATM_CAUSE_UNALLOCATED_NUMBER				1
#define	T_ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK			2
#define	T_ATM_CAUSE_NO_ROUTE_TO_DESTINATION			3
#define	T_ATM_CAUSE_NORMAL_CALL_CLEARING			16
#define	T_ATM_CAUSE_USER_BUSY					17
#define	T_ATM_CAUSE_NO_USER_RESPONDING				18
#define	T_ATM_CAUSE_CALL_REJECTED				21
#define	T_ATM_CAUSE_NUMBER_CHANGED				22
#define	T_ATM_CAUSE_ALL_CALLS_WITHOUT_CALLER_ID_REJECTED	23
#define	T_ATM_CAUSE_DESTINATION_OUT_OF_ORDER			27
#define	T_ATM_CAUSE_INVALID_NUMBER_FORMAT			28
#define	T_ATM_CAUSE_RESPONSE_TO_STATUS_ENQUIRY			30
#define	T_ATM_CAUSE_UNSPECIFIED_NORMAL				31
#define	T_ATM_CAUSE_REQUESTED_VPCI_VCI_NOT_AVAILABLE		35
#define	T_ATM_CAUSE_VPCI_VCI_ASSIGNMENT_FAILURE			36
#define	T_ATM_CAUSE_USER_CELL_RATE_NOT_AVAILABLE		37
#define	T_ATM_CAUSE_NETWORK_OUT_OF_ORDER			38
#define	T_ATM_CAUSE_TEMPORARY_FAILURE				41
#define	T_ATM_CAUSE_ACCESS_INFO_DISCARDED			43
#define	T_ATM_CAUSE_NO_VPCI_VCI_AVAILABLE			45
#define	T_ATM_CAUSE_UNSPECIFIED_RESOURCE_UNAVAILABLE		47
#define	T_ATM_CAUSE_QUALITY_OF_SERVICE_UNAVAILABLE		49
#define	T_ATM_CAUSE_BEARER_CAPABILITY_NOT_AUTHORIZED		57
#define	T_ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE		58
#define	T_ATM_CAUSE_SERVICE_OR_OPTION_UNAVAILABLE		63
#define	T_ATM_CAUSE_BEARER_CAPABILITY_NOT_IMPLEMENTED		65
#define	T_ATM_CAUSE_INVALID_TRAFFIC_PARAMETERS			73
#define	T_ATM_CAUSE_AAL_PARAMETERS_NOT_SUPPORTED		78
#define	T_ATM_CAUSE_INVALID_CALL_REFERENCE_VALUE		81
#define	T_ATM_CAUSE_IDENTIFIED_CHANNEL_DOES_NOT_EXIST		82
#define	T_ATM_CAUSE_INCOMPATIBLE_DESTINATION			88
#define	T_ATM_CAUSE_INVALID_ENDPOINT_REFERENCE			89
#define	T_ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION		91
#define	T_ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY_REQUESTS		92
#define	T_ATM_CAUSE_MANDITORY_INFO_ELEMENT_MISSING		96
#define	T_ATM_CAUSE_MESSAGE_TYPE_NOT_IMPLEMENTED		97
#define	T_ATM_CAUSE_INFO_ELEMENT_NOT_IMPLEMENTED		99
#define	T_ATM_CAUSE_INVALID_INFO_ELEMENT_CONTENTS		100
#define	T_ATM_CAUSE_MESSAGE_INCOMPATIBLE_WITH_CALL_STATE	101
#define	T_ATM_CAUSE_RECOVERY_ON_TIMER_EXPIRY			102
#define	T_ATM_CAUSE_INCORRECT_MESSAGE_LENGTH			104
#define	T_ATM_CAUSE_UNSPECIFIED_PROTOCOL_ERROR			111


/*
 * T_ATM_QOS option value structure
 */
struct t_atm_qos_substruct {
	int32_t		qos_class;
};

struct t_atm_qos {
	int8_t		coding_standard;
	struct t_atm_qos_substruct	forward;
	struct t_atm_qos_substruct	backward;
};

/*
 * T_ATM_QOS option values
 */
		/* qos_class */
#define	T_ATM_QOS_CLASS_0	0
#define	T_ATM_QOS_CLASS_1	1
#define	T_ATM_QOS_CLASS_2	2
#define	T_ATM_QOS_CLASS_3	3
#define	T_ATM_QOS_CLASS_4	4


/*
 * T_ATM_TRANSIT structure
 */
#define	T_ATM_MAX_NET_ID	4		/* XNS_EXT */
struct t_atm_transit {
	u_int8_t	length;
	u_int8_t	network_id[T_ATM_MAX_NET_ID];
};


/*
 * T_ATM_ADD_LEAF option value structure
 */
struct t_atm_add_leaf {
	int32_t		leaf_ID;
	struct t_atm_addr	leaf_address;
};


/*
 * T_ATM_DROP_LEAF option value structure
 */
struct t_atm_drop_leaf {
	int32_t		leaf_ID;
	int32_t		reason;
};

/*
 * T_ATM_LEAF_IND option value structure
 */
struct t_atm_leaf_ind {
	int32_t		status;
	int32_t		leaf_ID;
	int32_t		reason;
};

/*
 * T_ATM_LEAF_IND option values
 */
		/* status */
#define	T_LEAF_NOCHANGE		0
#define	T_LEAF_CONNECTED	1
#define	T_LEAF_DISCONNECTED	2

/*
 * T_ATM_NET_INTF option value structure	(XNS_EXT)
 */
struct t_atm_net_intf {				/* XNS_EXT */
	char		net_intf[IFNAMSIZ];
};

/*
 * T_ATM_LLC option value structure		(XNS_EXT)
 */
#define	T_ATM_LLC_MIN_LEN	3
#define	T_ATM_LLC_MAX_LEN	8

struct t_atm_llc {				/* XNS_EXT */
	u_int8_t	flags;			/* LLC flags (see below) */
	u_int8_t	llc_len;		/* Length of LLC information */
	u_int8_t	llc_info[T_ATM_LLC_MAX_LEN];	/* LLC information */
};

/*
 * T_ATM_LLC option values
 */
		/* flags */
#define	T_ATM_LLC_SHARING	0x01		/* LLC sharing allowed */

/*
 * T_ATM_APP_NAME option value structure	(XNS_EXT)
 */
#define	T_ATM_APP_NAME_LEN	8
struct t_atm_app_name {				/* XNS_EXT */
	char		app_name[T_ATM_APP_NAME_LEN];
};

#endif	/* _NETATM_ATM_H */
OpenPOWER on IntegriCloud