Fix instance id in pldm response

The instance id that is sent on the pldm request message has to
be returned in the PLDM response message to the caller, this was
defaulted in the initial coding to zero and is fixed now

Tested :

Booted a hypervisor that sends PLDM commands.

Below is the transactions recorded in the journal
Jul 03 16:24:10 w70 pldmd[3209]: Buffer Data: 09 01 8b 3f 07 01 00 00
00 00 00 00 00 10 00 00 00 00 00 01 00 00 00 00 00
Jul 03 16:24:10 w70 pldmd[3209]: Sending Msg
Jul 03 16:24:10 w70 pldmd[3209]: Buffer Data: 09 01 0b 3f 07 00 10 00
00 00
Jul 03 16:24:11 w70 pldmd[3209]: Received Msg
Jul 03 16:24:11 w70 pldmd[3209]: Buffer Data: 09 01 8c 3f 07 00 00 00
00 00 00 02 00 00 10 00 00 00 10 01 00 00 00 00 00
Jul 03 16:24:11 w70 pldmd[3209]: Sending Msg
Jul 03 16:24:11 w70 pldmd[3209]: Buffer Data: 09 01 0c 3f 07 00 00 10
00 00
Jul 03 16:24:11 w70 pldmd[3209]: Received Msg
Jul 03 16:24:11 w70 pldmd[3209]: Buffer Data: 09 01 8d 3f 07 01 00 00
00 00 00 00 00 10 00 00 00 00 00 01 00 00 00 00 00
Jul 03 16:24:11 w70 pldmd[3209]: Sending Msg
Jul 03 16:24:11 w70 pldmd[3209]: Buffer Data: 09 01 0d 3f 07 00 10 00
00 00

Signed-off-by: Jinu Joy Thomas <jinu.joy.thomas@in.ibm.com>
Change-Id: I0e6c0d5582674bc6b0dd75ceb35dd41ed9127cd3
diff --git a/oem/ibm/libpldmresponder/file_io.cpp b/oem/ibm/libpldmresponder/file_io.cpp
index 6b893ed..6fa9f48 100644
--- a/oem/ibm/libpldmresponder/file_io.cpp
+++ b/oem/ibm/libpldmresponder/file_io.cpp
@@ -166,7 +166,8 @@
 
     if (payloadLength != PLDM_RW_FILE_MEM_REQ_BYTES)
     {
-        encode_rw_file_memory_resp(0, PLDM_READ_FILE_INTO_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_READ_FILE_INTO_MEMORY,
                                    PLDM_ERROR_INVALID_LENGTH, 0, responsePtr);
         return response;
     }
@@ -186,7 +187,8 @@
     {
         log<level::ERR>("File handle does not exist in the file table",
                         entry("HANDLE=%d", fileHandle));
-        encode_rw_file_memory_resp(0, PLDM_READ_FILE_INTO_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_READ_FILE_INTO_MEMORY,
                                    PLDM_INVALID_FILE_HANDLE, 0, responsePtr);
         return response;
     }
@@ -194,7 +196,8 @@
     if (!fs::exists(value.fsPath))
     {
         log<level::ERR>("File does not exist", entry("HANDLE=%d", fileHandle));
-        encode_rw_file_memory_resp(0, PLDM_READ_FILE_INTO_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_READ_FILE_INTO_MEMORY,
                                    PLDM_INVALID_FILE_HANDLE, 0, responsePtr);
         return response;
     }
@@ -204,7 +207,8 @@
     {
         log<level::ERR>("Offset exceeds file size", entry("OFFSET=%d", offset),
                         entry("FILE_SIZE=%d", fileSize));
-        encode_rw_file_memory_resp(0, PLDM_READ_FILE_INTO_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_READ_FILE_INTO_MEMORY,
                                    PLDM_DATA_OUT_OF_RANGE, 0, responsePtr);
         return response;
     }
@@ -218,7 +222,8 @@
     {
         log<level::ERR>("Read length is not a multiple of DMA minSize",
                         entry("LENGTH=%d", length));
-        encode_rw_file_memory_resp(0, PLDM_READ_FILE_INTO_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_READ_FILE_INTO_MEMORY,
                                    PLDM_INVALID_READ_LENGTH, 0, responsePtr);
         return response;
     }
@@ -226,7 +231,8 @@
     using namespace dma;
     DMA intf;
     return transferAll<DMA>(&intf, PLDM_READ_FILE_INTO_MEMORY, value.fsPath,
-                            offset, length, address, true);
+                            offset, length, address, true,
+                            request->hdr.instance_id);
 }
 
 Response writeFileFromMemory(const pldm_msg* request, size_t payloadLength)
@@ -241,7 +247,8 @@
 
     if (payloadLength != PLDM_RW_FILE_MEM_REQ_BYTES)
     {
-        encode_rw_file_memory_resp(0, PLDM_WRITE_FILE_FROM_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_WRITE_FILE_FROM_MEMORY,
                                    PLDM_ERROR_INVALID_LENGTH, 0, responsePtr);
         return response;
     }
@@ -253,7 +260,8 @@
     {
         log<level::ERR>("Write length is not a multiple of DMA minSize",
                         entry("LENGTH=%d", length));
-        encode_rw_file_memory_resp(0, PLDM_WRITE_FILE_FROM_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_WRITE_FILE_FROM_MEMORY,
                                    PLDM_INVALID_WRITE_LENGTH, 0, responsePtr);
         return response;
     }
@@ -270,7 +278,8 @@
     {
         log<level::ERR>("File handle does not exist in the file table",
                         entry("HANDLE=%d", fileHandle));
-        encode_rw_file_memory_resp(0, PLDM_WRITE_FILE_FROM_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_WRITE_FILE_FROM_MEMORY,
                                    PLDM_INVALID_FILE_HANDLE, 0, responsePtr);
         return response;
     }
@@ -278,7 +287,8 @@
     if (!fs::exists(value.fsPath))
     {
         log<level::ERR>("File does not exist", entry("HANDLE=%d", fileHandle));
-        encode_rw_file_memory_resp(0, PLDM_WRITE_FILE_FROM_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_WRITE_FILE_FROM_MEMORY,
                                    PLDM_INVALID_FILE_HANDLE, 0, responsePtr);
         return response;
     }
@@ -288,7 +298,8 @@
     {
         log<level::ERR>("Offset exceeds file size", entry("OFFSET=%d", offset),
                         entry("FILE_SIZE=%d", fileSize));
-        encode_rw_file_memory_resp(0, PLDM_WRITE_FILE_FROM_MEMORY,
+        encode_rw_file_memory_resp(request->hdr.instance_id,
+                                   PLDM_WRITE_FILE_FROM_MEMORY,
                                    PLDM_DATA_OUT_OF_RANGE, 0, responsePtr);
         return response;
     }
@@ -296,7 +307,8 @@
     using namespace dma;
     DMA intf;
     return transferAll<DMA>(&intf, PLDM_WRITE_FILE_FROM_MEMORY, value.fsPath,
-                            offset, length, address, false);
+                            offset, length, address, false,
+                            request->hdr.instance_id);
 }
 
 Response getFileTable(const pldm_msg* request, size_t payloadLength)
@@ -311,8 +323,9 @@
 
     if (payloadLength != PLDM_GET_FILE_TABLE_REQ_BYTES)
     {
-        encode_get_file_table_resp(0, PLDM_ERROR_INVALID_LENGTH, 0, 0, nullptr,
-                                   0, responsePtr);
+        encode_get_file_table_resp(request->hdr.instance_id,
+                                   PLDM_ERROR_INVALID_LENGTH, 0, 0, nullptr, 0,
+                                   responsePtr);
         return response;
     }
 
@@ -321,14 +334,16 @@
                                   &transferHandle, &transferFlag, &tableType);
     if (rc)
     {
-        encode_get_file_table_resp(0, rc, 0, 0, nullptr, 0, responsePtr);
+        encode_get_file_table_resp(request->hdr.instance_id, rc, 0, 0, nullptr,
+                                   0, responsePtr);
         return response;
     }
 
     if (tableType != PLDM_FILE_ATTRIBUTE_TABLE)
     {
-        encode_get_file_table_resp(0, PLDM_INVALID_FILE_TABLE_TYPE, 0, 0,
-                                   nullptr, 0, responsePtr);
+        encode_get_file_table_resp(request->hdr.instance_id,
+                                   PLDM_INVALID_FILE_TABLE_TYPE, 0, 0, nullptr,
+                                   0, responsePtr);
         return response;
     }
 
@@ -340,13 +355,15 @@
 
     if (attrTable.empty())
     {
-        encode_get_file_table_resp(0, PLDM_FILE_TABLE_UNAVAILABLE, 0, 0,
-                                   nullptr, 0, responsePtr);
+        encode_get_file_table_resp(request->hdr.instance_id,
+                                   PLDM_FILE_TABLE_UNAVAILABLE, 0, 0, nullptr,
+                                   0, responsePtr);
         return response;
     }
 
-    encode_get_file_table_resp(0, PLDM_SUCCESS, 0, PLDM_START_AND_END,
-                               attrTable.data(), attrTable.size(), responsePtr);
+    encode_get_file_table_resp(request->hdr.instance_id, PLDM_SUCCESS, 0,
+                               PLDM_START_AND_END, attrTable.data(),
+                               attrTable.size(), responsePtr);
     return response;
 }