text: /*
   *
   * ===================================
   * 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: src/sys/netatm/atm.h,v 1.5 2002/04/21 01:41:04 arr Exp $
   *
   */
  
  /*
   * 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 */
  