The following commit has been merged in the master branch: commit 02585b0b59becfbf14749f08069862f120000bdf Author: Antonio Quartulli ordex@autistici.org Date: Mon Jun 13 22:51:40 2011 +0200
batman-adv: clean up the tt_query flags field
The tt_query subtype is represented by the two leading bits (lsb) of the tt_query->flags field. Therefore it cannot be handled by simple "flags" but by two bits wide integer. The TT_QUERY_TYPE_MASK is used to extract the relevant bits that can be compared to the related enum values (TT_RESPONSE, TT_REQUEST)
Signed-off-by: Antonio Quartulli ordex@autistici.org Signed-off-by: Sven Eckelmann sven@narfation.org
diff --git a/packet.h b/packet.h index ef7476f..c5f081d 100644 --- a/packet.h +++ b/packet.h @@ -65,10 +65,16 @@ enum unicast_frag_flags { UNI_FRAG_LARGETAIL = 1 << 1 };
+/* TT_QUERY subtypes */ +#define TT_QUERY_TYPE_MASK 0x3 + +enum tt_query_packettype { + TT_REQUEST = 0, + TT_RESPONSE = 1 +}; + /* TT_QUERY flags */ enum tt_query_flags { - TT_RESPONSE = 1 << 0, - TT_REQUEST = 1 << 1, TT_FULL_TABLE = 1 << 2 };
diff --git a/routing.c b/routing.c index 7f458e9..3a3cfb8 100644 --- a/routing.c +++ b/routing.c @@ -1218,7 +1218,8 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
tt_query->tt_data = ntohs(tt_query->tt_data);
- if (tt_query->flags & TT_REQUEST) { + switch (tt_query->flags & TT_QUERY_TYPE_MASK) { + case TT_REQUEST: /* If we cannot provide an answer the tt_request is * forwarded */ if (!send_tt_response(bat_priv, tt_query)) { @@ -1229,22 +1230,23 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if) tt_query->tt_data = htons(tt_query->tt_data); return route_unicast_packet(skb, recv_if); } - ret = NET_RX_SUCCESS; - goto out; - } - /* packet needs to be linearised to access the TT changes records */ - if (skb_linearize(skb) < 0) - goto out; + break; + case TT_RESPONSE: + /* packet needs to be linearised to access the TT changes records */ + if (skb_linearize(skb) < 0) + goto out;
- if (is_my_mac(tt_query->dst)) - handle_tt_response(bat_priv, tt_query); - else { - bat_dbg(DBG_TT, bat_priv, - "Routing TT_RESPONSE to %pM [%c]\n", - tt_query->dst, - (tt_query->flags & TT_FULL_TABLE ? 'F' : '.')); - tt_query->tt_data = htons(tt_query->tt_data); - return route_unicast_packet(skb, recv_if); + if (is_my_mac(tt_query->dst)) + handle_tt_response(bat_priv, tt_query); + else { + bat_dbg(DBG_TT, bat_priv, + "Routing TT_RESPONSE to %pM [%c]\n", + tt_query->dst, + (tt_query->flags & TT_FULL_TABLE ? 'F' : '.')); + tt_query->tt_data = htons(tt_query->tt_data); + return route_unicast_packet(skb, recv_if); + } + break; } ret = NET_RX_SUCCESS;