This document describes how clients in the OpenVault system negotiate with the MLM Core to determine which of the OpenVault languages they would like to use, and which version of that language.
An overview of that negotiation is that when a client connects to the MLM Core, it announces which language it intends to use, and which versions of that language it understands. The MLM Core then picks one of those versions and tells the client that they will be using that version during the current session.
Both messages are sent as simple ASCII text in a normal TCP socket (albeit with a bit more complexity if message integrity coding is enabled, see Interprocess Communication and Authentication for more information). Unlike the ALI, ADI, CAPI, or AAPI languages this interchange has no additional structure, there are no phases (eg: no command, ack, or data phases).
| hello |
The hello command
is designed to implement a language and language version negotiation scheme.
An external client will use the hello command to announce itself
to the MLM Core.
It will include in that command
the name of the language it would like to speak,
a list of the different version numbers of that language that it supports,
a name for itself as an application,
and a name for itself as a particular instance of an application.
LCPs and DCPs will use the OpenVault name of the device that they control as their application name. |
| welcome | The welcome command is designed to tell the client which version of the given language the MLM Core has decided to use when talking to that client. After the external client has announced itself to the MLM Core via an appropriately filled in hello command, the MLM Core will respond with a welcome command. That command will specify which of the language versions named in the hello command the MLM Core will be using during this session. |
| unwelcome | The unwelcome command is designed to tell the client that none of the combinations of language and language version it provided are supported by this MLM Core. After the external client has announced itself to the MLM Core via a hello command, the MLM Core may respond with an unwelcome command if the language name is unknown or none of the language versions supported by the client are supported by the MLM Core. There is both a machine-understandable error token and a set of text strings to display for the user. |
| language | A language name is the name of the language that the client would like to use when talking to the MLM Core. It can (currently) be one of the following: "ALI", "ADI", "CAPI", or "AAPI". |
| versions | A version number is a string identifying a particular revision of the named language. A hello command can specify multiple versions, meaning that the client is prepared to speak any of the named versions with the MLM Core. Examples of version numbers include: "1", "1.0", and "2.1". |
| client |
A client name is a text string that tells the MLM Core
the application's name; an example might be "NetWorker".
LCPs and DCPs will use the OpenVault name of the device that they control as their client name. An LCP example might be "robbie" while a DCP example might be "firstDLT" and a PROXY example might be "fileserver1". |
| instance |
An instance clause is a text string that tells the MLM Core the
name of the particular ocurrence of the application.
For example, if the application name were "NetWorker", the instance name
might be the name of the host it is running on or the name of the
department being backed up.
Another example might be a system with two possible connections to a high-speed tape drive that would like to run a separate DCP for each of those connections. Each DCP would have a client of the drive name, but each would have a different instance name so that the core could tell them apart. |
| error token | This is part of an unwelcome response from the MLM Core. An error token is one of a set of predefined text strings corresponding to the error that occurred. For example: "EBADLANGUAGE" or "EBADVERSION". |
| error text string | This is part of an unwelcome response from the MLM Core. An error text string is a free format text string that expresses the same error shown in the error token in a human-readable format. For example: "The language name is not recognized". |
| helloStmt: | "hello" <helloArgs>+ ";" |
| helloArgs: | <helloLangSpec> | <helloVersionSpec> | <helloClientSpec> | <helloInstanceSpec> |
| helloLangSpec: | "language" "[" <SHORTSTRING(languageName)> "]" |
| helloVersionSpec: | "versions" "[" <SHORTSTRING(versionNumber)>+ "]" |
| helloClientSpec: | "client" "[" <SHORTSTRING(clientNameOrDeviceName)> "]" |
| helloInstanceSpec: | "instance" "[" <SHORTSTRING(instanceName)> "]" |
| response: | <welcomeStmt> | <unWelcomeStmt> |
| welcomeStmt: | "welcome" "version" "[" <SHORTSTRING(versionNumber)> "]" ";" |
| unWelcomeStmt: | "unwelcome" <unWelcomeArgs>+ ";" |
| unWelcomeArgs: |
"error" "[" <SHORTSTRING(errorToken)> "]" |
"text" "[" <STRING(text of message)> "]" |