aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/packet.h
diff options
context:
space:
mode:
authorAntonio Quartulli <ordex@autistici.org>2011-04-27 08:27:57 -0400
committerSven Eckelmann <sven@narfation.org>2011-06-20 05:37:27 -0400
commitcc47f66e6b9ec7e7d465f74739a6fc9844593894 (patch)
tree8fbda7f59267bca45f9e887d09ba1de2f3c62f8d /net/batman-adv/packet.h
parenta73105b8d4c765d9ebfb664d0a66802127d8e4c7 (diff)
batman-adv: improved roaming mechanism
With the current client announcement implementation, in case of roaming, an update is triggered on the new AP serving the client. At that point the new information is spread around by means of the OGM broadcasting mechanism. Until this operations is not executed, no node is able to correctly route traffic towards the client. This obviously causes packet drops and introduces a delay in the time needed by the client to recover its connections. A new packet type called ROAMING_ADVERTISEMENT is added to account this issue. This message is sent in case of roaming from the new AP serving the client to the old one and will contain the client MAC address. In this way an out-of-OGM update is immediately committed, so that the old node can update its global translation table. Traffic reaching this node will then be redirected to the correct destination utilising the fresher information. Thus reducing the packet drops and the connection recovery delay. Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
Diffstat (limited to 'net/batman-adv/packet.h')
-rw-r--r--net/batman-adv/packet.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h
index 407dd2e84aff..c5f081dfc6d1 100644
--- a/net/batman-adv/packet.h
+++ b/net/batman-adv/packet.h
@@ -31,7 +31,8 @@ enum bat_packettype {
31 BAT_BCAST = 0x04, 31 BAT_BCAST = 0x04,
32 BAT_VIS = 0x05, 32 BAT_VIS = 0x05,
33 BAT_UNICAST_FRAG = 0x06, 33 BAT_UNICAST_FRAG = 0x06,
34 BAT_TT_QUERY = 0x07 34 BAT_TT_QUERY = 0x07,
35 BAT_ROAM_ADV = 0x08
35}; 36};
36 37
37/* this file is included by batctl which needs these defines */ 38/* this file is included by batctl which needs these defines */
@@ -194,6 +195,16 @@ struct tt_query_packet {
194 uint16_t tt_data; 195 uint16_t tt_data;
195} __packed; 196} __packed;
196 197
198struct roam_adv_packet {
199 uint8_t packet_type;
200 uint8_t version;
201 uint8_t ttl;
202 uint8_t reserved;
203 uint8_t dst[ETH_ALEN];
204 uint8_t src[ETH_ALEN];
205 uint8_t client[ETH_ALEN];
206} __packed;
207
197struct tt_change { 208struct tt_change {
198 uint8_t flags; 209 uint8_t flags;
199 uint8_t addr[ETH_ALEN]; 210 uint8_t addr[ETH_ALEN];