P4PORT

For the Perforce service (server, broker, or proxy), the port number on which it listens, and the network transport(s) to which it is to bind.

For Helix Server applications, the protocol, host and port number of the Perforce service with which to communicate. The most commonly-used communications protocols are tcp (plaintext over TCP/IP) or ssl (SSL over TCP/IP).

Helix Server supports connectivity over IPv6 networks as well as over IPv4 networks. You can specify whether you require (or prefer) to use IPv4 or IPv6 addresses when resolving hostnames. The protocol settings of tcp4 and ssl4 require IPv4 address support. Similarly, tcp6 and ssl6 require IPv6 support. Using tcp64 and ssl64 attempts first to resolve the host to an IPv6 address, but will accept an IPv4 address if IPv6 is not available. The opposite behavior is available with tcp46 and ssl46; these default to the use of IPv4 if possible, and use IPv6 if IPv4 is unavailable. A configurable, net.rfc3484, may be set on user workstations or in P4CONFIG files in order to permit the operating system to automatically determine which transport to use.

Behavior and performance of networked services depend on:

  • the networking capabilities of the machine that hosts the service
  • the operating systems used by the end users
  • your specific LAN and WAN infrastructure (and the state of IPv6 support for every router between the end user and the Helix Core Server).

Suppose a user is working from home with an IPv6-based home network, but the ISP or VPN provider does not fully support IPv6. Variations of P4PORT provide flexibility and backwards compatibility for administrators and users during the transition from IPv4 to IPv6:

P4PORT protocol value Behavior in IPv4/IPv6 or mixed networks

<not set>

Use tcp4: behavior, but if the address is numeric and contains two or more colons, assume tcp6: If the net.rfc3484 configurable is set, allow the OS to determine which transport is used.

tcp:

Use tcp4: behavior, but if the address is numeric and contains two or more colons, assume tcp6: If the net.rfc3484 configurable is set, allow the OS to determine which transport is used.

tcp4:

Listen on/connect to an IPv4 address/port only.

tcp6:

Listen on/connect to an IPv6 address/port only.

tcp46:

Attempt to listen/connect to an IPv4 address. If this fails, try IPv6.

tcp64:

Attempt to listen/connect to an IPv6 address. If this fails, try IPv4.

ssl:

Use ssl4: behavior, but if the address is numeric and contains two or more colons, assume ssl6: If the net.rfc3484 configurable is set, allow the OS to determine which transport is used.

ssl4:

Listen on/connect to an IPv4 address/port only, using SSL encryption.

ssl6:

Listen on/connect to an IPv6 address/port only, using SSL encryption.

ssl46:

Listen on/connect to an IPv4 address/port. If that fails, try IPv6. After connecting, require SSL encryption.

ssl64:

Listen on/connect to an IPv6 address/port. If that fails, try IPv4. After connecting, require SSL encryption.

Tip

In mixed environments, it is good practice to set the net.rfc3484 configurable to 1:

$ p4 configure set net.rfc3484=1

Doing so ensures RFC3484-compliant behavior for users who do not explicitly specify the protocol value. In other words, if the client-side configurable net.rfc3484 is set to 1, and P4PORT is set to example.com:1666, or tcp:example.com:1666, or ssl:example.com:1666, the user’s operating system determines whether to use IPv4 or IPv6 transport for a given connection.

Note

The 2021.2 release has a new type of certificate handling, such that p4 trust is no longer required for SSL connects where the server provides a certificate that is not self-signed and can be verified by the client.

For self-signed certificates, unvalidated certificates, and clients prior to 2021.2, if you used SSL to connect to Helix Server, the fingerprint of the Helix Server needed to match the fingerprint stored in the P4TRUST file. When you connected to a new Helix Server installation for the first time, the server’s fingerprint was displayed. If the displayed fingerprint matched the fingerprint your administrator had assigned, you could safely connect to the server by using the p4 trust command to add the server to your P4TRUST file.

Usage Notes

Used by Client? Used by Server? Command-Line Alternative Can be set in P4CONFIG file?

Yes

Yes

p4 -p protocol:host:port command

such as

p4 -p tcp64:perforce:1666 info

Yes

Value if not Explicitly Set

Program Value

Helix Server

1666

Helix Proxy

1666

Helix Server application

perforce:1666

Examples

Helix Server application Service

1818

1818

ssl:squid:1234

ssl:1234

example.com:1234

1234

ssl:192.168.0.123:1818

ssl:1818

tcp6:[2001:db8::123]:1818

tcp6:[::]:1818

tcp6:example.com:1818

tcp6:[::]:1818

ssl64:[2001:db8::123]:1818

ssl6:[::]:1818ssl64:[::]:1818

Notes

The format of P4PORT for Helix Server applications is protocol:host:port, or port by itself if both the Helix Server application and versioning service are running on the same host. Port numbers must be in the range 1024 through 32767.

If you specify both an IP address and a port number in P4PORT, the versioning service ignores requests from any IP addresses other than the one specified in P4PORT.

If you do not specify a protocol, transmissions between the Helix Server applications and the versioning service are performed in plaintext, and IPv4 addresses are assumed.