1# Overview
2
3MCTP D-Bus interfaces are implemented by the MCTP control process daemon
4alias mcptd and aids in the discovery of MCTP enabled devices by application
5layer protocols (like PLDM, SPDM) which are implemented in the userspace.
6Application layer protocols will rely on the discovery of
7`xyz.openbmc_project.MCTP.Endpoint` D-Bus interface to discover MCTP endpoints.
8The supported MCTP message types in an endpoint are exposed by the
9`SupportedMessageTypes` property in the `xyz.openbmc_project.MCTP.Endpoint`
10interface. For example, if the endpoint supports PLDM then pldm daemon will
11complete the PLDM discovery flow with the MCTP endpoint. Also mctpd discovers
12the removal of the MCTP endpoints and removes the D-Bus objects corresponding to
13those endpoints. MCTP bridges are not modelled in the D-Bus.
14
15## D-Bus object modelling
16
17The root D-Bus object path for the mctpd is `/xyz/openbmc_project/mctp`. There
18will be a D-Bus object for every endpoint that is discovered by the mctpd.
19The lifetime of the D-Bus object is the lifetime of the connected MCTP device.
20
21The D-Bus object path for MCTP endpoints are named
22`xyz/openbmc_project/mctp/<NetworkId>/<EID>` where NetworkId is the locally
23defined [network identfier][1] the endpoint is part of and EID is the endpoint
24ID. This aids in the enumeration of the endpoints belonging to an MCTP network.
25The D-Bus object implements the `xyz.openbmc_project.MCTP.Endpoint` interface.
26The object may also optionally implement `xyz.openbmc_project.Common.UUID`
27interface to address the requirement for devices with multiple endpoints and for
28hot-plug devices.
29
30An MCTP Network may provide an optional MCTP Network ID that can be used to
31differentiate different MCTP Networks when more than one MCTP Network can be
32accessed by an entity . The Network ID is also used when an entity has more than
33one point of access to the MCTP Network. The MCTP Network ID enables the entity
34to tell whether the access points provide access to the same MCTP Network or to
35different MCTP Networks. If the implementation supports the optional MCTP
36network ID then it is exposed on the D-Bus. The D-Bus object path is
37`xyz/openbmc_project/mctp/<NetworkId>` where NetworkId is the locally
38defined [network identfier][1] and implements the
39`xyz.openbmc_project.Common.UUID` interface and the UUID property is the MCTP
40network ID.
41
42[1]: https://github.com/openbmc/docs/blob/master/designs/mctp/mctp-kernel.md#addressing
43