?? LEFT := 1, RIGHT := 110 ??
?? NEWTITLE := 'NAM/VE: Static Data - oss$network_paged' ??
MODULE nam$static_data;

{
{  PURPOSE: It is intended that this module eventually contain all static data for NAM/VE
{           that is assigned to network paged segment.
{

?? PUSH (LISTEXT := ON) ??
?? NEWTITLE := '  Global Declarations', EJECT ??
*copyc nat$am_login_prompt
*copyc nat$cn_active_sap_list
*copyc nat$data_fragments
*copyc nat$global_osi_statistics
*copyc nat$global_statistics
*copyc nat$maximum_login_attempts
*copyc nat$net_device_config_param
*copyc nat$network_address
*copyc nat$network_selector
*copyc nat$open_cn_sap_descriptor
*copyc nat$open_network_sap_descriptor
*copyc nat$protocol_stack
*copyc nat$subnet_identifier
*copyc nat$title_list
*copyc nat$translation_request_list
*copyc nlc$bm_small_buffer_size
*copyc nlt$bm_allocated_buffer_pool
*copyc nlt$bm_buffer_manager_control
*copyc nlt$bm_buffer_pool
*copyc nlt$bm_message_id
*copyc nlt$cc_connection
*copyc nlt$cl_reference_number
*copyc nlt$configured_network_devices
*copyc nlt$la_open_sap_list
*copyc nlt$na_sap_list
*copyc nlt$sm_await_routing_queries
*copyc nlt$timer
*copyc nlt$sm_devices
*copyc oss$network_paged
*copyc ost$global_task_id
*copyc ost$heap
*copyc ost$signature_lock
?? POP ??
?? TITLE := '  NAM/VE Global Variables', EJECT ??

  VAR
{ Nlm$buffer_manager variables.

    nlv$bm_allocated_buffer_maximum: [XDCL, #GATE, oss$network_paged] nlt$bm_buffer_count := 2048,
    nlv$bm_allocated_buffer_pool: [XDCL, #GATE, oss$network_paged] nlt$bm_allocated_buffer_pool := [
          [ 1, 1, nlc$bm_small_buffer_size, 256, ^nlv$bm_small_buffer_sub_pool],
          [ 1, 1, {large_buffer_size = } *, 128, ^nlv$bm_large_buffer_sub_pool]],
    nlv$bm_allocat_buffer_threshold: [XDCL, #GATE, oss$network_paged] nlt$bm_buffer_count := 2000,
    nlv$bm_buffer_manager_caller: [XDCL, #GATE, oss$network_paged] string (21) := 'Buffer Manager Caller',

{ The following variable is used to synchronize buffer manager requests which acquire or return buffers.

    nlv$bm_buffer_manager_control: [XDCL, #GATE, oss$network_paged] nlt$bm_buffer_manager_control := [[0]],
    nlv$bm_buffer_pool: [XDCL, #GATE, oss$network_paged] nlt$bm_buffer_pool := [
          [ nlc$bm_small_buffer_size, {count =} *, {limit =} 256 * 4, NIL, NIL, NIL, 0],
          [ {large_buffer_size =} *, {count =} *, {limit =} 256 * 2, NIL, NIL, NIL, 0]],
    nlv$bm_buffers_freed: [XDCL, #GATE, oss$network_paged] boolean := FALSE,
    nlv$bm_large_buffer_size: [XDCL, #GATE, oss$network_paged] nlt$bm_buffer_length,
    nlv$bm_large_buffers: [XDCL, #GATE, oss$network_paged] nlt$bm_buffer_count := 256,
    nlv$bm_nil_message_id: [XDCL, #GATE, oss$network_paged] nlt$bm_message_id := [NIL, 0],
    nlv$bm_null_message_id: [XDCL, #GATE, oss$network_paged] nlt$bm_message_id := [NIL, 0ffff(16)],

{ Sub pool sizes are based on the amount of space available in 16MB of wired memory.

    nlv$bm_large_buffer_sub_pool: [oss$network_paged] array [1 .. 400] of nlt$bm_allocatd_buffer_sub_pool :=
          [ REP 400 OF [NIL, NIL, 0]],
    nlv$bm_small_buffer_sub_pool: [oss$network_paged] array [1 .. 800] of nlt$bm_allocatd_buffer_sub_pool :=
          [ REP 800 OF [NIL, NIL, 0]],
{ End nlm$bm_buffer_manager  variables.

    nav$change_nam_attributes_lock: [XDCL, #GATE, oss$network_paged] ost$signature_lock := [0],

    nav$network_id: [XDCL, #GATE, oss$network_paged] nat$network_identifier,
    nav$host_subnet_id: [XDCL, #GATE, oss$network_paged] nat$subnet_identifier,
    nav$cdna_broadcast_address: [XDCL, #GATE, oss$network_paged] nat$system_identifier := 0ffffffffffff(16),
    nav$cdna_multicast_address: [XDCL, #GATE, oss$network_paged] nat$system_identifier := 090025ffffff(16),

    nav$network_paged_heap: [XDCL, #GATE, oss$network_paged] ^ost$heap := NIL,

    nlv$configured_network_devices: [XDCL, #GATE, oss$network_paged] nlt$configured_network_devices :=
      [[FALSE, 0, FALSE, 0], 0, 0, NIL],

{   The following declarations specify the number of active priority connections.
{   NLV$CL_PRIORITY_CONNECTIONS can only be read/written via compare/swap.

    nlv$cl_priority_connections: [XDCL, #GATE, oss$network_paged] integer := 0,

{   NLV$CL_PRIORITY_CONNECT_COUNT is readable without compare/swap.

    nlv$cl_priority_connect_count: [XDCL, #GATE, oss$network_paged] nlt$cl_reference_number := 0,

{  The following declaration specifys the maximum data size for channelnet packets. This size is picked
{  to allow a link access PDU to fit in 3 small buffers.

    nav$cn_maximum_data_length: [XDCL, #GATE, oss$network_paged] nat$data_length := 1488,

    nav$cn_sap_list: [XDCL, #GATE, oss$network_paged] nat$cn_sap_list := [[FALSE, 0, FALSE, 0], NIL],

    nav$open_cn_sap_list_lock: [XDCL, #GATE, oss$network_paged] ost$signature_lock,
    nav$open_cn_sap_list: [XDCL, #GATE, oss$network_paged] ^nat$open_cn_sap_descriptor := NIL,

    nac$null_connection_id: [XDCL, #GATE, oss$network_paged] nat$connection_id := [0, 0],

    nav$maximum_login_attempts: [XDCL, #GATE, oss$network_paged] nat$maximum_login_attempts := 3,
    nav$prompt_for_family_name: [XDCL, #GATE, oss$network_paged] boolean := TRUE,
    nav$prompt_for_account: [XDCL, #GATE, oss$network_paged] boolean := FALSE,
    nav$prompt_for_project: [XDCL, #GATE, oss$network_paged] boolean := FALSE,
    nav$final_login_prompt: [XDCL, #GATE, oss$network_paged] nat$am_login_prompt := nac$am_family_name,
    nav$force_password_prompt: [XDCL, #GATE, oss$network_paged] boolean := FALSE,

    nav$statistics_enabled: [XDCL, #GATE, oss$network_paged] boolean := FALSE,

    nav$global_osi_statistics: [XDCL, #GATE, oss$network_paged] nat$global_osi_statistics :=
          [{ channel_connection_device = } NIL,
          { channel_connection = } [0, 0, 0],
          { link_access_agent = } [0, 0, 0, 0, 0],
          { network_access_agent = } [0, 0, 0, 0, 0],
          { system_management_entity = } [0, 0, 0, 0, 0, 0],
          { transport_access_agent = } [0, 0, 0, 0, 0, 0]],

    nav$global_statistics: [XDCL, #GATE, oss$network_paged] nat$global_statistics :=
          [NIL, [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0], [[0, 0], [0, 0], 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0],
          [0, [[0, 0], [0, 0]], [0, 0]], [0, 0, 0, 0, 0, 0, 0]],

    nav$registered_titles: [XDCL, #GATE, oss$network_paged] nat$title_list := [NIL, 0],
    nav$translation_cache: [XDCL, #GATE, oss$network_paged] nat$title_list := [NIL, 0],
    nav$translation_requests: [XDCL, #GATE, oss$network_paged] nat$translation_request_list := [NIL, 0],
    nlv$directory_version: [XDCL, #GATE, oss$network_paged] 2 .. 3 := 3,
    nlv$directory_pdu_seq_number: [XDCL, #GATE, oss$network_paged] integer := 0,
    nlv$directory_id_seq_number: [XDCL, #GATE, oss$network_paged] integer := 0,
    nav$unique_directory_identifier: [XDCL, #GATE, oss$network_paged] integer := 0,
    nlv$directory_lock: [XDCL, #GATE, oss$network_paged] ost$signature_lock := [0],
    nlv$log_broadcast_requests: [XDCL, #GATE, oss$network_paged] boolean := FALSE,
    nlv$log_broadcast_translations: [XDCL, #GATE, oss$network_paged] boolean := FALSE,

    nav$open_network_sap_list_lock: [XDCL, #GATE, oss$network_paged] ost$signature_lock := [0],
    nav$open_network_sap_list: [XDCL, #GATE, oss$network_paged] ^nat$open_network_sap_descriptor :=
      NIL;

  VAR
    nav$intranet_mgmt_timer_active: [XDCL, #GATE, oss$network_paged] boolean := FALSE;

  VAR
    nlv$timer_monitor_task: [XDCL, #GATE, oss$network_paged] ost$global_task_id;

  VAR
    nav$namve_active: [XDCL, #GATE, oss$network_paged] boolean := FALSE;

  VAR
    nav$ica_reset_down_threshold: [XDCL, #GATE, oss$network_paged] nat$ica_reset_down_threshold := 10,
    nav$intranet_layer_mgmt_taskid: [XDCL, #GATE, oss$network_paged] ost$global_task_id,
    nav$mci_reset_down_threshold: [XDCL, #GATE, oss$network_paged] nat$mci_reset_down_threshold := 10;

{ System Management variables.

  VAR
    nlv$sm_await_routing_queries: [XDCL, #GATE, oss$network_paged] nlt$sm_await_routing_queries :=
      [[0], NIL],
    nlv$sm_devices: [XDCL, #GATE, oss$network_paged] nlt$sm_devices := [[FALSE, 0, FALSE, 0], NIL],
    nlv$transport_network_selector: [XDCL, #GATE, oss$network_paged] nat$network_selector := 1;

{ Network Access Agent variables.

  VAR
    nlv$na_sap_list: [XDCL, #GATE, oss$network_paged] nlt$na_sap_list := [[0], [REP 256 OF FALSE],
      NIL];

{ Link Access Agent variables.

  VAR
    nlv$la_open_sap_list: [XDCL, #GATE, oss$network_paged] nlt$la_open_sap_list := [[0], NIL];

{ TCP/IP Management Access Agent variables.

  VAR
    nlv$log_tcpip_device_select: [XDCL, #GATE, oss$network_paged] boolean := FALSE;

{ Performance testing variables to externalize interesting values.

  VAR
    nlv$cc_grant_credit_trigger: [XDCL, #GATE, oss$network_paged] nlt$cc_credits := 4,
    nlv$cc_maximum_receive_window: [XDCL, #GATE, oss$network_paged] nlt$cc_credits := 12;

{ Statistic for multiple CN Flag Handler calls in the same task. This is for debugging in the
{ NAM/VE deadlock situation

  VAR
    nav$multiple_flag_handler_calls: [XDCL, #GATE, oss$network_paged] integer := 0,
    nav$multiple_namve_hndler_calls: [XDCL, #GATE, oss$network_paged] integer := 0;

  CONST
    nac$network_ch_trace_buf_size = 19;

*copyc pmt$condition

  VAR
    nav$network_cond_hdlr_trace_buf: [XDCL, #GATE, oss$network_paged] record
      index: ALIGNED integer,
      buffer: array [0 .. nac$network_ch_trace_buf_size] of record
        clock: integer,
        condition: pmt$condition,
      recend,
    recend := [nac$network_ch_trace_buf_size, [rep nac$network_ch_trace_buf_size + 1 of
          [0, [pmc$user_defined_condition, '']]]];

MODEND nam$static_data;
