diff options
Diffstat (limited to 'sys/netatm/atm.h')
-rw-r--r-- | sys/netatm/atm.h | 651 |
1 files changed, 651 insertions, 0 deletions
diff --git a/sys/netatm/atm.h b/sys/netatm/atm.h new file mode 100644 index 0000000..46dfb86 --- /dev/null +++ b/sys/netatm/atm.h @@ -0,0 +1,651 @@ +/* + * + * =================================== + * 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. + * + * @(#) $Id: atm.h,v 1.8 1998/07/30 22:30:43 mks 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 */ +#if (defined(BSD) && (BSD >= 199103)) + u_char satm_len; /* Length of socket structure */ + u_char satm_family; /* Address family */ +#else + u_short satm_family; /* Address family */ +#endif + 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 */ + + /* 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 */ |