
{     DECK: RFT$NETWORK_BLOCK_PROTOCOL
{
{     Application to application network block protocol definitions.


{     Default network block sizes.

  CONST
    rfc$default_record_block_size = 4096,
    rfc$default_message_block_size = 2043;

{     Network block types and text length.

  CONST
    rfc$nbp_block_type_min = rfc$nbp_block_type_unused,
    rfc$nbp_block_type_unused = 0,
    rfc$nbp_block_type_blk = 1,
    rfc$nbp_block_type_msg = 2,
    rfc$nbp_block_type_back = 3,
    rfc$nbp_block_type_cmd = 4,
    rfc$nbp_block_type_qblk = 6,
    rfc$nbp_block_type_qmsg = 7,
    rfc$nbp_block_type_max = rfc$nbp_block_type_qmsg;

  TYPE
    rft$nbp_block_type = rfc$nbp_block_type_min .. rfc$nbp_block_type_max;

  CONST
    rfc$nbp_min_text_length = 0,
    rfc$nbp_max_text_length = 0ffff(16);

  TYPE
    rft$nbp_text_length = rfc$nbp_min_text_length .. rfc$nbp_max_text_length;

{     Nad buffer descriptor.

  CONST
    rfc$min_buffer_descriptor = rfc$buffer_258,
    rfc$buffer_258 = 0,
    rfc$buffer_4128 = 1,
    rfc$buffer_reserved_2 = 2,
    rfc$buffer_reserved_3 = 3,
    rfc$max_buffer_descriptor = rfc$buffer_reserved_3;

  TYPE
    rft$nbp_buffer_descriptor = rfc$min_buffer_descriptor .. rfc$max_buffer_descriptor;

{     Connect reject codes.

  CONST

{     Discontinued reject codes.

    rfc$nbp_min_reject_code = 1,
    rfc$nbp_server_unavailable = 1,
    rfc$nbp_shutdown = 2,
    rfc$nbp_pid_lid_not_available = 4,
    rfc$nbp_path_unavailable = 8,
    rfc$nbp_invalid_password = 9,
    rfc$nbp_requesting_appl_unknown = 10,
    rfc$nbp_resources_not_available = 11,

{     Temporarily unavailable reject codes.

    rfc$nbp_requested_server_busy = 16,
    rfc$nbp_requested_host_busy = 30,

{     Disabled reject codes.

    rfc$nbp_server_disabled = 32,
    rfc$nbp_server_lid_disabled = 33,
    rfc$nbp_client_disabled = 34,
    rfc$nbp_client_pid_disabled = 35,
    rfc$nbp_client_nad_disabled = 37,
    rfc$nbp_tcu_disabled = 40,
    rfc$nbp_rhf_not_active = 46,
    rfc$nbp_rhf_shutdown = 47,

{     Invalid/undefined reject codes.

    rfc$nbp_server_undefined = 48,
    rfc$nbp_server_lid_undefined = 49,
    rfc$nbp_client_undefined = 50,
    rfc$nbp_client_pid_undefined = 51,
    rfc$nbp_password_undefined = 52,
    rfc$nbp_client_nad_undefined = 53,
    rfc$nbp_access_code_invalid = 54,
    rfc$nbp_device_invalid = 55,
    rfc$nbp_tcu_invalid = 56,
    rfc$nbp_max_reject_code = rfc$max_server_reject_code;

{     Network block header format.

  TYPE
    rft$nbp_block_header = packed record
      length: ALIGNED [0 MOD 8] rft$nbp_text_length,
      fill1: 0 .. 0ffff(16),
      destination_node: rft$nad_address,
      source_node: rft$nad_address,
      connection_number: rft$path_id,
      fill2: 0 .. 1f(16),
      block_type: rft$nbp_block_type,
      data_block_clarifier: rft$nbp_data_block_clarifier,
      fill3: 0 .. 03f(16),
      application_block_number: rft$application_block_number,
    recend;

  TYPE
    rft$nbp_data_block_clarifier = packed record
      pru_block: boolean,
      end_of_information: boolean,
      end_of_record: boolean,
      reserved: 0 .. 1,
      eor_level: 0 .. 0f(16),
    recend;

{     Outgoing connect path message.

  TYPE
    rft$nbp_outgoing_connect = packed record
      nad_address: ALIGNED [0 MOD 8] rft$nad_address,
      local_tcu_enables: rft$tcu_mask,
      destination_device: rft$destination_device_address,
      access_code: rft$nad_access_code,
      name: rft$subsystem_identifier,
      fill1: 0 .. 0ff(16),
      remote_tcu_enables: rft$tcu_mask,
      fill2: 0 .. 3,
      buffer_size: rft$nbp_buffer_descriptor,
      connection_entry: 0..0ffff(16),
      logical_network: rft$logical_network,
      logical_nad: rft$logical_nad,
      requested_application: rft$application_name,
      source_physical_id: rft$physical_identifier,
      requesting_application: rft$application_name,
      fill4: 0..3,
      application_block_number: rft$application_block_number,
      password: rft$connection_password,
      destination_id: rft$physical_identifier,
    recend;

{     Incoming connect path message.

  TYPE
    rft$nbp_incoming_connect = packed record
      nad_address: ALIGNED [0 MOD 8] rft$nad_address,
      local_tcu_enables: rft$tcu_mask,
      destination_device: rft$destination_device_address,
      access_code: rft$nad_access_code,
      name: rft$subsystem_identifier,
      path_id: rft$path_id,
      fill2: 0 .. 3f(16),
      buffer_size: rft$nbp_buffer_descriptor,
      fill3: 0 .. 0ffffffff(16),
      requested_application: rft$application_name,
      source_physical_id: rft$physical_identifier,
      requesting_application: rft$application_name,
      fill4: 0..3,
      application_block_number: rft$application_block_number,
      password: rft$connection_password,
      destination_id: rft$physical_identifier,
    recend;

{   control message format.

  CONST
    rfc$min_control_message_text = 0,
    rfc$max_control_message_text = 40,
    rfc$max_control_message_size = 64;

  TYPE
    rft$control_message_text = rfc$min_control_message_text ..
                               rfc$max_control_message_text;

  TYPE
    rft$nbp_control_message_header = PACKED RECORD
      nad_address: ALIGNED [0 MOD 8] rft$nad_address,
      local_tcu_enables: rft$tcu_mask,
      destination_device: rft$destination_device_address,
      access_code: rft$nad_access_code,
      name: rft$subsystem_identifier,
      my_path_id: rft$path_id,
      his_path_id: rft$path_id,
      connect: 0..0ffff(16),
      logical_network: rft$logical_network,
      logical_nad: rft$logical_nad,
      length: rft$transfer_length,
      fill1: 0..0ffff(16),
      destination_nad: rft$nad_address,
      source_nad: rft$nad_address,
      connection_number: rft$path_id,
      fill2: 0..1f(16),
      block_type: rft$nbp_block_type,
      fill3: 0..3fff(16),
      abn: rft$application_block_number,
    RECEND;

  TYPE
    rft$nbp_control_message = PACKED RECORD
      header: rft$nbp_control_message_header,
      data: STRING(*),
    RECEND;

?? PUSH (LISTEXT := ON) ??
*copyc rft$external_interface
*copyc rft$configuration_defs
*copyc rft$pp_interface_defs
?? POP ??
