You are here: Foswiki>Frontend Web>UFSserver (13 Apr 2012, UdoKrause)Edit Attach

Introduction

Originally, the GSI control system was implemented on OpenVMS exclusively. To provide access to devices from other platforms, a TCP/IP connection to a server on an OpenVMS node was implemented. The TCP/IP client is avalible for Linux (and other Unix-platforms) and for Windows.

Outline

Requests for connection to the VMS server is handled by a manager process, the UFSMGR. The UFSMGR is running on two nodes (AXP703 and AXP704). Connection to the UFSMGR is by port 4326.

Conection to the control system must be granted. The UFSMGR process checks client's IP address and the client's user name. Rights are coded in the file sis$root:[sec]ufsuaf01.sec, which is generated by the command file ufsuaf.com from the definition file ufsuaf01.dat (both are located in sis$root:[sec.uti]). Access specification in ufsuaf01.dat provides to tranfer the client's user name to another username which is used on OpenVMS. When access to the control system is granted, UFSMGR starts a process UFS_<user-name>_<identification letter>, which handles the device access:
  • Each connection to the GSI control system results in a dedicated process
  • The process is running under the user identifier which is given by the user name of the client process (Linux, Windows) or its transformation as specified in the ufsuaf01.dat specification. The user name of the server process is attached to the prefix UFS_.
  • To uniquely identify the server processes of a client, each such server process is extended by a letter (_A .. _Z).
  • A maximum of 26 server processes are possible for each client process.
Access to the devices is implemented by Userface. This presently means, that requests to devices are re-routed by userface to the ufcserver, running under Linux. Since direct access to devices in the GSI control system is nowadays possible from Linux as well as from Windows clients, using of the old UFS-server connection is strongly discouraged. However, the UFS-server will be provided for some time until all applications are transferred to the devacc access to devices.

The manager process UFSMGR as well as the UFS_<user-name>_<identification letter> server processes log, by a logger process UFSLOG , into files <date>.ufs in the node specific log directories of the AXP703 and AXP704 (sislocal$root:[log.node03], sislocal$root:[log.node04]).

Details

The UFS server handles only synchronous access.

An introduction into the syntax of the rights specification can be found in the header of the ufsuaf01.dat file.

The code for the manager and the server process, and the the client, is hold in the OpenVMS CMS code repository sis$root:[ufc.cms] in the group UFS. The client code (ufsacc.c) is plain C. Manager, server and logger process, writtten in C++, can be generated by the module management system, using the makefile ufs.mms (see the heading of the ufs.mms file for the command syntax).

Error Codes Client

Functions in the client request interface in general return an error code.
Successfull operation:
code predefined constant meaning
0 UFS_EXIT_NORMAL UFS finished successfully
Errors in client/server communication: error codes < 0:
code predefined constant meaning
-1 UFS_EXIT_CORRUPT fatal client server handshake error
-2 UFS_EXIT_VERSION_DIFFER version client/server incompatible
-3 UFS_EXIT_WSA_STARTUP Windows: error in WSAStartup
-4 UFS_EXIT_SOCKET_STARTER server start: cannot create socket
-5 UFS_EXIT_CONN_STARTER server start: cannot connect
-6 UFS_EXIT_SEND_STARTER server start: cannot send
-7 UFS_EXIT_SERVER_START cannot create server process
-8 UFS_EXIT_SOCKET cannot create socket to server
-9 UFS_EXIT_CONNECT cannot connect to server
-10 UFS_EXIT_NO_ACCESS_SERVER access to server not allowed
-11 UFS_EXIT_RESPONSE tcp error read response from server
-12 UFS_EXIT_SEND tcp error during send to server
-13 UFS_EXIT_STOP_SERVER server not accessible
-14 UFS_EXIT_DATA_PARA_SIZE to many parameter or send-data
-15 UFS_EXIT_MAX_CONN_CNT to many connections
Errors in userface device access: Error codes > 0 (UFS_access only):
code predefined constant meaning
1 UFS_EXIT_UFC_ERROR userface error, see ufc status
2 UFS_EXIT_USR_ERROR error in usr execution
10 UFS_EXIT_NO_ACCESS_DEVICE 10 no access to device
11 UFS_EXIT_OFFLINE device is offline
12 UFS_EXIT_TIMEOUT timeout during device access
13 UFS_EXIT_UNKNOWN_NOMEN unknown nomenclature
14 UFS_EXIT_UNKNOWN_PROP unknown property/propclass
15 UFS_EXIT_VIRT_ACCEL illegal virtual accelerator
16 UFS_EXIT_DATACOUNT more receive data than requested
17 UFS_EXIT_DATA_CONVER cannot convert data to/from device format
18 UFS_EXIT_PARA_CONVER cannot convert para to device format
Topic revision: r2 - 13 Apr 2012, UdoKrause
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback