Add kernel MCTP (AF_MCTP) support and transport-implementation option

-Added support for kernel MCTP (AF_MCTP) to enable MCTP communication
 using AF_MCTP sockets.

- Introduced a new configuration option 'transport-implementation'

The 'transport-implementation' option can be set to either:
- 'mctp-demux': Uses the existing mctp-demux transport method.
- 'af-mctp': Uses the new kernel AF_MCTP transport method.

Change-Id: I2978273fe4579d1dce00368dabb7f90815dbbce8
Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
Signed-off-by: Eddie James <eajames@linux.ibm.com>
diff --git a/pldm.hpp b/pldm.hpp
index 384ad20..7238c02 100644
--- a/pldm.hpp
+++ b/pldm.hpp
@@ -7,6 +7,7 @@
 #include <libpldm/instance-id.h>
 #include <libpldm/pldm.h>
 #include <libpldm/transport.h>
+#include <libpldm/transport/af-mctp.h>
 #include <libpldm/transport/mctp-demux.h>
 
 #include <sdbusplus/bus/match.hpp>
@@ -255,7 +256,13 @@
     /** pldm transport instance  */
     struct pldm_transport* pldmTransport = NULL;
 
-    struct pldm_transport_mctp_demux* mctpDemux;
+    union TransportImpl
+    {
+        struct pldm_transport_mctp_demux* mctpDemux;
+        struct pldm_transport_af_mctp* afMctp;
+    };
+
+    TransportImpl impl;
 
     /** @brief The response for the PLDM request msg is received flag.
      */
@@ -355,10 +362,16 @@
 
     /** @brief Opens the MCTP socket for sending and receiving messages.
      *
-     * @return true on success, otherwise returns a negative error code
+     * @return 0 on success, otherwise returns a negative error code
      */
     int openMctpDemuxTransport();
 
+    /** @brief Opens the MCTP AF_MCTP for sending and receiving messages.
+     *
+     * @return 0 on success, otherwise returns a negative error code
+     */
+    int openAfMctpTransport();
+
     /** @brief Send the PLDM request
      *
      * @param[in] request - the request data