
CONST
  iic$vt_max_header_length = 4,
  iic$vt_max_ibs_size = 2000,
  iic$vt_max_transfer_length = iic$vt_max_ibs_size,
  iic$vt_header_length_input = 4,
  iic$vt_header_length_output = 4,
  iic$vt_header_length_change = 1,
  iic$vt_header_length_status = 1,
  iic$vt_header_length_indication = 1;

TYPE
  iit$vt_ibs_buffer = ^iit$vt_ibs_buffer_hold,
  iit$vt_ibs_buffer_hold = SEQ (REP iic$vt_max_ibs_size of cell);


TYPE
  iit$vt_queue_types = (iic$vt_input, iic$vt_output, iic$vt_change, iic$vt_status, iic$vt_indications,
    iic$vt_start_stop_comm, iic$vt_start_stop_comm_resp, iic$vt_version, iic$vt_create, iic$vt_delete,
    iic$vt_create_status),

  iit$vt_queue_type_from_message = array [iit$vt_message_types] of iit$vt_queue_types,
  iit$vt_header_length = array [iit$vt_message_types] of 0 .. iic$vt_max_header_length,

  iit$vt_queue_entry = record
    q_header: record
      next_entry: ^iit$vt_queue_entry,
      transfer_length: 0 .. iic$vt_max_transfer_length,
    recend,
    vtp_buffer: ^iit$vt_ibs_buffer_hold,
  recend,
  iit$vt_connection = record
    input_buffer: ^SEQ ( * ),
    output_buffer: ^SEQ ( * ),
    data: ^nat$data_fragments,
    input: record
      head: ^iit$vt_queue_entry,
      offset: 0 .. iic$vt_max_transfer_length - 1,
    recend,
    output: record
      head: ^iit$vt_queue_entry,
    recend,
    change: record
      head: ^iit$vt_queue_entry,
    recend,
    status: record
      head: ^iit$vt_queue_entry,
    recend,
    indications: record
      head: ^iit$vt_queue_entry,
    recend,
    queue_entry: iit$vt_queue_entry,
  recend,
  iit$vtp_connection_id = record
    connection: ^iit$vt_connection,
  recend;

*copyc nat$data_fragments
*copyc iit$vt_message_types
*copyc amt$file_identifier
*copyc iit$connection_description
*copyc iic$vt_max_output_mess_length
