diff options
author | Antonio Quartulli <ordex@autistici.org> | 2011-04-27 16:27:57 +0400 |
---|---|---|
committer | Sven Eckelmann <sven@narfation.org> | 2011-06-20 13:37:27 +0400 |
commit | cc47f66e6b9ec7e7d465f74739a6fc9844593894 (patch) | |
tree | 8fbda7f59267bca45f9e887d09ba1de2f3c62f8d /net/batman-adv/packet.h | |
parent | a73105b8d4c765d9ebfb664d0a66802127d8e4c7 (diff) | |
download | linux-cc47f66e6b9ec7e7d465f74739a6fc9844593894.tar.xz |
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.h | 13 |
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 { BAT_BCAST = 0x04, BAT_VIS = 0x05, BAT_UNICAST_FRAG = 0x06, - BAT_TT_QUERY = 0x07 + BAT_TT_QUERY = 0x07, + BAT_ROAM_ADV = 0x08 }; /* this file is included by batctl which needs these defines */ @@ -194,6 +195,16 @@ struct tt_query_packet { uint16_t tt_data; } __packed; +struct roam_adv_packet { + uint8_t packet_type; + uint8_t version; + uint8_t ttl; + uint8_t reserved; + uint8_t dst[ETH_ALEN]; + uint8_t src[ETH_ALEN]; + uint8_t client[ETH_ALEN]; +} __packed; + struct tt_change { uint8_t flags; uint8_t addr[ETH_ALEN]; |