[Index]


Table of Contents


Title and Copyright Pages

About This Manual
Audience
New and Changed Features
Organization
Related Documents
Reader's Comments
Conventions

1    Overview of Digital UNIX ATM Architecture
1.1    ATM Subsystem
1.1.1    Connection Management Module
1.1.2    CMM Interfaces
1.2    ATM Subsystem Configuration

2    Configuring the ATM Software
2.1    Editing the /etc/atmhosts File
2.2    Editing the /etc/hosts File
2.3    Editing the /etc/atm.conf File

3    ATM Subsystem General Features
3.1    Header Files
3.2    Kernel Data File
3.3    ATM Module Configuration
3.4    Error Codes
3.5    Data Formats
3.5.1    Raw ATM Cells
3.5.2    Cooked Data
3.5.3    How the Data Is Carried
3.5.4    Time-Stamping
3.6    Physical Point of Attachment
3.6.1    Permanent Virtual Circuit PPAs
3.6.2    Switched Virtual Circuit PPAs
3.7    Memory Allocation
3.8    ATM Locking Macros
3.8.1    Locking Guidelines
3.8.2    Types of Locking Methods
3.8.3    Order of Locking Macros
3.8.4    Creation of ATM Threads
3.9    Types of Circuits
3.10    Global Data Structures
3.10.1    The atm_vc Structure
3.10.1.1    The conv_pp1 and conv_pp2 Members
3.10.1.2    The sig_pp1, sig_pp2, drv_pp1, and drv_pp2 Members
3.10.1.3    The vcs Member
3.10.1.4    The call_reference Member
3.10.1.5    The errno Member
3.10.1.6    The vci and vpi Members
3.10.1.7    The ppa Member
3.10.1.8    The selector Member
3.10.1.9    The direction Member
3.10.2    The atm_addr Structure
3.10.2.1    The vc Member
3.10.2.2    The address Member
3.10.2.3    The ton Member
3.10.2.4    The anpi Member
3.10.2.5    The subaddress Member
3.10.2.6    The subaddress_type Member
3.10.2.7    The eprtype Member
3.10.2.8    The endpoint Member
3.10.2.9    The state Member
3.10.2.10    The atm_error Member
3.10.2.11    The setup Member
3.10.2.12    The connect Member
3.10.2.13    The location, cause, diag_length, and diagnostic Members
3.10.2.14    The endstate Member
3.10.2.15    The conv_p1 and conv_p2 Members
3.10.2.16    The sig_p1 and sig_p2 Members
3.10.2.17    Allocating the atm_addr Structure
3.10.3    The atm_vc_services Structure
3.10.3.1    The vc Member
3.10.3.2    The fqos and bqos Members
3.10.3.3    The fmtu and bmtu Members
3.10.3.4    The valid_rates Member
3.10.3.5    The fpeakcr, bpeakcr, fsustcr, bsustcr, fburstcr, and bburstcr Members
3.10.3.6    The flags Member
3.10.3.7    The aal Member
3.10.3.8    The queue Member
3.10.3.9    The bearer_class Member
3.10.3.10    The lerrstat Member
3.10.3.11    The nerrstat Member
3.10.3.12    The cmm_drv_handle Member
3.10.3.13    The drv_resource Member
3.10.3.14    The converge_handle Member
3.10.3.15    Allocating the atm_vc_services Structure
3.10.4    The atm_uni_call_ie Structure
3.10.4.1    The ie_type Member
3.10.4.2    The last Member
3.10.4.3    The aal_params Member
3.10.4.4    The bb_high_layer and bb_low_layer Members
3.10.4.5    Allocating the atm_uni_call_ie Structure
3.10.4.6    Setting Fields in the atm__uni_call_ie Structure
3.10.5    The atm_ppa Structure
3.10.5.1    The driver Member
3.10.5.2    The sig Member
3.10.5.3    The ppas_id Member
3.10.5.4    The ton Member
3.10.5.5    The anpi Member
3.10.5.6    The addrlen Member
3.10.5.7    The address Member
3.10.5.8    The uni Member
3.10.5.9    The type Member
3.10.5.10    The esi_arg Member
3.10.6    The atm_esi Structure
3.10.6.1    The esi and esilen Members
3.10.6.2    The driver Member
3.10.6.3    The sigp1 and sigp2 Members
3.10.7    The atm_cause_info Structure
3.10.7.1    The cause Member
3.10.7.2    The location Member
3.10.7.3    The module_name Member
3.10.7.4    The reason Member
3.10.7.5    The diag_length Member
3.10.7.6    The diag Member

4    Device Driver Interface
4.1    Registering the Device Driver
4.2    Receiving Data Packets and Cells
4.3    Reporting Errors
4.4    Using ATM Device Driver Interface Structures
4.4.1    The atm_drv_params Structure
4.4.1.1    The name member
4.4.1.2    The unit Member
4.4.1.3    The type Member
4.4.1.4    The num_vc Member
4.4.1.5    The max_vcib and max_vpib Members
4.4.1.6    The max_vci and max_vpi Members
4.4.1.7    The sent Member
4.4.1.8    The received Member
4.4.1.9    The dropped Member
4.4.1.10    The num_vci and num_vpi Members
4.4.1.11    The hard_mtu Member
4.4.1.12    The nqueue Member
4.4.1.13    The flowcontrol Member
4.4.1.14    The rates Member
4.4.1.15    The capabilities Member
4.4.1.16    The numid Member
4.4.1.17    The ids Member
4.4.2    The atm_queue_param Structure
4.4.2.1    The vc Member
4.4.2.2    The qlength Member
4.4.2.3    The qtime Member
4.4.2.4    The flags Member

5    Signaling Module Interface
5.1    Registering the Signaling Module
5.2    Receiving a New Call
5.3    Reporting a VC Activation
5.4    Activating a Connection
5.5    Reporting a Connection Failure
5.6    Releasing a Connection
5.7    Dropping an Endpoint
5.8    Deleting a Connection
5.9    Restarting a Virtual Circuit
5.10    Reporting a Completed Restart
5.11    Reporting a Completed Status Enquiry
5.12    Requesting Endpoint Information
5.13    Adding a PPA
5.14    Deleting a PPA
5.15    Reporting Completed MIB Access
5.16    Requesting VC Status
5.17    Using the atm_oid Structure

6    Convergence Module Interface
6.1    Registering a Convergence Module
6.2    Receiving Data
6.2.1    Receiving Exception Notifications
6.2.2    Connecting to the ATM Module Management Interface
6.3    Unregistering a Convergence Module
6.4    Requesting Interface Parameters
6.5    Reserving Resources for CBR and Pacing Circuits
6.6    Releasing Reserved Resources
6.7    Requesting a Connection to a Remote System
6.8    Adding an Endpoint to a Connection
6.9    Requesting a Connection Be Torn Down
6.10    Dropping an Endpoint from a Connection
6.11    Transmitting Data on an Established VC
6.12    Modifying VC Parameters
6.13    Requesting Endpoint Connection State Information
6.14    Binding to a PPA
6.15    Receiving a Connection Notification
6.16    Unbinding from a PPA
6.17    Accepting an Incoming Call
6.18    Rejecting an Incoming Call
6.19    Adding a New ATM Address
6.20    Deleting an ATM Address
6.21    Requesting VC Statistics
6.22    Using ATM Convergence Module Interface Structures
6.22.1    The atm_vc_stats Structure
6.22.2    The atm_cmi_addr Union
6.22.2.1    The addr Member
6.22.2.2    The vcn Member

7    Connections
7.1    Making Outgoing Connections
7.1.1    Making the Call
7.1.2    Adding Parties to an Existing Connection
7.2    Accepting Connections
7.3    Controlling the Aging of Connections
7.4    Releasing a Connection
7.4.1    Release by a Convergence Module
7.4.2    Release by Network or Endpoint
7.5    Creating Permanent Virtual Circuits
7.6    Creating Signaling Virtual Circuits

8    Module Management Interface
8.1    Creating an MMI Path
8.2    Defining New MMI ioctl Commands
8.3    Using MMI Calling Conventions
8.4    Using the Device Driver MMI
8.5    Using the Signaling Module MMI
8.6    Using the Convergence Module MMI

9    Queuing Guidelines
9.1    Queuing in Device Drivers
9.1.1    Device Driver Transmit Queuing
9.1.2    Device Driver Receive Queuing
9.2    Queuing in Convergence Modules
9.2.1    Convergence Module Transmit Queuing
9.2.2    Convergence Module Receive Queuing

10    Flow Control
10.1    Hardware Flow Control
10.2    Software Flow Control
10.2.1    High-Water Mark
10.2.2    Low-Water Mark
10.3    Convergence Module Flow Control

11    Tuning the ATM Subsystem

A    CMM Routines
atm_cmm_accept
atm_cmm_activate_con
atm_cmm_add
atm_cmm_alloc_addr
atm_cmm_alloc_ie
atm_cmm_alloc_services
atm_cmm_bind_info
atm_cmm_con_deleted
atm_cmm_con_failed
atm_cmm_con_release
atm_cmm_connect
atm_cmm_del_esi
atm_cmm_del_ppa
atm_cmm_drop
atm_cmm_enquery
atm_cmm_ep_dropped
atm_cmm_error
atm_cmm_findaddr
atm_cmm_free_addr
atm_cmm_free_ie
atm_cmm_free_services
atm_cmm_mib_response
atm_cmm_new_call
atm_cmm_new_esi
atm_cmm_new_ppa
atm_cmm_new_thread
atm_cmm_oam_receive
atm_cmm_ppa_bind
atm_cmm_ppa_info
atm_cmm_ppa_unbind
atm_cmm_receive
atm_cmm_register_cvg
atm_cmm_register_dd
atm_cmm_register_sig
atm_cmm_reject
atm_cmm_release
atm_cmm_reply
atm_cmm_reserve_resources
atm_cmm_restart
atm_cmm_restart_ack
atm_cmm_send
atm_cmm_status_done
atm_cmm_unregister_cvg
atm_cmm_vc_control
atm_cmm_vc_get
atm_cmm_vc_stats
xxx_add
xxx_connect
xxx_drop
xxx_enquery
xxx_except
xxx_manage
xxx_mib
xxx_mmi
xxx_receive
xxx_release
xxx_restart
xxx_result
xxx_setup
xxx_xmit

B    Connection Programming Examples
B.1    Making a Call
B.2    Adding More Parties to a Point-to-Multipoint Connection
B.3    Processing an Incoming Call

Examples

3-1    The atm_uni_call_ie Structure Definition
B-1    Making a Call Code Fragment
B-2    Adding Parties to a Point-to-Multipoint Connection Code Fragment
B-3    Incoming Call Processing Code Fragment

Figures

1-1    Digital UNIX ATM Subsystem

Tables

3-1    The atm_vc Structure Members
3-2    The atm_addr Structure Members
3-3    The atm_vc_services Structure Members
3-4    Information Element Macros
3-5    The atm_ppa Structure Members
3-6    The atm_esi Structure Members
3-7    The atm_cause_info Structure Members
4-1    The atm_drv_params Structure Members
4-2    The atm_queue_param Structure Members
5-1    The atm_oid Structure Members
6-1    The atm_vc_stats Structure Members
7-1    Aging Parameter Values
8-1    The atm_mmi_path Structure Members
11-1    ATM Configuration Attributes