diff --git a/src/topo_ieee1905.c b/src/topo_ieee1905.c
index 36d876e152c44349247e18ba3d6cfcc8c04f04b1..7efdf9e3de5ce7c51c733b929fe2889acc4feaa6 100644
--- a/src/topo_ieee1905.c
+++ b/src/topo_ieee1905.c
@@ -81,7 +81,11 @@ static int topologyd_copy_update_node(struct node *dest, struct node *src)
 	//Here we copy the Bridge tuple entries
 	dest->bridge_tuple_num = src->bridge_tuple_num;
 	for(j = 0; j < src->bridge_tuple_num; j++) {
-                memcpy(dest->bridge_tuple[j], src->bridge_tuple[j], 6);
+		dest->br_tuple[j].tuple_num = src->br_tuple[j].tuple_num;
+
+		for(k = 0;k < src->br_tuple[j].tuple_num ;k++) {
+		        memcpy(dest->br_tuple[j].tuple_macid[k], src->br_tuple[j].tuple_macid[k], 6);
+		}
 	}
 
         time(&dest->last_recv);
diff --git a/src/topologyd.c b/src/topologyd.c
index 52bab038de10c2a6b7937c13c7e744fa71d443d0..f244b91ebc7d14a36bb930222c684d03311f8981 100644
--- a/src/topologyd.c
+++ b/src/topologyd.c
@@ -355,18 +355,18 @@ void topologyd_process_topology_response(struct cmdu_cstruct *cstruct, struct to
 		{
 			struct deviceBridgingCapabilityTLV *tlv =
                                 (struct deviceBridgingCapabilityTLV *)p;
-			cnt = 0;
+
+			n.bridge_tuple_num = tlv->bridging_tuples_nr;
                         dbg(" bridging tuple number [%d] \n", tlv->bridging_tuples_nr);
 
 			for (j = 0; j < tlv->bridging_tuples_nr; j++) {
+				n.br_tuple[j].tuple_num = tlv->bridging_tuples[j].bridging_tuple_macs_nr;
 
                                 for (k = 0; k < tlv->bridging_tuples[j].bridging_tuple_macs_nr; k++) {
 					 dbg(" bridge_num[%d] br_mac_num[%d] \n", tlv->bridging_tuples_nr, tlv->bridging_tuples[j].bridging_tuple_macs_nr);
-                                        memcpy(n.bridge_tuple[cnt], &tlv->bridging_tuples[j].bridging_tuple_macs[k].mac_address, 6);
-					cnt++;
+                                        memcpy(n.br_tuple[j].tuple_macid[k], &tlv->bridging_tuples[j].bridging_tuple_macs[k].mac_address, 6);
 				}
 			}
-			n.bridge_tuple_num = cnt;
 		}
 		break;
 		default :
@@ -693,6 +693,7 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
 	char behind_mac_str[1024] = { 0x0 };
 	void *nbr_array, *non1905_array = NULL, *interfaces = NULL, *table = NULL, *l2_neighbor = NULL;
 	void *bridge_tuple = NULL, *ipv4_param = NULL, *ipv6_param = NULL, *link_array = NULL;
+	void *bridge_tuple_mac = NULL;
 	void *table1 = NULL;
 	int  j, k, flag = 0, i = 0;
 	char addr[16] = {0};
@@ -812,8 +813,12 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
         bridge_tuple = blobmsg_open_array(bb, "bridge_tuple");
         for (j = 0; j < p->bridge_tuple_num; j++) {
                 table = blobmsg_open_table(bb, NULL);
-                hwaddr_ntoa(p->bridge_tuple[j], mac_str);
-		blobmsg_add_string(bb, "bridge_tuple_mac_id", mac_str);
+		bridge_tuple_mac = blobmsg_open_array(bb, "br_mac");
+		for (k = 0; k < p->br_tuple[j].tuple_num; k++) {
+			hwaddr_ntoa(p->br_tuple[j].tuple_macid[k], mac_str);
+			blobmsg_add_string(bb, "bridge_tuple_mac_id", mac_str);
+		}
+		blobmsg_close_array(bb, bridge_tuple_mac);
 		blobmsg_close_table(bb, table);
         }
         blobmsg_close_array(bb, bridge_tuple);
diff --git a/src/topologyd.h b/src/topologyd.h
index 4cd6fb5f36a7c9dd5be62ac8e8d80b968bfcea0d..546f55ec08ac7ed75aa46cd02d95ecf5dc5c569f 100644
--- a/src/topologyd.h
+++ b/src/topologyd.h
@@ -28,6 +28,7 @@
 #define TOPOLOGY_STATUS_INTERVAL 5
 #define TOPOLOGY_MAX_ENTRY 32
 #define TOPOLOGY_MAX_LINK 32
+#define TOPOLOGY_MAX_BR_TUPLE 32
 
 typedef uint32_t ieee1905_object_t;
 
@@ -100,6 +101,11 @@ struct nbr_data_t {
 	struct link_metric ln_metric[TOPOLOGY_MAX_LINK];
 };
 
+struct bridge_tuple {
+	uint32_t tuple_num;
+	uint8_t tuple_macid[TOPOLOGY_MAX_BR_TUPLE][6];
+};
+
 struct node {
 	uint8_t hwaddr[6];
 	void *priv;
@@ -130,7 +136,7 @@ struct node {
 	struct device_ipv6_t device_ipv6[TOPOLOGY_MAX_ENTRY];
 	//Bridging tuple
 	uint32_t bridge_tuple_num;
-	uint8_t bridge_tuple[TOPOLOGY_MAX_ENTRY][6]; 
+	struct bridge_tuple  br_tuple[TOPOLOGY_MAX_ENTRY]; 
 	//local interfaces
 	uint32_t local_intf_nbr;
 	struct node_interface node_intf[TOPOLOGY_MAX_ENTRY];