introduce API for MSG SSID runtime mask configuration
diff --git a/src/diag_msg.c b/src/diag_msg.c
index 71ec9ea..646663e 100644
--- a/src/diag_msg.c
+++ b/src/diag_msg.c
@@ -4,11 +4,48 @@
 #include <string.h>
 
 #include <osmocom/core/msgb.h>
+#include <osmocom/core/bit16gen.h>
+#include <osmocom/core/bit32gen.h>
 
 #include "protocol.h"
 #include "diag_msg.h"
 #include "diagcmd.h"
 
+struct diag_set_rt_mask_req {
+	uint8_t cmd_code;
+	uint8_t sub_cmd;
+	uint16_t ssid_start;
+	uint16_t ssid_end;
+	uint16_t _pad;
+	uint32_t runtime_mask[1];
+};
+
+#define MSG_EXT_SUBCMD_SET_RT_MASK	4
+
+struct msgb *gen_msg_config_set_rt_mask(uint16_t ssid, uint32_t runtime_mask)
+{
+	struct msgb *msg = msgb_alloc(DIAG_MAX_REQ_SIZE, "Diag Msg Config");
+	struct diag_set_rt_mask_req *dsrmr;
+
+	msg->l2h = msgb_put(msg, sizeof(*dsrmr));
+	dsrmr = (struct diag_set_rt_mask_req *) msg->l2h;
+	dsrmr->cmd_code = DIAG_EXT_MSG_CONFIG_F;
+	dsrmr->sub_cmd = MSG_EXT_SUBCMD_SET_RT_MASK;
+	osmo_store16le(ssid, &dsrmr->ssid_start);
+	osmo_store16le(ssid, &dsrmr->ssid_end);
+	osmo_store32le(runtime_mask, &dsrmr->runtime_mask[0]);
+
+	return msg;
+}
+
+int diag_msg_config_set_rt_mask(struct diag_instance *di, uint16_t ssid, uint32_t runtime_mask)
+{
+	struct msgb *msg = gen_msg_config_set_rt_mask(ssid, runtime_mask);
+	diag_transmit_msgb(di, msg);
+	diag_read(di);
+
+	return 0;
+}
 
 /* handler for EXT MSG */
 int diag_rx_ext_msg_f(struct diag_instance *di, struct msgb *msgb)