diff --git a/src/cmdu.c b/src/cmdu.c
index b8f022ecc22caa526353b15f11c903d217f9d0ca..1a46b62f8b4aceb7cd1fe6ba6367529c44a543e6 100644
--- a/src/cmdu.c
+++ b/src/cmdu.c
@@ -335,6 +335,10 @@ struct cmdu_buff *cmdu_alloc_custom(uint16_t type, uint16_t *mid, char *ifname,
 	}
 
 	cmdu_set_type(f, type);
+
+	if (*mid == 0)
+		*mid = cmdu_get_next_mid();
+
 	cmdu_set_mid(f, *mid);
 
 	ret = cmdu_copy_tlvs_linear(f, tlvs, tlvslen);