HP3000/HP 3000 FAQ
Last Updated: Thursday, February 01, 2007 02:38 PM
Programming for Networks on the HP3000
To talk to other network processes from MPE, you have two APIs from which to choose; NetIPC (proprietary to HP3000s but callable from all MPE-based programming languages), and the newer "open" Berkeley sockets interface, callable only from "C". Both perform basically the same function, and in fact call the same low-level routines, though the Berkeley sockets API does allow access to UDP-based functions which NetIPC does not.
"HP Sockets" is the short form for the product called "Software Integration Sockets". I view it as a method of pasting together applications that don't know about each other, potentially across machines in a network. As such, you can describe (via a meta language) the data structures of two programs (perhaps binary, perhaps ASCII (e.g.: from a report generator), and it will generate conversion code. It does data conversion (e.g., ascii to binary or packed decimal) and understands the data types/structures used by FORTRAN, COBOL, C, & Pascal. It also handles asynchronous messaging between machines, if necessary.
NetIPC is a programmatic interface to call networking (socket) routines from a programming language on the 3000. Socket routines allow inter- system data transfers. NetIPC allows most of the same functionality of berkeley sockets (BSD) but is a proprietary calling interface invented by HP. A notable exception is that NetIPC does not allow access to UDP/IP primitives where BSD does.
BSD is a programmatic interface to call networking (socket) routines from a programming language (designed to be called by 'C' programs). socket routines allow inter-system data transfers. BSD is commonly used on a variety of platforms (coming from the Unix world) but is not easily accessed from languages other than 'C'. BSD allows access to both TCP/IP and UDP/IP protocols.
The NSINFO intrinsic (when called with $BACK as nodename) will return the nodename of the machine from which the logged-on user is connected (for users logged in via network connections over a TCP/IP network) You'll get an error from NSINFO if you're not a VT session.
If you are interested in IP address and have the 5/94 edition of the "Using NS3000/iX Network Services" manual, it documents item #38 that can be used to retrieve an IP address associated with an NS environment. All NS services (VT as well) have a predefined environment "$BACK" that refers to the originator of the connection (i.e. one hop back). If you as for item #38 on environment $BACK, you will get the IP address.
Just do an: SNMPGET ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress.2.(the ip address) or an SNMPGET at.atTable.atEntry.atPhysAddress.2.1.(the ip address) both of the above nicely return the media address.
Explanation on HPSTDIN_ and HPVT_ CI-variables
Due to lack of help text and multiple customer requests, here's a detailed explanation of those CI variables set by the VTSERVER process on MPE/iX 5.5 and later. These same variables appear in some earlier versions of MPE/iX, providing that appropriate NS services patches have been applied. Note that as the number of 3rd party VT providers has increased, not all previous versions will be able to properly identify all client types. New client types have been added all the time, latest additions in a yet unreleased patch (NSSED78A). 03/18/1996 Eero Laurila - HP CSY Networking lab, NS services, VT. Variable Types ========================================================== R READ ONLY variable (cannot be modified). W READ/WRITE variable (can be modified). JCW A standard MPE/iX JCW. I Integer format. B Boolean format (TRUE/FALSE). S String (ASCII) format. (NP) Not programmatically accessible. They may be accessed through the COMMAND or HPCICOMMAND intrinsics, but not with the HPCIGETVAR, HPCIPUTVAR, and HPCIDELETEVAR intrinsics. HPSTDIN_... CI-variables ======================== These variables are intended to be variables that could be set by any type of connection to the HP 3000 system. As such, they are named using a very generic name HPSTDIN_..., only reflecting the fact that the only thing they describe is how and where from the access to file $STDIN was established. Although NS/VT is currently the only subsystem on HP 3000 using these variables, it should be noted that they are intended for wider use and should convey no VT specific information - HPVT_ variables are for that purpose. Should other subsystems desire to convey some of their own internal information in CI-variables, they should allocate their own and start all variable names with "HP" to avoid conflicts with customers' own variables and to conform to HP's predefined CI variables naming conventions. Variable Type Definition Initial Value --------------------- ---- ---------- ------------- HPSTDIN_ACCESS_TYPE S Type of connection used to gain NS/VT access to file $STDIN. Currently only VT sets this variable, i.e. the only setting at this point of time is the initial value. Other values that were discussed for this variable were such as X.25 PAD, DIRECT, MODEM etc., however, no other subsystem than VT currently sets this variable. HPSTDIN_TERMINAL_TYPE S Describes the terminal type as 10 (T_BLOCK(3)) the VTSERVER process sees it (i.e. what has been reported for the terminal type from the remote side) as well as VT's internal terminal type VT has mapped the actual termtype into. Contents of this variable is as follows: NN (text(MM)), where: NN = actual terminal type number shown with MPE/iX - MPE/iX connections, where both machines are running VT- protocol version nine(9) or greater. Set to zero for all other types of clients. This information was added to initial VT-negotiation and was not conveyed in previous versions of VT. VT protocol version 9 was introduced in patches: MPE/iX 4.0 : NSSDDP3 MPE/iX 5.0 pull: NSSDDQ0 MPE/iX 5.0 push: NSSDDQ3 and their successors. text = VT internal mapping to which all terminal types are folded.Possible values: T_UNKNOWN T_BASIC T_SCROLL T_BLOCK T_DATA_ENTRY (from 0..4,correspondingly). MM = internal numeric value corresponding to mapped termtype string(this is the integer value assigned to above enumeration by the pascal compiler). HPSTDIN_TRANSPORT_TYPE S Describes the underlying network TCP/IP transport type used to carry the data between the HP3000 host and the client. Other values that were discussed for this variable were such as ADCP/AFCP (DTS terminal I/O), SPX/IPX (Netware clients), Appletalk (Appletalk clients), SNA (IBM/SNA connections) BSC (IBM/BSC connections) etc. however, no other subsystem than VT currently sets this variable. HPSTDIN_NETWORK_NODE S Describes the name of the node No default. as appropriate depending on the type of network and transport in use (NS, SNA, Netware, Appletalk etc. networks). Note that at the moment no other subsystem than NS/VT sets this variable, i.e. the only type of nodename that will be seen in this variable is what the VT- client sends to the HP 3000 (NS nodenames). HPSTDIN_NETWORK_ADDR S Describes the network address of No default. the $STDIN accessor in a format appropriate to the type of network and transport in use. In case of TCP/IP network (and a VT client), this field will contain the IP-address of the remote computer accessing $STDIN. Note that at the moment no other subsystem than NS/VT sets this variable, i.e. the only type of network address that can be seen in this variable is an IP- address. HPSTDIN_LINK_ADDR S This variable is intended to not set yet... be used for showing the level-1 address of the client (or the closest to HP 3000 host network device) sending link level data frames to the HP 3000. Currently this information is not available to the VTSERVER process and thus the variable is set to "not set yet...". The variable has been allocated so that when/if the network transport makes this information available to a process, this is where it would be stored. The link address should be displayed in format appropriate to the type of networking h/w in use. For LAN networks this CI-variable would contain the station (or MAC) address, for other networks their correspon- ding level-1 address. HPVT_CLIENT_... CI-variables ============================ These variables are specific to NS/VT service and will be set by the VTSERVER process on VT connections only. Variable Type Definition Initial Value --------------------- ---- ---------- ------------- HPVT_CLIENT_VENDOR S Shows the vendor-id that was No default. sent to the VTSERVER process in the first VT negotiation packet from the remote VT-client. As of 3/1996 the following VT- client vendor-id's are known and defined in NS services(5.0 patch level NSSED78A or later): VENDOR_UNDEFINED HEWLETT_PACKARD UNISON_BUSINESS_SESSION_FOR_WINDOWS UNISON_BUSINESS_SESSION_FOR_MACINTOSH WRQ_CONNECTION_3000_FOR_DOS WRQ_CONNECTION_3000_FOR_MACINTOSH WRQ_CONNECTION_3000_FOR_WINDOWS SLC_IX_CONNECT_FOR_HPUX SLC_IX_CONNECT_FOR_SCO_UNIX SLC_IX_CONNECT_FOR_SUN MINISOFT_FOR_DOS MINISOFT_FOR_WINDOWS_16_BIT MINISOFT_FOR_WINDOWS_32_BIT ATTACHMATE_0 HPVT_C ...all the way to ATTACHMATE_9 HPVT_CLIENT_OPSYS S Shows the operating system on No default. top of which the remote VT- client reports to be running. The following operating systems are recognized in NS/VT service: CLIENT_OS_UNKNOWN MPE_IX, MPE_VE RTE UNIX, BASIC MS_DOS IBM MACINTOSH_OS SUNOS4 SUNOS5 SCO_UNIX Note that this item (as well as some other ones) gets set to what the client reports to the VTSERVER, i.e. if the client sends us incorrect information, that will be shown here as sent from the client. The VTSERVER has no way of finding out what the real value is/should be. Also,in addition to the OS type, MPE/iX - MPE/iX connections with VT protocol version 9 or greater also communicate the OS user version and the processor type the OS is running on. For example, a possible value for MPE/iX-MPE/iX connection is: "MPE_IX C.50.00 - SERIES 967SX" HPVT_CLIENT_MODE S Shows the type of the VT-client No default. in use. This variable gets set to indicate whether the connec- tion was established through the VT stream-mode TCP SAP (port #1570), or the message-mode SAP (#1537). Possible values are: MESSAGE_MODE STREAM_MODE HPVT_CLIENT_TCP_PORT S Shows the TCP SAP (port#) that No default. was allocated on the client side for this VT connection. This number is also known as the socket address in use. Values in this string variable are in range of legal socket addresses, i.e. positive short (16 bit) integers 1..65535. The variable contains an ASCII representation of the shortposint value. HPVT_CLIENT_LDEV_NUM S Valid only when the client is No default. another MPE/iX system running VT protocol version 9 or greater. When set, this variable reports the MPE logical device (LDEV) number in use on the remote side for the session connecting to this machine. This can be used to trace back to the initiator of the session. HPVT_CLIENT_JOB_NUM S Valid only when the client is No default. another MPE/iX system running VT protocol version 9 or greater. When set, this variable reports the session or job number on the remote machine that initiated this VT-session. This can be used to trace back to the initiator of the session. HPVT_CLIENT_JOB_NAME S Valid only when the client is No default. another MPE/iX system running VT protocol version 9 or greater. When set, this variable reports the session or job name on the remote machine that initiated this VT-session. This can be used to trace back to the initiator of the session.