$! $! NCL_TASK.COM $! $! See information contained below labels BEGIN_PROCEDURE_INFORMATION: $! and BEGIN_PROCEDURE_EXAMPLES: for information on usage and $! procedure example output information displays. $! $! $ GOTO BEGIN_PROCEDURE $! $BEGIN_PROCEDURE_INFORMATION: $! $! This procedure is specific to DECnet Phase V nodes ONLY $! and is used to display the DECnet transport connection $! path information between a source and target node. The $! three connection options are "DECnet OSI", "DECnet over IP", $! and "DECnet NSP". $! $! This procedure CAN be called from a DECnet Phase IV node $! remotely using DCL task to task but the procedure will $! only execute on a DECnet Plus / Phase V node. $! $! For additional information regarding use of this procedure, $! please refer to the VSI_DECNET_OSI release notes found in $! the SYS$HELP: directory. $! $! (RELEASE NOTES NOT YET IMPLEMENTED!!!!) $! $!***************************************************************** $!* * $!* NOTE * $!* * $!***************************************************************** $! $! This procedure requires the process on the target node $! to have either BYPASS privilege set as a default process $! privilege OR the NET$EXAMINE / NET$MANAGE rights identifier $! assigned to the user account in Authorize. $! $! Not having this requirement met will result in the $! following error being returned when attempting to $! execute the first NCL command in the procedure. $! $! %NCL-E-CMLSENDFAILED, error sending command request $! -CML-E-EMAAPROB, error returned from VMS EMA agent $! -NCL-E-ACCESSDENIED, access denied $! $! $! While this procedure is intended to be used to trace a $! connection's default path from a source node to a target $! node, the calling command can be modified to force a $! particular type of transport connection for testing $! if called from a Phase V DECnet Plus node. $! $! The information below describes command formats to $! force DECnet connections to use certain transports $! (OSI, DECnet over IP, or NSP) from a DECnet Plus node. $! $! The "remote_node" field in the TYPE command example below would $! be specified using the target node's NSAP or IP address as: $! $! NET$49nnnnnnnnnnnnnnnn21 - Forces OSI transport $! IP$nnn.nnn.nnn.nnn - Forces DECnet over IP $! NET$49nnnnnnnnnnnnnnnn20 - Forces NSP transport $! $! To find the NSAP information, execute the following $! command on the target DECnet Plus node. $! $! $ PIPE MCR NCL SHOW ADDRESS | SEARCH SYS$PIPE DNA_OSINETWORK $! [ DNA_OSInetwork , 49::00-01:AA-00-04-00-73-04:21 (LOCAL:.IA22) ] $! [ DNA_OSInetwork , 49::00-01:AA-00-04-00-73-04:20 (LOCAL:.IA22) ] $! $! Remove all :'s and -'s from the addresses $! to use in the NET$ nsap format address. $! $! For example: NET$490001AA000400730421 < OSI Transport format $! NET$490001AA000400730420 < NSP Transport format $! $! To use DECnet over IP, enter the target DECnet Plus node's $! IP address after the IP$ prefix. $! $! For example: IP$10.10.118.6 < DECnet over IP format $! $! DECnet over IP requires the TCP/IP PWIP driver to be enabled $! and started on both the source and target DECnet Plus nodes. $! $! Place this procedure on the target system in the $! top level directory for the user account being $! used to access the target DECnet Plus system. $! $! To invoke the procedure use the following command format: $! $! $ TYPE remote_node"username password"::"TASK=NCL_TASK" $! $! If a DECnet proxy is configured for the account, then the $! username and password information does not need to be $! specified in the calling command. For example: $! $! $ TYPE remote_node::"TASK=NCL_TASK" $! $! $BEGIN_PROCEDURE_EXAMPLES: $! $! This example shows a connection to a DECnet Plus target node via DECnet $! Over IP using explicit access to invoke the task-to-task procedure. $! $! $! $ TYPE KRESGE.ENG.VMSSOFTWARE.COM"username password"::"0=NCL_TASK" $! $! %%% $ SHOW DEFAULT Output for this connection: %%% $! $! DISK$WORK:[MCGAW] $! $! %%% $ SHOW PROCESS Output for this connection: %%% $! $! 3-JUN-2024 00:06:54.10 User: MCGAW Process ID: 42000436 $! Node: KRESGE Process name: TASK_1401000A $! $! Terminal: $! User Identifier: [VMS,MCGAW] $! Base priority: 4 $! Default file spec: DISK$WORK:[MCGAW] $! Number of Kthreads: 1 (System-wide limit: 4) $! $! Devices allocated: NET11: $! $! $! %%% NCL Session Control Port information for this connection: %%% $! $! Node 0 Session Control Port SCL$PORT$12010007 $! at 2024-06-03-00:06:54.122-04:00Iinf $! with Local End User Address = name = NCL_TASK $! $! Status $! $! Client = Session Control Application TASK $! Local End User Address = name = NCL_TASK $! Transport Port = OSI Transport Port OSI$PORT_0_0008 $! Direction = Incoming $! Remote End User Address = UIC = [0,0]MCGAW $! Node Name Sent = $! Version Sent = V2 $! Outgoing Network Priority = 0 $! Incoming Network Priority = 0 $! Process Identifier = 42000436 $! $! $! %%% NCL Transport Port information for this connection: %%% $! $! Node 0 OSI Transport Port OSI$PORT_0_0008 $! at 2024-06-03-00:06:54.302-04:00Iinf $! $! Status $! $! Client = Session Control Port SCL$PORT$12010007 $! Local NSAP = $! Remote NSAP = $! Direction = Incoming $! Local RFC1006 Port Number = 399 $! Local RFC1006 IP Address = 10.10.108.202 (KRESGE) $! Remote RFC1006 Port Number = 51113 $! Remote RFC1006 IP Address = 10.10.118.6 (IP-10-10-118-6.EC2.INTERNAL) $! $! $ $! $! $! $! This example shows a connection to a target DECnet Plus node via DECnet $! OSI Transport using proxy access to invoke the task-to-task procedure. $! $! $! $ TYPE IA50::"0=NCL_TASK" $! $! %%% $ SHOW DEFAULT Output for this connection: %%% $! $! USER003:[MCGAW] $! $! %%% $ SHOW PROCESS Output for this connection: %%% $! $! 3-JUN-2024 00:55:02.92 User: MCGAW Process ID: 264010BA $! Node: IA50 Process name: TASK_14050062 $! $! Terminal: $! User Identifier: [VMS,MCGAW] $! Base priority: 4 $! Default file spec: USER003:[MCGAW] $! Number of Kthreads: 1 (System-wide limit: 2) $! $! Devices allocated: NET1435: $! $! $! %%% NCL Session Control Port information for this connection: %%% $! $! Node 0 Session Control Port SCL$PORT$1205005F $! at 2024-06-03-00:55:02.935-04:00Iinf $! with Local End User Address = name = NCL_TASK $! $! Status $! $! Client = Session Control Application TASK $! Local End User Address = name = NCL_TASK $! Transport Port = OSI Transport Port OSI$PORT_0_0069 $! Direction = Incoming $! Remote End User Address = UIC = [0,0]MCGAW $! Node Name Sent = LOCAL:.IA22 $! Version Sent = V3 $! Outgoing Network Priority = 0 $! Incoming Network Priority = 0 $! Process Identifier = 264010BA $! $! $! %%% NCL Transport Port information for this connection: %%% $! $! Node 0 OSI Transport Port OSI$PORT_0_0069 $! at 2024-06-03-00:55:02.978-04:00Iinf $! $! Status $! $! Client = Session Control Port SCL$PORT$1205005F $! Local NSAP = 49::00-01:AA-00-04-00-71-04:21 (LOCAL:.IA50) $! Remote NSAP = 49::00-01:AA-00-04-00-73-04:21 (LOCAL:.IA22) $! Direction = Incoming $! Local RFC1006 Port Number = 0 $! Local RFC1006 IP Address = $! Remote RFC1006 Port Number = 0 $! Remote RFC1006 IP Address = $! $! $ $! $! $! $! This example shows a connection to a target DECnet Plus node from a Phase $! IV DECnet node using proxy access to invoke the task-to-task procedure. $! A connection from a Phase IV DECnet node to DECnet Plus must use the $! NSP transport connection on the DECnet Plus target node. $! $! $ TYPE IA50::"0=NCL_TASK" $! $! %%% $ SHOW DEFAULT Output for this connection: %%% $! $! USER003:[MCGAW] $! $! %%% $ SHOW PROCESS Output for this connection: %%% $! $! 3-JUN-2024 00:59:39.48 User: MCGAW Process ID: 264010BA $! Node: IA50 Process name: TASK_14050063 $! $! Terminal: $! User Identifier: [VMS,MCGAW] $! Base priority: 4 $! Default file spec: USER003:[MCGAW] $! Number of Kthreads: 1 (System-wide limit: 2) $! $! Devices allocated: NET1436: $! $! $! %%% NCL Session Control Port information for this connection: %%% $! $! Node 0 Session Control Port SCL$PORT$12050060 $! at 2024-06-03-00:59:39.498-04:00Iinf $! with Local End User Address = name = NCL_TASK $! $! Status $! $! Client = Session Control Application TASK $! Local End User Address = name = NCL_TASK $! Transport Port = NSP Port NSP$PORT_00010003 $! Direction = Incoming $! Remote End User Address = UIC = [134772,22504]MCGAW $! Node Name Sent = $! Version Sent = V2 $! Outgoing Network Priority = 0 $! Incoming Network Priority = 0 $! Process Identifier = 264010BA $! $! $! %%% NCL Transport Port information for this connection: %%% $! $! Node 0 NSP Port NSP$PORT_00010003 $! at 2024-06-03-00:59:39.539-04:00Iinf $! $! Status $! $! UID = 8DF1EDF0-2144-11EF-A647-001B789F2225 $! Client Name = Session Control Port SCL$PORT$12050060 $! Local NSAP = 49::00-01:AA-00-04-00-71-04:20 (LOCAL:.IA50) $! Remote NSAP = 49::00-01:AA-00-04-00-70-04:20 (LOCAL:.IA16) $! Local Reference = 3 $! Remote Reference = 8370 $! Network Port = Routing Port RTG$PORT20 $! RoundTrip Delay Estimate = 592 $! Outgoing Network Priority = 0 $! Incoming Network Priority = 0 $! $! $ $! $! $BEGIN_PROCEDURE: $! $! This procedure is being accessed over the network as $! a DCL task to task command procedure, map sys$output $! and sys$error back to the sys$net device. This allows $! the output to be displayed on the calling system / processes $! terminal screen. $! $ if f$mode() .eqs. "NETWORK" then define sys$output sys$net $ if f$mode() .eqs. "NETWORK" then define sys$error sys$net $! $! Show the process information for the network process $! that was created as a result of the Task to Task. $! $ write sys$output "" $ write sys$output "%%% $ SHOW DEFAULT Output for this connection: %%%" $ write sys$output "" $ show default $ write sys$output "" $ write sys$output "%%% $ SHOW PROCESS Output for this connection: %%%" $ show process $ write sys$output "" $! $! Invoke the NCL utility and show the session control $! port related to the NCL_TASK session control application. $! $ write sys$output "" $ write sys$output "%%% NCL Session Control Port information for this connection: %%%" $! $ mcr ncl show Session Control Port * all status, - with Local End User Address=name = ncl_task $! $! Use the PIPE command to search the displayed session $! control application to capture the associated Transport Port. $! $ pipe mcr ncl show Session Control Port * all, - with Local End User Address = name = ncl_task | - search sys$pipe "Transport Port" | - (READ SYS$PIPE port ; DEFINE/JOB/NOLOG port &port ) ; - port=f$edit(F$TRNLNM("port"),"trim,compress") ; DEASSIGN/JOB port $ port=f$extract(f$locate("=",port)+1,f$length(port),port) $! $! Use the Transport Port information obtained above $! to display the status fields for the port. $! $ write sys$output "" $ write sys$output "%%% NCL Transport Port information for this connection: %%%" $! $ if f$locate("OSI",port) .nes. f$length(port) $ then $ mcr ncl show 'port' Client, Local NSAP, Remote NSAP, Direction, - Local RFC1006 Port Number, Local RFC1006 IP Address, - Remote RFC1006 Port Number, Remote RFC1006 IP Address $ else $ mcr ncl show 'port' ALL STATUS $ endif $! $! Finished displaying information, remove the SYS$ERROR $! and SYS$OUTPUT definitions to SYS$NET $! $! This procedure is being accessed over the network as $! a DCL task to task command procedure, remove the mapping $! for sys$output and sys$error back to the sys$net device. $! $ if f$mode() .eqs. "NETWORK" then deassign sys$error $ if f$mode() .eqs. "NETWORK" then deassign sys$output