Skip to main content
Kofax

Equitrac Office / Express - SLP Implementation Information

Information:

Service Location Protocol (SLP) is an Internet Engineering Task Force (IETF) standards track protocol that provides a framework to allow networking applications to discover the existence, location, and configuration of networked services in enterprise networks.

 

Nuance uses this standard within Equitrac Office / Equitrac Express in both the server and the workstation client to enable job look-up functionality.

 

During the installation of Equitrac a SLP.CONFIG file is created in the <PROGRAM FILES>\Equitrac\<Office\Express>\SLP\ folder. When at start-up of the SLP service this file does not exist in the user profile folder (<USERPROFILE>\APPDATA\LOCAL\EQUITRAC\) of the service account, it will be created in this folder.

 

EQSLPTOOL

The <PROGRAM FILES>\Equitrac\<Office\Express>\SLP folder also contains a tool called EQSLPTOOL.EXE. Using this tool a number of tests can be done to see if the SLP is functioning properly.

 

Usage: eqslptool [options] command-and-arguments options may be:

-v (or --version) displays the versions of slptool and OpenSLP.

-s (or --scope) followed by a comma-separated list of scopes.

-l (or --language) followed by a language tag.

-t (or --time) followed by a lifetime tag.

-c (or --config) followed by file name.

-i (or --interfaces) followed by a comma-separated list of interfaces.

-u (or --unicastifc) followed by a single interface.

command-and-arguments may be:

findsrvs service-type [filter]

findattrs url [attrids]

findsrvtypes [authority]

findscopes

register url [attrs]

deregister url

getproperty propertyname

Examples:

slptool register service:myserv.x://myhost.com "(attr1=val1),(attr2=val2)"

slptool findsrvs service:myserv.x

slptool findsrvs service:myserv.x "(attr1=val1)"

slptool -i 10.77.13.240,192.168.250.240 findsrvs service:myserv.x

slptool -u 10.77.13.237 findsrvs service:myserv.x "(attr1=val1)"

slptool findattrs service:myserv.x://myhost.com

slptool findattrs service:myserv.x://myhost.com attr1

slptool -i 10.77.13.243 findattrs service:myserv.x://myhost.com attr1

slptool -u 10.77.13.237 findattrs service:myserv.x://myhost.com attr1

slptool deregister service:myserv.x://myhost.com

slptool getproperty net.slp.useScopes

 

Usage of the EQSLPTOOL

Using this tool you can find out a number of things about the Equitrac installation and the SLP configuration.

To see what scopes are configured in the slp.config file, use the following command:

 

eqslptool findscopes

Please note that all the example commands below will use the scope(s) defined in the command above (unless specified differently).

 

To see all servers who act as a "Directory Agent" use the following command:

eqslptool findsrvs service:directory-agent

Note: Only CAS servers should be configured as a Directory Agent when using Equitrac.

 

To see all servers who registered as an "Equitrac CAS server" use the following command:

eqslptool findsrvs service:accounting.equitrac:https

 

To see their IP and registered version number, use the following command:

eqslptool findattrs service:accounting.equitrac:https

 

To see all servers who act as an "Equitrac DRE server" use the following command:

eqslptool findsrvs service:printjobs.equitrac:storage:xps:https

 

Other service types are:

 

EQUITRAC

CAS service:accounting.equitrac:https

DRE service:printjobs.equitrac:storage:xps:https

 

OPENSLP

DA service:directory-agent

SA service:service-agent

UA service:user-agent

 

IANA

FTP service:ftp

TELNET service:telnet

 

To find out what users have jobs on what DRE issue the following command:

eqslptool findattrs service:printjobs.equitrac:storage:xps:https

Note: This will show all the DRE's having jobs and for what users. Not how many jobs a particular user has on what server.

 

The slp.conf File The slp.conf file syntax is very simple. OpenSLP follows the syntax specified in RFC 2614 which is simply a list of key/value pairs separated by newlines; comment lines begin with a '#' or a ';'. Take a look at it or read the RFC if you need more details.

 

Settings

The following is a list of settings that are supported by OpenSLP:

 

net.slp.useScopes

This option is a comma delimited list of strings indicating the only scopes a UA or SA is allowed when making requests or registering or the scopes a DA must support. The default value is "DEFAULT".

net.slp.DAAddresses

Allows administrator to force UA and SA agents to use specific DAs. If this setting is not used dynamic DA discovery will be used to determine which DAs to use. Default is to use dynamic DA discovery.

net.slp.interfaces

A comma-separated list of interfaces (local IP addresses) that will be used. This parameter is optional for the UA, but required for an SA or DA to operate properly. Both IPv4 and IPv6 addresses may be specified. While site-local and global IPv6 addresses are allowed, a DA or SA can only receive IPv6 multicast on link-local addresses.

net.slp.broadcastAddr

This option is a string indicating the broadcast address to use when sending broadcast packets. This parameter is only applicable when the other broadcast configuration variables are set. The default value is "255.255.255.255".

net.slp.isBroadcastOnly

Force broadcasts to be used instead of multicast. This setting is seldom necessary since OpenSLP will automatically use broadcast if multicast is unavailable. Default is false.

net.slp.passiveDADetection

A boolean indicating whether passive DA detection should be used. Default is true.

net.slp.DAActiveDiscoveryInterval

A 16 bit positive integer giving the number of seconds between DA active discovery queries. Default is 900 seconds (15 minutes). If the property is set to zero, active discovery is turned off. This is useful when the DAs available are explicitly restricted to those obtained from DHCP or the net.slp.DAAddresses property.

net.slp.multicastTTL

A positive integer that is less than or equal to 255. The default is 255.

net.slp.multicastMaximumWait

An integer giving the maximum amount of time (in milliseconds) to perform multicast requests. Default is 15000 ms or 15 secs.

net.slp.unicastMaximumWait

An integer giving the maximum amount of time (in milliseconds) to perform unicast requests. Default is 15000 ms or 15 secs.

net.slp.randomWaitBound

An integer giving the maximum value for all random wait parameters. Default is 1000 or 1 sec.

net.slp.MTU

A integer giving the network packet MTU in bytes. Default is 1400 bytes.

net.slp.interfaces

A list of IP address of network interfaces on which the DA/SA should listen for slp requests. By default, OpenSLP will use all interfaces.

net.slp.securityEnabled

Indicates whether all agents should use authentication blocks.

net.slp.locale

A RFC 1766 Language Tag [6] for the language locale. Setting this property causes the property value to become the default locale for SLP messages. Default is "en". This property is also used for SA and DA configuration.

net.slp.maxResults

A 32 bit integer giving the maximum number of results to accumulate and return for a synchronous request before the timeout, or the maximum number of results to return through a callback if the request results are reported asynchronously.

net.slp.isDA

A boolean indicating if the SLP server is to act as a DA. If false, not run as a DA. Default is false.

net.slp.DAHeartBeat

A 32 bit integer giving the number of seconds for the DA heartbeat. Default is 3 hours (10800 seconds). Ignored if net.slp.isDA is false.

net.slp.DAAttributes (currently ignored)

A comma-separated list of parenthesized attribute/value list pairs that the DA must advertise in DAAdverts. The property must be in the SLP attribute list wire format, including escapes for reserved characters. [7]

net.slp.useIPV4

This parameter specifies whether or not IPv4 should be used for SLP. This parameter defaults to true.

net.slp.useIPV6

This parameter specifies whether or not IPv6 should be used for SLP. This parameter defaults to true.

Divergence from RFC 2614

OpenSLP does not support all of the settings that are specified by RFC 2614. The reasons for not supporting some of the settings range from the implementors' opinions that they are either not useful or very difficult to implement with regard to their usefulness. The following is a list of options that OpenSLP has no plans to support.

net.slp.serializedRegURL

slpd accepts the [-r] command line parameter that specifies the serialized registration file to use.

net.slp.multicastTimeouts

OpenSLP does not honor this parameter. Currently multicast timeouts are generated internally based on the net.slp.multicastMaximumWait parameter.

net.slp.DADiscoveryTimeouts

OpenSLP does not honor this parameter. Currently multicast timeouts are generated internally based on the net.slp.multicastMaximumWait parameter.

net.slp.datagramTimeouts

OpenSLP does not honor this parameter. Currently unicast timeouts are generated internally based on the net.slp.unicastMaximumWait parameter.

 

SLP Error Codes

 

Name

 

Value

 

Description

SLP_LAST_CALL

1

Passed to callback functions when the API library has no more data for them and therefore no further calls will be made to the callback on the currently outstanding operation. The callback can use this to signal the main body of the client code that no more data will be forthcoming on the operation, so that the main body of the client code can break out of data collection loops. On the last call of a callback during both a synchronous and synchronous call, the error code parameter has value SLP_LAST_CALL, and the other parameters are all NULL. If no results are returned by an API operation, then only one call is made, with the error parameter set to SLP_LAST_CALL.

SLP_OK

0

Indicates that the no error occurred during the operation.

SLP_LANGUAGE_NOT_SUPPORTED

-1

No DA or SA has service advertisement or attribute information in the language requested, but at least one DA or SA indicated, via the LANGUAGE_NOT_SUPPORTED error code, that it might have information for that service in another language

SLP_PARSE_ERROR

-2

The SLP message was rejected by a remote SLP agent. The API returns this error only when no information was retrieved, and at least one SA or DA indicated a protocol error. The data supplied through the API may be malformed or a may have been damaged in transit.

SLP_INVALID_REGISTRATION

-3

The API may return this error if an attempt to register a service was rejected by all DAs because of a malformed URL or attributes. SLP does not return the error if at least one DA accepted the registration. The deregistered service url does not conform to valid service url syntax. The service url being deregistered is not registered this means that either it was never registered via a call to SLPReg() or that the registration lifetime has expired. SLP_INVALID_REGISTRATION is commonly returned when an attempt is made to deregister a service that was registered by a call to SLPReg() on a different host.

SLP_SCOPE_NOT_SUPPORTED

-4

The API returns this error if the SA has been configured with net.slp.useScopes value-list of scopes and the SA request did not specify one or more of these allowable scopes, and no others. It may be returned by a DA or SA if the scope included in a request is not supported by the DA or SA.

SLP_AUTHENTICATION_ABSENT

-6

If the SLP framework supports authentication, this error arises when the UA or SA failed to send an authenticator for requests or registrations in a protected scope.

SLP_AUTHENTICATION_FAILED

-7

If the SLP framework supports authentication, this error arises when a authentication on an SLP message failed

SLP_INVALID_UPDATE

-13

An update for a non-existing registration was issued, or the update includes a service type or scope different than that in the initial registration, etc.

SLP_REFRESH_REJECTED

-15

The SA attempted to refresh a registration more frequently than the minimum refresh interval. The SA should call the appropriate API function to obtain the minimum refresh interval to use.

SLP_NOT_IMPLEMENTED

-17

If an unimplemented feature is used, this error is returned.

SLP_BUFFER_OVERFLOW

-18

An outgoing request overflowed the maximum network MTU size. The request should be reduced in size or broken into pieces and tried again.

SLP_NETWORK_TIMED_OUT

-19

When no reply can be obtained in the time specified by the configured timeout interval for a unicast request, this error is returned.

SLP_NETWORK_INIT_FAILED

-20

If the network cannot initialize properly, this error is returned. Will also be returned if an SA or DA agent (slpd) cannot be contacted. See SLPReg() and SLPDeReg() for more information.

SLP_MEMORY_ALLOC_FAILED

-21

Out of memory error

SLP_PARAMETER_BAD

-22

If a parameter passed into a function is bad, this error is returned.

SLP_NETWORK_ERROR

-23

The failure of networking during normal operations causes this error to be returned.

SLP_INTERNAL_SYSTEM_ERROR

-24

A basic failure of the API causes this error to be returned. This occurs when a system call or library fails. The operation could not recover.

SLP_HANDLE_IN_USE

-25

In the C API, callback functions are not permitted to recursively call into the API on the same SLPHandle, either directly or indirectly. If an attempt is made to do so, this error is returned from the called API function.

SLP_TYPE_ERROR

-26

If the API supports type checking of registrations against service type templates, this error can arise if the attributes in a registration do not match the service type template for the service