diff --git a/libpldm/pdr.c b/libpldm/pdr.c
index c93bb58..a691163 100644
--- a/libpldm/pdr.c
+++ b/libpldm/pdr.c
@@ -82,7 +82,7 @@
 		if (!record_handle) {
 			struct pldm_pdr_hdr *hdr =
 			    (struct pldm_pdr_hdr *)(record->data);
-			hdr->record_handle = record->record_handle;
+			hdr->record_handle = htole32(record->record_handle);
 		}
 	}
 	record->next = NULL;
@@ -251,15 +251,15 @@
 	hdr->record_handle = 0;
 	hdr->type = PLDM_PDR_FRU_RECORD_SET;
 	hdr->record_change_num = 0;
-	hdr->length = sizeof(struct pldm_pdr_fru_record_set);
+	hdr->length = htole16(sizeof(struct pldm_pdr_fru_record_set));
 	struct pldm_pdr_fru_record_set *fru =
 	    (struct pldm_pdr_fru_record_set *)((uint8_t *)hdr +
 					       sizeof(struct pldm_pdr_hdr));
-	fru->terminus_handle = terminus_handle;
-	fru->fru_rsi = fru_rsi;
-	fru->entity_type = entity_type;
-	fru->entity_instance_num = entity_instance_num;
-	fru->container_id = container_id;
+	fru->terminus_handle = htole16(terminus_handle);
+	fru->fru_rsi = htole16(fru_rsi);
+	fru->entity_type = htole16(entity_type);
+	fru->entity_instance_num = htole16(entity_instance_num);
+	fru->container_id = htole16(container_id);
 
 	return pldm_pdr_add(repo, data, size, 0);
 }
@@ -282,11 +282,12 @@
 		struct pldm_pdr_fru_record_set *fru =
 		    (struct pldm_pdr_fru_record_set
 			 *)(data + sizeof(struct pldm_pdr_hdr));
-		if (fru->fru_rsi == fru_rsi) {
-			*terminus_handle = fru->terminus_handle;
-			*entity_type = fru->entity_type;
-			*entity_instance_num = fru->entity_instance_num;
-			*container_id = fru->container_id;
+		if (fru->fru_rsi == htole16(fru_rsi)) {
+			*terminus_handle = le16toh(fru->terminus_handle);
+			*entity_type = le16toh(fru->entity_type);
+			*entity_instance_num =
+			    le16toh(fru->entity_instance_num);
+			*container_id = le16toh(fru->container_id);
 			return curr_record;
 		}
 		data = NULL;
@@ -504,19 +505,19 @@
 	hdr->record_handle = 0;
 	hdr->type = PLDM_PDR_ENTITY_ASSOCIATION;
 	hdr->record_change_num = 0;
-	hdr->length = size - sizeof(struct pldm_pdr_hdr);
+	hdr->length = htole16(size - sizeof(struct pldm_pdr_hdr));
 	start += sizeof(struct pldm_pdr_hdr);
 
 	uint16_t *container_id = (uint16_t *)start;
-	*container_id = curr->first_child->entity.entity_container_id;
+	*container_id = htole16(curr->first_child->entity.entity_container_id);
 	start += sizeof(uint16_t);
 	*start = association_type;
 	start += sizeof(uint8_t);
 
 	pldm_entity *entity = (pldm_entity *)start;
-	entity->entity_type = curr->entity.entity_type;
-	entity->entity_instance_num = curr->entity.entity_instance_num;
-	entity->entity_container_id = curr->entity.entity_container_id;
+	entity->entity_type = htole16(curr->entity.entity_type);
+	entity->entity_instance_num = htole16(curr->entity.entity_instance_num);
+	entity->entity_container_id = htole16(curr->entity.entity_container_id);
 	start += sizeof(pldm_entity);
 
 	*start = contained_count;
@@ -526,11 +527,11 @@
 	while (node != NULL) {
 		if (node->association_type == association_type) {
 			pldm_entity *entity = (pldm_entity *)start;
-			entity->entity_type = node->entity.entity_type;
+			entity->entity_type = htole16(node->entity.entity_type);
 			entity->entity_instance_num =
-			    node->entity.entity_instance_num;
+			    htole16(node->entity.entity_instance_num);
 			entity->entity_container_id =
-			    node->entity.entity_container_id;
+			    htole16(node->entity.entity_container_id);
 			start += sizeof(pldm_entity);
 		}
 		node = node->next_sibling;
diff --git a/libpldm/tests/libpldm_pdr_test.cpp b/libpldm/tests/libpldm_pdr_test.cpp
index 9dd172b..2f6b58d 100644
--- a/libpldm/tests/libpldm_pdr_test.cpp
+++ b/libpldm/tests/libpldm_pdr_test.cpp
@@ -230,15 +230,15 @@
     pldm_pdr_hdr* hdr = reinterpret_cast<pldm_pdr_hdr*>(outData);
     EXPECT_EQ(hdr->version, 1);
     EXPECT_EQ(hdr->type, PLDM_PDR_FRU_RECORD_SET);
-    EXPECT_EQ(hdr->length, sizeof(pldm_pdr_fru_record_set));
-    EXPECT_EQ(hdr->record_handle, 1);
+    EXPECT_EQ(hdr->length, htole16(sizeof(pldm_pdr_fru_record_set)));
+    EXPECT_EQ(hdr->record_handle, htole32(1));
     pldm_pdr_fru_record_set* fru = reinterpret_cast<pldm_pdr_fru_record_set*>(
         outData + sizeof(pldm_pdr_hdr));
-    EXPECT_EQ(fru->terminus_handle, 1);
-    EXPECT_EQ(fru->fru_rsi, 10);
-    EXPECT_EQ(fru->entity_type, 1);
-    EXPECT_EQ(fru->entity_instance_num, 0);
-    EXPECT_EQ(fru->container_id, 100);
+    EXPECT_EQ(fru->terminus_handle, htole16(1));
+    EXPECT_EQ(fru->fru_rsi, htole16(10));
+    EXPECT_EQ(fru->entity_type, htole16(1));
+    EXPECT_EQ(fru->entity_instance_num, htole16(0));
+    EXPECT_EQ(fru->container_id, htole16(100));
     outData = nullptr;
 
     handle = pldm_pdr_add_fru_record_set(repo, 2, 11, 2, 1, 101);
@@ -253,15 +253,15 @@
     hdr = reinterpret_cast<pldm_pdr_hdr*>(outData);
     EXPECT_EQ(hdr->version, 1);
     EXPECT_EQ(hdr->type, PLDM_PDR_FRU_RECORD_SET);
-    EXPECT_EQ(hdr->length, sizeof(pldm_pdr_fru_record_set));
-    EXPECT_EQ(hdr->record_handle, 2);
+    EXPECT_EQ(hdr->length, htole16(sizeof(pldm_pdr_fru_record_set)));
+    EXPECT_EQ(hdr->record_handle, htole32(2));
     fru = reinterpret_cast<pldm_pdr_fru_record_set*>(outData +
                                                      sizeof(pldm_pdr_hdr));
-    EXPECT_EQ(fru->terminus_handle, 2);
-    EXPECT_EQ(fru->fru_rsi, 11);
-    EXPECT_EQ(fru->entity_type, 2);
-    EXPECT_EQ(fru->entity_instance_num, 1);
-    EXPECT_EQ(fru->container_id, 101);
+    EXPECT_EQ(fru->terminus_handle, htole16(2));
+    EXPECT_EQ(fru->fru_rsi, htole16(11));
+    EXPECT_EQ(fru->entity_type, htole16(2));
+    EXPECT_EQ(fru->entity_instance_num, htole16(1));
+    EXPECT_EQ(fru->container_id, htole16(101));
     outData = nullptr;
 
     hdl = pldm_pdr_find_record(repo, 1, &outData, &size, &nextRecHdl);
@@ -271,15 +271,15 @@
     hdr = reinterpret_cast<pldm_pdr_hdr*>(outData);
     EXPECT_EQ(hdr->version, 1);
     EXPECT_EQ(hdr->type, PLDM_PDR_FRU_RECORD_SET);
-    EXPECT_EQ(hdr->length, sizeof(pldm_pdr_fru_record_set));
-    EXPECT_EQ(hdr->record_handle, 1);
+    EXPECT_EQ(hdr->length, htole16(sizeof(pldm_pdr_fru_record_set)));
+    EXPECT_EQ(hdr->record_handle, htole32(1));
     fru = reinterpret_cast<pldm_pdr_fru_record_set*>(outData +
                                                      sizeof(pldm_pdr_hdr));
-    EXPECT_EQ(fru->terminus_handle, 1);
-    EXPECT_EQ(fru->fru_rsi, 10);
-    EXPECT_EQ(fru->entity_type, 1);
-    EXPECT_EQ(fru->entity_instance_num, 0);
-    EXPECT_EQ(fru->container_id, 100);
+    EXPECT_EQ(fru->terminus_handle, htole16(1));
+    EXPECT_EQ(fru->fru_rsi, htole16(10));
+    EXPECT_EQ(fru->entity_type, htole16(1));
+    EXPECT_EQ(fru->entity_instance_num, htole16(0));
+    EXPECT_EQ(fru->container_id, htole16(100));
     outData = nullptr;
 
     pldm_pdr_destroy(repo);
@@ -647,32 +647,32 @@
                                   sizeof(pldm_entity)));
     uint8_t* start = data;
     pldm_pdr_hdr* hdr = reinterpret_cast<pldm_pdr_hdr*>(start);
-    EXPECT_EQ(hdr->record_handle, 1);
+    EXPECT_EQ(le32toh(hdr->record_handle), 1);
     EXPECT_EQ(hdr->type, PLDM_PDR_ENTITY_ASSOCIATION);
-    EXPECT_EQ(hdr->length, size - sizeof(struct pldm_pdr_hdr));
+    EXPECT_EQ(le16toh(hdr->length), size - sizeof(struct pldm_pdr_hdr));
     start += sizeof(pldm_pdr_hdr);
     uint16_t* containerId = reinterpret_cast<uint16_t*>(start);
-    EXPECT_EQ(*containerId, 1);
+    EXPECT_EQ(le16toh(*containerId), 1);
     start += sizeof(uint16_t);
     EXPECT_EQ(*start, PLDM_ENTITY_ASSOCIAION_LOGICAL);
     start += sizeof(uint8_t);
     pldm_entity* entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 1);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 0);
+    EXPECT_EQ(le16toh(entity->entity_type), 1);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 0);
     start += sizeof(pldm_entity);
     EXPECT_EQ(*start,
               pldm_entity_get_num_children(l1, PLDM_ENTITY_ASSOCIAION_LOGICAL));
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 3);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 1);
+    EXPECT_EQ(le16toh(entity->entity_type), 3);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 1);
     start += sizeof(pldm_entity);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 3);
-    EXPECT_EQ(entity->entity_instance_num, 2);
-    EXPECT_EQ(entity->entity_container_id, 1);
+    EXPECT_EQ(le16toh(entity->entity_type), 3);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 2);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 1);
     start += sizeof(pldm_entity);
 
     currRecHandle = nextRecHandle;
@@ -683,32 +683,32 @@
                                   sizeof(pldm_entity)));
     start = data;
     hdr = reinterpret_cast<pldm_pdr_hdr*>(start);
-    EXPECT_EQ(hdr->record_handle, 2);
+    EXPECT_EQ(le32toh(hdr->record_handle), 2);
     EXPECT_EQ(hdr->type, PLDM_PDR_ENTITY_ASSOCIATION);
-    EXPECT_EQ(hdr->length, size - sizeof(struct pldm_pdr_hdr));
+    EXPECT_EQ(le16toh(hdr->length), size - sizeof(struct pldm_pdr_hdr));
     start += sizeof(pldm_pdr_hdr);
     containerId = reinterpret_cast<uint16_t*>(start);
-    EXPECT_EQ(*containerId, 1);
+    EXPECT_EQ(le16toh(*containerId), 1);
     start += sizeof(uint16_t);
     EXPECT_EQ(*start, PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 1);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 0);
+    EXPECT_EQ(le16toh(entity->entity_type), 1);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 0);
     start += sizeof(pldm_entity);
     EXPECT_EQ(*start, pldm_entity_get_num_children(
                           l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL));
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 2);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 1);
+    EXPECT_EQ(le16toh(entity->entity_type), 2);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 1);
     start += sizeof(pldm_entity);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 2);
-    EXPECT_EQ(entity->entity_instance_num, 2);
-    EXPECT_EQ(entity->entity_container_id, 1);
+    EXPECT_EQ(le16toh(entity->entity_type), 2);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 2);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 1);
     start += sizeof(pldm_entity);
 
     currRecHandle = nextRecHandle;
@@ -719,32 +719,32 @@
                                   sizeof(pldm_entity)));
     start = data;
     hdr = reinterpret_cast<pldm_pdr_hdr*>(start);
-    EXPECT_EQ(hdr->record_handle, 3);
+    EXPECT_EQ(le32toh(hdr->record_handle), 3);
     EXPECT_EQ(hdr->type, PLDM_PDR_ENTITY_ASSOCIATION);
-    EXPECT_EQ(hdr->length, size - sizeof(struct pldm_pdr_hdr));
+    EXPECT_EQ(le16toh(hdr->length), size - sizeof(struct pldm_pdr_hdr));
     start += sizeof(pldm_pdr_hdr);
     containerId = reinterpret_cast<uint16_t*>(start);
-    EXPECT_EQ(*containerId, 2);
+    EXPECT_EQ(le16toh(*containerId), 2);
     start += sizeof(uint16_t);
     EXPECT_EQ(*start, PLDM_ENTITY_ASSOCIAION_LOGICAL);
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 2);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 1);
+    EXPECT_EQ(le16toh(entity->entity_type), 2);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 1);
     start += sizeof(pldm_entity);
     EXPECT_EQ(*start, pldm_entity_get_num_children(
                           l2a, PLDM_ENTITY_ASSOCIAION_LOGICAL));
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 5);
-    EXPECT_EQ(entity->entity_instance_num, 2);
-    EXPECT_EQ(entity->entity_container_id, 2);
+    EXPECT_EQ(le16toh(entity->entity_type), 5);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 2);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 2);
     start += sizeof(pldm_entity);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 5);
-    EXPECT_EQ(entity->entity_instance_num, 3);
-    EXPECT_EQ(entity->entity_container_id, 2);
+    EXPECT_EQ(le16toh(entity->entity_type), 5);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 3);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 2);
     start += sizeof(pldm_entity);
 
     currRecHandle = nextRecHandle;
@@ -755,32 +755,32 @@
                                   sizeof(pldm_entity)));
     start = data;
     hdr = reinterpret_cast<pldm_pdr_hdr*>(start);
-    EXPECT_EQ(hdr->record_handle, 4);
+    EXPECT_EQ(le32toh(hdr->record_handle), 4);
     EXPECT_EQ(hdr->type, PLDM_PDR_ENTITY_ASSOCIATION);
-    EXPECT_EQ(hdr->length, size - sizeof(struct pldm_pdr_hdr));
+    EXPECT_EQ(le16toh(hdr->length), size - sizeof(struct pldm_pdr_hdr));
     start += sizeof(pldm_pdr_hdr);
     containerId = reinterpret_cast<uint16_t*>(start);
-    EXPECT_EQ(*containerId, 2);
+    EXPECT_EQ(le16toh(*containerId), 2);
     start += sizeof(uint16_t);
     EXPECT_EQ(*start, PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 2);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 1);
+    EXPECT_EQ(le16toh(entity->entity_type), 2);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 1);
     start += sizeof(pldm_entity);
     EXPECT_EQ(*start, pldm_entity_get_num_children(
                           l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL));
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 4);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 2);
+    EXPECT_EQ(le16toh(entity->entity_type), 4);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 2);
     start += sizeof(pldm_entity);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 5);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 2);
+    EXPECT_EQ(le16toh(entity->entity_type), 5);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 2);
     start += sizeof(pldm_entity);
 
     currRecHandle = nextRecHandle;
@@ -791,27 +791,27 @@
                                   sizeof(pldm_entity)));
     start = data;
     hdr = reinterpret_cast<pldm_pdr_hdr*>(start);
-    EXPECT_EQ(hdr->record_handle, 5);
+    EXPECT_EQ(le32toh(hdr->record_handle), 5);
     EXPECT_EQ(hdr->type, PLDM_PDR_ENTITY_ASSOCIATION);
-    EXPECT_EQ(hdr->length, size - sizeof(struct pldm_pdr_hdr));
+    EXPECT_EQ(le16toh(hdr->length), size - sizeof(struct pldm_pdr_hdr));
     start += sizeof(pldm_pdr_hdr);
     containerId = reinterpret_cast<uint16_t*>(start);
-    EXPECT_EQ(*containerId, 3);
+    EXPECT_EQ(le16toh(*containerId), 3);
     start += sizeof(uint16_t);
     EXPECT_EQ(*start, PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 4);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 2);
+    EXPECT_EQ(le16toh(entity->entity_type), 4);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 2);
     start += sizeof(pldm_entity);
     EXPECT_EQ(*start, pldm_entity_get_num_children(
                           l3a, PLDM_ENTITY_ASSOCIAION_PHYSICAL));
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 6);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 3);
+    EXPECT_EQ(le16toh(entity->entity_type), 6);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 3);
     start += sizeof(pldm_entity);
 
     currRecHandle = nextRecHandle;
@@ -822,27 +822,27 @@
                                   sizeof(pldm_entity)));
     start = data;
     hdr = reinterpret_cast<pldm_pdr_hdr*>(start);
-    EXPECT_EQ(hdr->record_handle, 6);
+    EXPECT_EQ(le32toh(hdr->record_handle), 6);
     EXPECT_EQ(hdr->type, PLDM_PDR_ENTITY_ASSOCIATION);
-    EXPECT_EQ(hdr->length, size - sizeof(struct pldm_pdr_hdr));
+    EXPECT_EQ(le16toh(hdr->length), size - sizeof(struct pldm_pdr_hdr));
     start += sizeof(pldm_pdr_hdr);
     containerId = reinterpret_cast<uint16_t*>(start);
-    EXPECT_EQ(*containerId, 4);
+    EXPECT_EQ(le16toh(*containerId), 4);
     start += sizeof(uint16_t);
     EXPECT_EQ(*start, PLDM_ENTITY_ASSOCIAION_LOGICAL);
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 5);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 2);
+    EXPECT_EQ(le16toh(entity->entity_type), 5);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 2);
     start += sizeof(pldm_entity);
     EXPECT_EQ(*start, pldm_entity_get_num_children(
                           l3b, PLDM_ENTITY_ASSOCIAION_LOGICAL));
     start += sizeof(uint8_t);
     entity = reinterpret_cast<pldm_entity*>(start);
-    EXPECT_EQ(entity->entity_type, 7);
-    EXPECT_EQ(entity->entity_instance_num, 1);
-    EXPECT_EQ(entity->entity_container_id, 4);
+    EXPECT_EQ(le16toh(entity->entity_type), 7);
+    EXPECT_EQ(le16toh(entity->entity_instance_num), 1);
+    EXPECT_EQ(le16toh(entity->entity_container_id), 4);
 
     EXPECT_EQ(nextRecHandle, 0);
 
