
{ This common deck describes the format of the Protocol Data Units
{ (PDU) received and sent by the System Management Access Agent.

  CONST
    nlc$sm_outgoing_pdu_base = 800(16),
    nlc$sm_incoming_pdu_base = 880(16),

{ Incoming PDU kinds.

    nlc$sm_define_version = nlc$sm_incoming_pdu_base + 0,
    nlc$sm_version_confirm = nlc$sm_incoming_pdu_base + 1,
    nlc$sm_confirm_interface_attrib = nlc$sm_incoming_pdu_base + 2,
    nlc$sm_define_dev_spec_host_add = nlc$sm_incoming_pdu_base + 3,
    nlc$sm_define_subnets = nlc$sm_incoming_pdu_base + 4,
    nlc$sm_end_subnet_definition = nlc$sm_incoming_pdu_base + 5,
    nlc$sm_dest_accessible_response = nlc$sm_incoming_pdu_base + 6,
    nlc$sm_disconnect_indication = nlc$sm_incoming_pdu_base + 7,
    nlc$sm_device_service_attribute = nlc$sm_incoming_pdu_base + 8,
    nlc$sm_incoming_pdu_limit = nlc$sm_disconnect_indication,

{ Outgoing PDU kinds.

    nlc$sm_version_response = nlc$sm_outgoing_pdu_base + 0,
    nlc$sm_define_interface_attrib = nlc$sm_outgoing_pdu_base + 1,
    nlc$sm_confrm_dev_spec_host_add = nlc$sm_outgoing_pdu_base + 2,
    nlc$sm_dest_accessible_request = nlc$sm_outgoing_pdu_base + 3,
    nlc$sm_disconnect_request = nlc$sm_outgoing_pdu_base + 4,
    nlc$sm_outgoing_pdu_limit = nlc$sm_disconnect_request;

  TYPE
    nlt$sm_version = 0 .. 0ff(16),
    nlt$sm_pdu_kind = 0 .. 0ffff(16),
    nlt$sm_pdu_length = 0 .. 0ffff(16),
    nlt$sm_pdu_header = record
      length: nlt$sm_pdu_length,
      kind: nlt$sm_pdu_kind,
    recend,

{ Outgoing PDU formats.

    nlt$sm_version_response = record
      header: nlt$sm_pdu_header,
      common_version: nlt$sm_version
    recend,

    nlt$sm_define_interface_attrib = record
      header: nlt$sm_pdu_header,
      transport_network_selector: nat$network_selector,
      subnet_id: nat$subnet_identifier,
      system_id: nat$system_identifier,
      date_and_time: ost$date_time,
    recend,

    nlt$sm_confrm_dev_spec_host_add = record
      header: nlt$sm_pdu_header,
    recend,

    nlt$sm_dest_accessible_request = record
      header: nlt$sm_pdu_header,
      request_id: nlt$sm_request_identifier,
      destination_address: nat$osi_network_address,
    recend,

    nlt$sm_disconnect_request = record
      header: nlt$sm_pdu_header,
      reason: nlt$sm_disconnect_reason,
    recend,

{ Incoming PDU formats.

    nlt$sm_define_version = record
      smap_version: nlt$sm_version,
    recend,

    nlt$sm_confirm_int_attrib_fixed = record
      header: nlt$sm_pdu_header,
      network_address_length: nat$osi_network_address_length,

{ The following field follows the fixed record.

{     network_address_prefix: nat$osi_network_address_prefix,
    recend,

    nlt$sm_define_dev_spec_host_add = record
      device_specific_host_address: nat$osi_network_address,
    recend,

{ The define_subnet_attributes pdu contains the fixed attributes followed by
{ the variable sized multicast address and the quality of services fields.

    nlt$sm_fixed_subnet_attributes = record
      subnet_id: nat$subnet_identifier,
      directly_connected: boolean,
      subnet_status: nlt$subnet_status,
      subnet_type: nlt$subnet_type,
      max_link_sdu_size: 0 .. 0ffff(16),
      multicast_address_length: nat$osi_network_address_length,
      quality_of_service_size: nlt$quality_of_service_size,

{ The following fields may follow the fixed record.

{     multicast_address: nat$osi_network_address,
{     quality_of_service: nlt$quality_of_service,
    recend,

    nlt$sm_dest_acc_fixed_response = record
      request_id: nlt$sm_request_identifier,
      route_status: nlt$sm_route_status,

{ The following field may follow the fixed record.

{     quality_of_service: nlt$quality_of_service,
    recend,

    nlt$sm_disconnect_indication = record
      reason: nlt$sm_disconnect_reason,
    recend,

    nlt$sm_define_device_service = record
      attribute_list: nlt$sm_device_attributes_list,
    recend;

*copyc nat$network_selector
*copyc nat$osi_network_address
*copyc nat$osi_network_address_prefix
*copyc nat$subnet_identifier
*copyc nat$system_identifier
*copyc nlt$link_sdu_size
*copyc nlt$quality_of_service
*copyc nlt$sm_device_attributes_list
*copyc nlt$sm_disconnect_reason
*copyc nlt$sm_request_identifier
*copyc nlt$sm_route_status
*copyc nlt$subnet_status
*copyc nlt$subnet_type
*copyc ost$date_time
