PMC(8)

πŸ“¦
version 4.4 Β· 4 versions
, in arch rolling, centos-stream 9, fedora 43, nixpkgs unstable, opensuse-leap 16.0, ubuntu resolute, ubuntu stonking

πŸ’– PMC(8) β€” like, the PTP management client, bestie πŸ’–

okay so this is pmc from the System Manager's Manual β€” your cute lil' PTP management client, and I'm gonna walk you through it like we're texting at 2am. πŸ¦‹


✨ NAME ✨

pmc β€” the PTP management client. that's it, that's the name, she's simple and she knows it πŸ’…


✨ SYNOPSIS ✨

pmc [ -f config-file ] [ -2 | -4 | -6 | -u ] [ -b boundary-hops ] [ -d
domain-number ] [ -i interface ] [ -s uds-address ] [ -t transport-
specific-field ] [ long-options ] [ -v ] [ -z ] [ command ] ...

✨ DESCRIPTION ✨

pmc is a program that implements a PTP management client, following the IEEE standard 1588. She reads from standard input, or from actions you give her on the command line (specified by name and management ID), sends those over whichever transport you picked, and then prints out any replies she gets back. πŸ“¬

There are three actions she supports:

  • GET β€” retrieves the info you asked for
  • SET β€” updates the info you asked for
  • CMD (or COMMAND) β€” kicks off the event you asked for

By default, the management commands get addressed to all ports. If you wanna get specific, the TARGET command lets you pick a particular clock and port for all the messages that come after it. 🎯

And if you're ever lost? Command help will hand you a list of the supported actions and management IDs. no cap, it's right there. 🫢


✨ OPTIONS ✨

  • -f config-file β€” read configuration from the file you name. By default, no configuration file is read at all. nada. zero. πŸ™ˆ
  • -2 β€” select the IEEE 802.3 network transport.
  • -4 β€” select the UDP IPv4 network transport. This one is the default, bestie, so if you don't say anything, this is what you get. ✨
  • -6 β€” select the UDP IPv6 network transport.
  • -u β€” select the Unix Domain Socket transport.
  • -b boundary-hops β€” set the boundary hops value in the messages she sends. Default is 1.
  • -d domain-number β€” set the domain number in the messages she sends. Default is 0.
  • -i interface β€” set the network interface. Default is /var/run/pmc.$pid for the Unix Domain Socket transport, and eth0 for all the other transports.
  • -s uds-address β€” sets the address of the server's UNIX domain socket. Default is /var/run/ptp4l.
  • -t transport-specific-field β€” set the transport specific field in the messages she sends, written as a hexadecimal number. Default is 0x0.
  • -h β€” display a help message. πŸ†˜
  • -v β€” prints the software version and then exits. bye πŸ‘‹
  • -z β€” okay so the official interpretation of the 1588 standard mandates sending GET actions with valid (but honestly meaningless) TLV values. So pmc normally sends GET requests with properly formed TLV values. This option flips on the legacy behaviour of sending zero length TLV values instead. old-school, but make it ✨

✨ LONG OPTIONS ✨

Every single configuration file option (see the PROGRAM OPTIONS and PORT OPTIONS sections below) can also show up as a "long" style command line argument. Like, for example, the transportSpecific option can be set with either of these two forms:

--transportSpecific 1   --transportSpecific=1

Option values you give on the command line override values in the global section of the configuration file (which, in turn, overrides the default values). hierarchy, but make it fashion. πŸ‘‘


✨ CONFIGURATION FILE ✨

The configuration file is split into sections. Each section starts with a line containing its name wrapped in brackets, and then the settings follow. Every setting goes on its own separate line, and it's got the name of the option plus the value, separated by whitespace characters. Empty lines and lines starting with # get ignored. 🚫

The global section (written as [global]) sets the global program options and the default port specific options. The other sections are port specific sections, and they override the default port options. The name of the section is the name of the configured port (e.g. [eth0]). 🌸


✨ PROGRAM OPTIONS ✨

  • domainNumber β€” the domain attribute of the local clock. The default is 0.
  • sa_file β€” specifies the location of the file containing Security Associations used for immediate security processing of the Authentication TLV, in support of the optional security mechanism defined in ieee1588-2019 ch 14.16. See SECURITY ASSOCIATION OPTIONS for info on how this file should be formatted. spp and active_key_id should be specifed for each port to indicate which Security Association from the /fBsa_file/fR should be used. The default is an empty string. πŸ”

✨ PORT OPTIONS ✨

  • active_key_id β€” used together with spp and sa_file directives to specify which key from the spp defined Security Association should be used for outbound icv calculations. All Security Assocations are read from the file specified by sa_file. Requires spp and sa_file directives. Must be in the range of 1 to 2^32-1, inclusive. The default is 0 (disabled).
  • allow_unauth β€” allows for pmc to accept unauthenticated management response and signaling messages when authentication is enabled and spp, active_key_id and sa_file are set. Possible values are:
    • 0: normal receiving
    • 1: accept mgmt resp/signaling without Authentication TLV
    • 2: accept mgmt resp/signaling without Authentication TLV or with wrong Authentication TLV The default is 0 (disabled).
  • network_transport β€” select the network transport. Possible values are UDPv4, UDPv6 and L2. The default is UDPv4.
  • ptp_dst_mac β€” the MAC address that PTP management messages should be sent to. Only relevant with the L2 transport. The default is 01:1B:19:00:00:00.
  • spp β€” specifies the Security Parameters Pointer of the desired Security Association to be used for Authentication TLV support for a given port. Any port with an assigned spp will attach Authentication TLVs to all outbound messages and check for Authentication TLVs on all inbound messages, in accordance to the corresponding security association sourced via the sa_file directive. Outbound Authentication TLVs are generated using the key specified by active_key_id. Not compatible with one step ports or advertised versions less then PTPv2.1. Requires sa_file and active_key_id directives. Must be in the range of 0 to 255, inclusive. The default is -1 (disabled).
  • transportSpecific β€” the transport specific field. Must be in the range 0 to 255. The default is 0.

✨ MANAGEMENT IDS ✨

the whole roster, bestie, every single one, no skipping πŸ‘‘

  • ANNOUNCE_RECEIPT_TIMEOUT
  • CLOCK_ACCURACY
  • CLOCK_DESCRIPTION
  • CURRENT_DATA_SET
  • DEFAULT_DATA_SET
  • DELAY_MECHANISM
  • DOMAIN
  • GRANDMASTER_SETTINGS_NP
  • LOG_ANNOUNCE_INTERVAL
  • LOG_MIN_PDELAY_REQ_INTERVAL
  • LOG_SYNC_INTERVAL
  • NULL_MANAGEMENT
  • PARENT_DATA_SET
  • PORT_DATA_SET
  • PORT_DATA_SET_NP
  • PORT_HWCLOCK_NP
  • PORT_PROPERTIES_NP
  • PORT_SERVICE_STATS_NP
  • PORT_STATS_NP
  • PRIORITY1
  • PRIORITY2
  • SLAVE_ONLY
  • TIMESCALE_PROPERTIES
  • TIME_PROPERTIES_DATA_SET
  • TIME_STATUS_NP
  • TRACEABILITY_PROPERTIES
  • UNICAST_MASTER_TABLE_NP
  • USER_DESCRIPTION
  • VERSION_NUMBER

✨ WARNING ✨

🚨 Be cautious when the same configuration file is used for both ptp4l and pmc. Keep in mind that values specified in the configuration file take precedence over their default values. If a certain option which is common to ptp4l and pmc is specified to a non-default value in the configuration file (e.g. for ptp4l), then this non-default value applies also for pmc. This might be not what is expected. 😭
To avoid securely these unexpected behaviour, different configuration files for ptp4l and pmc are recommended. fr fr, just use two files. 🫢

✨ SEE ALSO ✨

ptp4l(8)


and that's the whole page, bestie!! this one's brought to you by linuxptp, dated March 2024 β€” so go forth, manage your PTP, and remember: the vibe changes, the facts never do. mwah πŸ’…πŸ’–πŸŽ€πŸ¦‹πŸŒΈβœ¨