Product Documentation

Database Administrator's Guide

Previous Topic

Next Topic



COMM_PROTOCOL F_TCPIPV6 (using an IPv6 socket)



Specifies a communications module loaded by the server. See FairCom Server Installation for the communications options available for your platform.

If COMM_PROTOCOL is not specified, the default protocol is used.

The default protocol is disabled when the COMM_PROTOCOL keyword is used. If the default protocol is required in addition to other protocols, use the technique described below to specify multiple protocols.

Note: The COMM_PROTOCOL option specifies the protocol used for ISAM connections. By default, local SQL connections use shared memory unless the SQL_OPTION NO_SHARED_MEMORY keyword is specified. See the c-treeSQL Server Operations and Utilities Guide for more information about the communication protocol for SQL connections.

V12: Default to IPv6 in Windows when TCP/IP is Selected

When the user selects TCP/IP, the FairCom build system now defaults to enabling IPv6 instead of only IPv4. This change makes this Internet protocol available by default to ensure your applications have support for the latest standards.

To begin using IPv6 support, you must enable the TCP/IP communication protocol support on the FairCom DB Server side by making sure this keyword is enabled in ctsrvr.cfg:


It is possible to have both IPv4 and IPv6 support enabled at the same time.

IPv4 and IPv6

Native SQL clients on Windows will attempt to connect to the first address (IPv4 or IPv6) resolved for the host.

Note: In V11, IPv6 is supported on Windows and Linux. Java and ADO.NET SQL clients currently support only IPv4. Explicit IPv6 addresses in client connection strings are not currently supported.

Server keyword SQL_OPTION NO_IPV6 can be added to ctsrvr.cfg to accept only IPv4 connections. This is not generally recommended and is more likely to cause connection issues than to solve them.

Note: The COMM_PROTOCOL F_TCPIPV6 keyword is commented out in the default ctsrvr.cfg file. Be sure to remove the comment symbol (the semicolon - ;) before trying to use this support.

An environment variable can be used for native clients to request only IPv4 address: CTSQL_IPV4_ONLY. Setting this variable to any value in the environment will effectively disable IPv6 connection attempts from the client. This may be needed on networks where both IPv4 and IPv6 are enabled, but the c-tree SQL server does not accept IPv6 connections.

Default Protocol Override

An application can override the default protocol by specifying the protocol in the connection string with the following syntax:




Shared Memory

On Windows, FairCom Server can automatically detect and utilize shared memory when a TCP/IP client is in use. Include COMM_PROTOCOL FSHAREMM in the ctsrvr.cfg file for this to be triggered.

Multiple Protocols

FairCom Server on Windows, Linux, AIX, and Solaris (both SPARC and X86/X64) can support TCP/IP and shared memory simultaneously. For example, FairCom Server could be communicating with some users locally through shared memory and others using TCP/IP over an Ethernet connection.

Each protocol to be loaded by the FairCom Server requires a separate COMM_PROTOCOL line in the configuration script. The following example loads TCP/IP and Shared Memory Model protocols:



To support both IPv4 and IPv6 in the same FairCom DB Server, list the following keywords:


Note: If more than one protocol is to be used, a separate COMM_PROTOCOL entry must be specified for each protocol.

TCP/IP Encryption

Encryption of c-tree’s TCP/IP communication protocol allows an added level of security for client/server applications. FairCom DB supports TLS/SSL, as described in Transport Layer Security Secures Data in Transit between Network FairCom DB Clients and Servers.

Note: The FETCPIP protocol activates CAMO, which should be considered deprecated. CAMO or "Camouflage" is an older, legacy method of hiding data, which is not a standards-conforming encryption scheme, such as AES. It is not intended as a replacement for Advanced Encryption or other security systems.

Identifying the FairCom Server Host Machine

Every protocol makes assumptions about the location of the machine hosting the FairCom Server. Use the following table to determine the proper method for the client to find the FairCom Server based on the protocol selected. SERVER_NAME is the name specified by the SERVER_NAME keyword, FAIRCOMS by default.

HostName is the network ID for the host machine. It can also be an IP address with TCP/IP.


Default host

Specifying a host

Shared Memory

Local Machine

Only default can be used


Localhost (


Disable Communications

COMM_PROTOCOL DISABLE inactivates all communications.

When this keyword is specified in the FairCom Server configuration file, the server’s communication subsystem is disabled at server startup, and remains disabled during the entire lifetime of the server process. This feature is useful when the FairCom Server is loaded as a DLL or shared library into an application server process. Although external clients are prevented from using the FairCom Server, threads in the application server process can use the FairCom Server subsystem. This option can also be used to prevent ISAM-level access to a FairCom DB SQL Server.

When this option is in effect, the server logs the following message to CTSTATUS.FCS:

FairCom DB Server communication subsystem is disabled.

Default: All servers load TCP/IP as the default.

See Also:

Previous Topic

Next Topic

Shared Memory Resource Considerations

An established shared memory connection can fail and be terminated in case of low shared memory resources.

Please consider the following case:

One of the peers of a shared memory connection may need to require a larger shared memory region (for example, it may need to exchange a message larger than the current shared memory region). The client or server can make a system call to allocate a new shared memory region. The call could fail due to a system limit. In this case, the connection can fail and be terminated.

It is recommended to increase the system's shared memory limits to avoid unexpected shared memory connections terminations.

This is a sample message that you might see in CTSTATUS.FCS if you are running low on memory:

User# 00017 FSHAREMM: Failed to create a semaphore set: 28

For more information about shared memory, see Shared Memory Client-Server Communication for Unix/Linux in the FairCom Server Administrator's Guide.

Previous Topic

Next Topic

Shared Memory Protocol Change

A change has been made in V11.5 and newer to the FairCom DB shared memory client-side code to return the FairCom DB sysiocod value if the shared memory connection fails due to incompatibility. In this case, a message similar to the following will be written to the log:

The client's shared memory version (3) is not compatible with the server's shared memory version (4)

The values shown in parentheses indicate the shared memory protocol versions. The message above means that the client is using version 3 of the client protocol and the server requires version 4.

The following messages may appear as warning symptoms:

Mon Jul 2 10:51:05 2018

- User# 00001 FSHAREMM: Protocol version: server=3 client=4

Mon Jul 2 10:51:29 2018

- User# 00020 FSHAREMM: The client's shared memory version (3) is not compatible with the server's shared memory version (4)

Note: SQL communication is NOT included in this change.

Two situations may be encountered that will not fall back to TCP/IP:

  1. On Windows, it is possible for a shared memory connection attempt to return error SHMP_ERR (978) due to insufficient permission.
  2. On Unix (and some very old Windows clients), it is possible for a shared memory connection attempt to return error SHMC_ERR (841) due to client/server using incompatible shared memory protocol versions.

Both of the above situations are different from the standard error 133 ("server not listening"), which would be retried using TCP/IP.

Compatibility Note: This change is considered a compatibility change as the shared memory communication protocol may not automatically fail over to TCP/IP support if the cause of the shared memory connection failure is permission related.