CAC 2016-07-17

IMFT — We don't need no stinking X.25.

imft_driver_.pl1:

/* Determine if this is an in_dial connection, and out_dial connection, or
   a normal IO connection. */

          static.in_dial_qualifier = iodd_parse_$args ("in_dial=", major_args);
          static.out_dial_text = iodd_parse_$args ("out_dial=", major_args);

if dial_out, looks for 'io_description=' or 'iods='

if dial_service, looks for:

   debug_connect= (yes/no)
   idle_line_drop= (yes/no)
   idle_delay_count= (0-100, default 2)
   sleep_time= (0-60 minutes, default 5)

/* emit the dial text, and validate the dial connection */

          call put_chars (rtrim (static.out_dial_text) || NL);
          call get_line ();
          if index (character_line, " dialed to ") = 0 then do;
hangup_protocol:
               if ^prev_proto_error then
                    call iodd_msg_ (NORMAL, MASTER, 0, IMFT_DRIVER_,
                         "Protocol error - received ""^a""^/driver will retry every ^i minute^[s^;^].", character_line,
                         static.sleep_time, static.sleep_time > 1);

               sleep_time = static.sleep_time * ONE_MINUTE;
               prev_proto_error = "1"b;
               goto ACTION_RETRY;

CC75-02 pg 7-7, "service: autocall"

cwd >udd>sa>a
edit CMF.cmf

CMF.cmf should read:

Service: login;
Charge: none;
Terminal_type: none;
Line_type: none;
Baud: 9600;
FNP_required_up_time: 5;
FNP:      D;
   type:            DN6670;
   memory:          64;
   lsla:            0;
   hsla:            1;
   image:           >system_library_unbundled>site_mcs;
   service:         active;
FNP: A;
   type: DN6670;
   memory: 64;
   lsla: 0;
   hsla: 1;
   image: >system_library_unbundled>site_mcs;
   service:         active;
name: d.h000-d.h031;
name: a.h000;
   service: autocall;
end;

cv_cmf CMF.cmf
install CMF.cdt

(You seem to need to be in single -user mode to install the CMF)

cwd >ddd>idd

Edit iod_tables.iodt

Delete everything from "Remote G115" to, but not including the "End;" at the end of the file.

Before the "End;" add:

Request_type:       dummy;
  generic_type:     none;
  device:           rdra;
  max_queues:       1;

Device: remote_out;
  driver_module: >system_library_unbundled>imft_driver_;
  line: *;
  args: "direction=output,
          local_system=Local,
          foreign_system=Remote,
          out_dial=""1234"",
          iods=""tty a.h000.*, -ds  remote_ip:slv01"",
          mode=automatic";
 ; minor_device: to;
    default_type: To_Remote;
 ; minor_device: from;
 ;   default_type: From_Remote;

;Device: remote_in;
;  driver_module: >system_library_unbundled>imft_driver_;
;  line: *;
;  args: "direction=input,
;          local_system=Local,
;          foreign_system=Remote,
;          iods=""tty a.h000.*, -ds remote_ip:slv01"",
;          mode=automatic";
;  default_type: To_Remote;
;
Request_type: To_Remote;
  generic_type: imft;
  driver_userid: IMFT.Daemon;
  default_queue: 1;
  accounting: nothing;
  max_access_class: system_high;
;  device: remote_out.to;
  device: remote_out.;
;  device: remote_in;

;Request_type: From_Remote;
;  generic_type: imft;
;  driver_userid: IMFT.Daemon;
;  default_queue: 1;
;  accounting: nothing;
;  max_access_class: system_high;
;  device: remote_out.from;

Request_type:       dummy;
  generic_type:     none;
  device:           rdra;
  max_queues:       1;

Device: remote_out;
  driver_module: >system_library_unbundled>imft_driver_;
  line: *;
  args: "direction=output,
          local_system=Local,
          foreign_system=Remote,
          out_dial=""1234"",
          trigger_text=""foo"",
          iods=""tty_ a.h000 -ds remote_op"",
          mode=automatic";
    default_type: To_Remote;

Request_type: imft;
  generic_type: imft;
  device: remote_out;

Request_type: To_Remote;
  generic_type: imft;
  driver_userid: IMFT.Daemon;
  default_queue: 1;
  accounting: nothing;
  max_access_class: system_high;
  device: remote_out.;

iod_tables_compiler iod_tables
cdq iod_tables

(There seems to be a missing install step; rebooting is required for changes to take effect)

Add user IMFT

new_user$nua
*IMFT, USER
Yoyodyne
2
Daemon
password
password
password
password
IMFT
y
y
*Local, Site
Yoyodyne
2
Daemon
password
password
password
password
Local
y
y
*Remote, Site
Yoyodyne
4
Daemon
password
password
password
password
Remote
y
n

sa >sc1>PNT.pnt rw IMFT.Daemon

Added to x25.ini:

    autoinput hp_set_acl >sl1>system_privilege_ re IMFT.Daemon\n
    autoinput hp_set_acl >sl1>queue_admin_ re IMFT.Daemon\n

#create >sc1>rcp>a.h000.sub1.acs
#add_name >sc1>rcp>a.h000.sub1.acs =.=.sub2.= =.=.sub3.= =.=.sub4.=
#sa >sc1>rcp>a.h000.sub1.acs rw IMFT.Daemon

create >sc1>rcp>a.h000.acs
sa >sc1>rcp>a.h000.acs rw IMFT.Daemon
create >sc1>rcp>a.h002.acs
sa >sc1>rcp>a.h002.acs rw IMFT.Daemon

cwd >sc1
delete (mifti mifto).message
create (mitfti mitfto).message
sc_command define iolod log iolog
sc_command define iod tty otw_
sc_command route (mitfti mitfto) user_i/o iod
sc_command route (mitfti mitfto) error_i/o *iod
sc_command route (mitfti mitfto) log_i/o *iod
sc_command route (mitfti mitfto) user_i/o iolog
sc_command route (mitfti mitfto) error_i/o *iolog
sc_command route (mitfti mitfto) log_i/o *iolog
sc_command x io

$ ./fnpx 5501::5500

ultics MR12.6e: Installation and location (Channel d.h000)
Load = 5.0 out of 90.0 units: users = 5, 07/17/16  1645.8 pst Sun
l IMFT
Password:
You are protected from preemption.
IMFT.Daemon logged in 07/17/16  1645.9 pst Sun from ASCII terminal "none".
Last login 07/17/16  1643.8 pst Sun from ASCII terminal "none".
Enter command:  coordinator, driver, or logout:
driver

IO Daemon Driver Version: 5.7

Enter command or device/request_type:
remote_out default

Initializing Remote file transfer output driver...
imft_driver_: Segment not found.
Attaching line for Remote file transfer output driver
          attach description: imft_io_ -direction  output  -io_description "tty
\c a.h000.*, -ds  remote_ip:slv01"

eir >uddd>sa>Repair>isolts_.pl1 -tpn >foo>== -fu Repair.SysAdmin ds Remote
enter_imft_request: Unknown destination.  "imft"

print_imft_sites
Site name         Access ID      Dest   Source

Remote            IMFT.Daemon.*    X

eir iod_tables.iodt -ds Remote
enter_imft_request: Access error: User-name not on access control list for bran
\cch.
  An explicit ACL entry for Driver (IMFT.Daemon.*) must appear on object.
  (>daemon_dir_dir>io_daemon_dir>iod_tables.iodt)
enter_imft_request: Access error: User-name not on access control list for bran
\cch.
  An explicit ACL entry for User (Repair.SysAdmin.*) must appear on object.
  (>daemon_dir_dir>io_daemon_dir>iod_tables.iodt)

sa isolts_.pl1 r IMFT.Daemon
sa >user_dir_dir>SysAdmin>Repair s IMFT.Daemon
eir isolts_.pl1 -ds Remote
enter_imft_request: User-name not on access control list for branch.
  User (Repair.SysAdmin.*) must have an explicit ACL entry of S to parent direc
\ctory of object to be sent.
  (>user_dir_dir>SysAdmin>Repair

la >user_dir_dir>SysAdmin>Repair
s     IMFT.Daemon.*
sma   *.SysDaemon.*
sma   *.SysAdmin.*

sa >user_dir_dir>SysAdmin>Repair sma Repair.SysAdmin.*

eir isolts_.pl1 -ds Remote
isolts_.pl1; ID: 152916.6
1 request submitted; 0 already in To_Remote queue 1.

FIx >sc1>rcp>a.h000 acs

Change tty to tty_ in iodt...

Enter command or device/request_type:
remote_out default

Initializing Remote file transfer output driver...
imft_driver_: Unable to complete connection to external device.
Attaching line for Remote file transfer output driver
          attach description: imft_io_ -direction  output  -io_description "tty
\c_ a.h000 -ds remote_op"

Reworking fnp code to do the right thing....

CMF.cmf reads:

Service: login;
Charge: none;
Terminal_type: none;
Line_type: none;
Baud: 9600;
FNP_required_up_time: 5;
FNP:      D;
   type:            DN6670;
   memory:          64;
   lsla:            0;
   hsla:            1;
   image:           >system_library_unbundled>site_mcs;
   service:         active;
FNP: A;
   type: DN6670;
   memory: 64;
   lsla: 0;
   hsla: 1;
   image: >system_library_unbundled>site_mcs;
   service:         active;
name: d.h000-d.h031;
name: a.h000;
   service: autocall;
name: a.h001;
name: a.h002;
   service: slave;
end;

Devices.txt:

cat Devices.txt
name: a.h000;
   service: autocall;
name: a.h002;
   service: slave;
   mux_line: 63;
name: a.h001;
name: d.h000;
name: d.h001;
name: d.h002;
name: d.h003;
name: d.h004;
name: d.h005;
name: d.h006;
name: d.h007;
name: d.h008;
name: d.h009;
name: d.h010;
name: d.h011;
name: d.h012;
name: d.h013;
name: d.h014;
name: d.h015;
name: d.h016;
name: d.h017;
name: d.h018;
name: d.h019;
name: d.h020;
name: d.h021;
name: d.h022;
name: d.h023;
name: d.h024;
name: d.h025;
name: d.h026;
name: d.h027;
name: d.h028;
name: d.h029;
name: d.h030;
name: d.h031;
end;

iod_tables.iodt:

Device: remote_out;
  driver_module: >system_library_unbundled>imft_driver_;
  line: *;
  args: "direction=output,
          local_system=Local,
          foreign_system=Remote,
          auto=yes,
          trigger_text=""foo"",
          iods=""tty_ a.h000 -ds 127000000001006182"",
          mode=automatic";
    default_type: To_Remote;

Device: remote_in;
  driver_module: >system_library_unbundled>imft_driver_;
  line: *;
  args: "direction=input,
          local_system=Local,
          foreign_system=Remote,
          auto=yes.
          iods=""tty_ a.h002"",
          mode=automatic";
  default_type: From_Remote;

Request_type: imft;
  generic_type: imft;
  device: remote_out;

Request_type: To_Remote;
  generic_type: imft;
  driver_userid: IMFT.Daemon;
  default_queue: 1;
  accounting: nothing;
  max_access_class: system_high;
  device: remote_out.;

Request_type: From_Remote;
  generic_type: imft;
  driver_userid: IMFT.Daemon;
  default_queue: 1;
  accounting: nothing;
  max_access_class: system_high;
  device: remote_in;

sa >sc1>mitfti.message rw *.Daemon.*
sa >sc1>mitfto.message rw *.Daemon.*

autoinput admin\n
autoinput hp_set_acl >sl1>system_privilege_ re IMFT.Daemon\n
autoinput hp_set_acl >sss>queue_admin_ re IMFT.Daemon\n
autoinput ame\n
autoinput define iolog log iolog\n
autoinput define iod tty otw_\n
autoinput route (mitfti mitfto) user_i/o iod\n
autoinput route (mitfti mitfto) error_i/o *iod\n
autoinput route (mitfti mitfto) log_i/o *iod\n
autoinput route (mitfti mitfto) user_i/o iolog\n
autoinput route (mitfti mitfto) error_i/o *iolog\n
autoinput route (mitfti mitfto) log_i/o *iolog\n
autoinput x io\n
autoinput admin\n
autoinput pause 10\n
autoinput ame\n
autoinput login IMFT.Daemon mitfti\n
autoinput login IMFT.Daemon mitfto\n
autoinput reply mitfti driver\n
autoinput reply mitfti remote_in\n
autoinput reply mitfto driver\n
autoinput reply mitfto remote_out default\n
autoinput \z
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License