diag_msgc: Parse responses
diff --git a/src/diag_msg.c b/src/diag_msg.c
index f65a8f4..53bc027 100644
--- a/src/diag_msg.c
+++ b/src/diag_msg.c
@@ -59,12 +59,22 @@
 {
 	struct msgb *msg = gen_msg_config_set_rt_mask(ssid, runtime_mask);
 	struct msgb *rx;
+	struct diag_set_rt_mask_req *res;
+	int rc = 0;
 
 	rx = diag_transceive_msg(di, msg);
-	/* FIXME */
+	res = (struct diag_set_rt_mask_req *) (msgb_l2(msg)+1);
+	if ((rx->l2h[0] != 0x5d) || res->cmd_code != 0x5d ||
+	    res->sub_cmd != MSG_EXT_SUBCMD_SET_RT_MASK ||
+	    osmo_load16le(&res->ssid_start) != ssid ||
+	    osmo_load16le(&res->ssid_end) != ssid ||
+	    osmo_load32le(&res->runtime_mask) != runtime_mask) {
+		fprintf(stderr, "Error setting RT mask\n");
+		rc = -1;
+	}
 	msgb_free(rx);
 
-	return 0;
+	return rc;
 }
 
 /* handler for EXT MSG */
diff --git a/src/osmo-qcdiag-log.c b/src/osmo-qcdiag-log.c
index a867955..c5a5a31 100644
--- a/src/osmo-qcdiag-log.c
+++ b/src/osmo-qcdiag-log.c
@@ -54,20 +54,26 @@
 		DIAG_EVENT_REPORT_F, 0x00
 	};
 
-	/* TODO: introduce a wait for response kind of method */
 	diag_transceive_buf_ign(di, timestamp, sizeof(timestamp));
+	/* response: 3d 67 a8 81 d4 46 6d d9 00 */
 
 	/* enable|disable the event report */
 #if 0
 	diag_transceive_buf_ign(di, enable_evt_report, sizeof(enable_evt_report));
 #else
 	diag_transceive_buf_ign(di, disable_evt_report, sizeof(disable_evt_report));
+	/* response: 40 00 00 */
 #endif
 	diag_msg_config_set_rt_mask(di, MSG_SSID_LINUX_DATA, 0xffffffff);
+	/* response: 5d 5d 04 41 00 41 00 01 00 ff ff ff ff */
 	diag_msg_config_set_rt_mask(di, 5012, 0xffffffff);
+	/* response: 5d 5d 04 94 13 94 13 01 00 ff ff ff ff */
 	diag_msg_config_set_rt_mask(di, 5000, 0xffffffff);
+	/* response: 5d 5d 04 88 13 88 13 01 00 ff ff ff ff */
 	diag_msg_config_set_rt_mask(di, 5030, 0xffffffff);
+	/* response: 5d 5d 04 a6 13 a6 13 01 00 ff ff ff ff */
 	diag_msg_config_set_rt_mask(di, 5009, 0xffffffff);
+	/* response: 5d 5d 04 91 13 91 13 01 00 ff ff ff ff */
 
 #if 0
 	printf("GSM\n");