diff --git a/src/cmdu.h b/src/cmdu.h
index b266b031f74402a1bc20905f29fd60799aab572f..35dd1d3142a9435078e161881bff6367f9e2c00e 100644
--- a/src/cmdu.h
+++ b/src/cmdu.h
@@ -93,6 +93,12 @@ struct cmdu_buff {
 	struct list_head list;
 };
 
+#define CMDU_PROCESSED	0x1
+
+#define IS_CMDU_PROCESSED(c)	!!((c)->flags & CMDU_PROCESSED)
+#define CMDU_SET_PROCESSED(c)	((c)->flags |= CMDU_PROCESSED)
+
+
 /**
  * @enum tlv_presence
  * @brief defines the policy for occurrences of a TLV in a CMDU frame.
diff --git a/src/cmdu_input.c b/src/cmdu_input.c
index 405ec9151848dddde54c50f9c5adc3b52673055c..d1c31ca82833bdc99b61f7251191775c205c3015 100644
--- a/src/cmdu_input.c
+++ b/src/cmdu_input.c
@@ -113,8 +113,7 @@ int i1905_handle_topology_discovery(const char *ifname, uint8_t *from,
 	neigh_set_1905(&((struct i1905_private *)priv)->neigh_q, aladdr_origin);
 	neigh_set_1905_slave(&((struct i1905_private *)priv)->neigh_q, macaddr_origin);
 
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 	//TODO: conditionally send topology query
@@ -179,8 +178,8 @@ int i1905_handle_topology_notification(const char *ifname, uint8_t *from,
 	if (ret)
 		i1905_dbg(LOG_RX, "Error sending relaying TOPOLOGY_CHANGE\n");
 
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 	/* query what changed */
@@ -196,8 +195,7 @@ int i1905_handle_topology_query(const char *ifname, uint8_t *from,
 	struct i1905_interface *iface;
 
 
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 	iface = i1905_ifname_to_interface(priv, ifname);
@@ -346,8 +344,7 @@ int i1905_handle_link_metric_query(const char *ifname, uint8_t *from,
 
 
 
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 	ret = i1905_cmdu_parse_tlvs(rxf, tv, 1);
@@ -511,8 +508,8 @@ int i1905_handle_ap_autoconfig_search(const char *ifname, uint8_t *from,
 	if (ret)
 		i1905_dbg(LOG_RX, "Error sending AP_AUTOCONFIG_SEARCH\n");
 
-	/* processed by extensions; don't proceed further */
-	if (rxf->flags == 1)
+
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 	if (tv[1][0]->data[0] != IEEE80211_ROLE_REGISTRAR) {
@@ -609,9 +606,7 @@ int i1905_handle_ap_autoconfig_response(const char *ifname, uint8_t *from,
 	if (((struct i1905_private *)priv)->start_apconfig != 1)
 		return 0;
 
-
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 
@@ -699,12 +694,9 @@ int i1905_handle_ap_autoconfig_renew(const char *ifname, uint8_t *from,
 	if (ret)
 		i1905_dbg(LOG_RX, "Error relaying AP_AUTOCONFIG_RENEW\n");
 
-
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
-
 	if (tv[1][0]->data[0] != IEEE80211_ROLE_REGISTRAR) {
 		i1905_dbg(LOG_RX,
 			"%s: Discard ap-autoconfig renew for role != registrar\n",
@@ -848,8 +840,7 @@ int i1905_handle_ap_autoconfig_wsc(const char *ifname, uint8_t *from,
 
 
 
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 
@@ -1028,8 +1019,7 @@ int i1905_handle_higherlayer_query(const char *ifname, uint8_t *from,
 	struct i1905_interface *iface;
 
 
-	//TODO: processed by extensions; use meaningful flag
-	if (rxf->flags == 1)
+	if (IS_CMDU_PROCESSED(rxf))
 		return 0;
 
 
@@ -1223,7 +1213,7 @@ int i1905_process_cmdu(struct i1905_private *priv, struct cmdu_buff *rxf)
 	case CMDU_DONE:
 	case CMDU_DROP:
 	case CMDU_RELAY:
-		rxf->flags = 1;
+		CMDU_SET_PROCESSED(rxf);
 	default:
 		break;
 	}
@@ -1246,7 +1236,7 @@ int i1905_process_cmdu(struct i1905_private *priv, struct cmdu_buff *rxf)
 		return -1;
 	}
 
-	if (rxf->flags == 0 && is_cmdu_type_response(type)) {
+	if (!IS_CMDU_PROCESSED(rxf) && is_cmdu_type_response(type)) {
 		/* discard responses with no matching request awaiting */
 		ret = cmdu_ackq_dequeue(&priv->txack_q, type, mid, src, &cookie);
 		if (ret) {