From a5ca8481fc901710d0e1abf352f5bc78682c608d Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakob.olsson@iopsys.eu>
Date: Fri, 24 Nov 2023 15:09:44 +0100
Subject: [PATCH] dpp: wip3

---
 src/cntlr_map.c | 28 ++++++++++++++++------------
 src/dpp.c       |  6 +++++-
 2 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/src/cntlr_map.c b/src/cntlr_map.c
index c026b6e2..856d0a1f 100644
--- a/src/cntlr_map.c
+++ b/src/cntlr_map.c
@@ -3476,7 +3476,7 @@ int handle_proxied_encap_dpp(void *cntlr, struct cmdu_buff *cmdu,
 	UNUSED(hash);
 
 	if (!validate_proxied_encap_dpp(cmdu, tv)) {
-		dbg("cmdu validation: [PROXIED_ENCAP_DPP] failed\n");
+		err("cmdu validation: [PROXIED_ENCAP_DPP] failed\n");
 		return -1;
 	}
 
@@ -3495,7 +3495,7 @@ int handle_proxied_encap_dpp(void *cntlr, struct cmdu_buff *cmdu,
 		/* TODO: what do we do if there is no mac address?
 		 * for which frames is this applicable?
 		 */
-		dbg("DPP: Proxied encap are expected to contain enrollee MAC\n");
+		err("DPP: Proxied encap are expected to contain enrollee MAC\n");
 		return -1;
 	}
 
@@ -3559,30 +3559,34 @@ int handle_proxied_encap_dpp(void *cntlr, struct cmdu_buff *cmdu,
 		return -1;
 #endif
 #ifdef USE_LIBDPP
+	err("%s: Received frametype:%d from enrollee:"MACFMT"\n", __func__, frm->type, MAC2STR(enrollee));
+	dump(frame, framelen, "DPP Frame Received");
 	switch (frm->type) {
 	case DPP_PA_PRESENCE_ANNOUNCEMENT: {
 		int ret;
 
 		ret = dpp_process_presence_announcement(c->dpp, enrollee,
 							frame,
-							framelen);
+							framelen, n);
 		if (ret) {
-			dbg("Failed to build presence announcement frame!\n");
+			err("Failed to build presence announcement frame!\n");
 			break;
 		}
 
-		ret = dpp_set_peer_private_data(c->dpp, enrollee, n);
-		if (ret) {
-			dbg("Failed to set private data!\n");
-			break;
-		}
-		/* FALLTHROUGH */
+		//ret = dpp_set_peer_private_data(c->dpp, enrollee, n);
+		//if (ret) {
+		//	err("Failed to set private data!\n");
+		//	break;
+		//}
+		///* FALLTHROUGH */
+		break;
 	}
 	case DPP_PA_AUTHENTICATION_RESP:
 	case DPP_PUB_AF_GAS_INITIAL_REQ:
 	case DPP_PA_CONFIGURATION_RESULT:
 	case DPP_PA_PEER_DISCOVERY_REQ:
 	case DPP_PA_CONNECTION_STATUS_RESULT: {
+		err("|%s:%d|\n", __func__ ,__LINE__);
 		void *event = dpp_sm_create_event(c->dpp, enrollee,
 					    DPP_EVENT_RX_FRAME, framelen,
 					    frame);
@@ -3595,7 +3599,7 @@ int handle_proxied_encap_dpp(void *cntlr, struct cmdu_buff *cmdu,
 
 	}
 	default:
-		dbg("Unknown frame!\n");
+		err("Unknown frame!\n");
 		break;
 	}
 #endif
@@ -3645,7 +3649,7 @@ int handle_direct_encap_dpp(void *cntlr, struct cmdu_buff *cmdu,
 
 		ret = dpp_process_presence_announcement(c->dpp, cmdu->origin,
 							frame,
-							framelen);
+							framelen, NULL);
 		if (ret) {
 			dbg("Failed to build presence announcement frame!\n");
 			break;
diff --git a/src/dpp.c b/src/dpp.c
index ed7222d9..0ddcf790 100644
--- a/src/dpp.c
+++ b/src/dpp.c
@@ -275,17 +275,19 @@ int dpp_frame_handler(void *dpp, uint8_t *smac, enum dpp_event ev,
 			return -1;
 		}
 
-		dbg("DPP frametype %s\n", dpp_frame_type2str(frametype));
+		err("DPP frametype %s\n", dpp_frame_type2str(frametype));
 
 		c = dpp_get_ctx_private_data(dpp);
 		if (!c)
 			return -1;
+		dump(frame, framelen, "DPP Frame Response");
 
 		/* if peer has private data, it is the proxy node
 		 * thus we can infer its a proxied encap DPP message
 		 */
 		proxy = dpp_get_peer_private_data(dpp, smac);
 		if (proxy) {
+			err("|%s:%d|\n", __func__, __LINE__);
 			resp = cntlr_gen_proxied_encap_dpp(c, smac, frametype,
 							   frame, framelen,
 							   NULL, 0);
@@ -295,6 +297,7 @@ int dpp_frame_handler(void *dpp, uint8_t *smac, enum dpp_event ev,
 				return -1;
 			}
 		} else {
+			err("|%s:%d|\n", __func__, __LINE__);
 			resp = cntlr_gen_direct_encap_dpp(c, smac, frame,
 							  framelen);
 			if (!resp) {
@@ -311,6 +314,7 @@ int dpp_frame_handler(void *dpp, uint8_t *smac, enum dpp_event ev,
 
 				list_for_each_entry(n, &c->nodelist, list) {
 					memcpy(resp->origin, n->alid, 6);
+					err("|%s:%d| send frame to "MACFMT"\n", __func__, __LINE__, MAC2STR(n->alid));
 					send_cmdu(c, resp);
 				}
 				cmdu_free(resp);
-- 
GitLab