|
@@ -1,4 +1,4 @@
|
|
|
-/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
|
|
|
|
|
|
+/* Copyright (C) 2007-2016 B.A.T.M.A.N. contributors:
|
|
|
*
|
|
*
|
|
|
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
|
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
|
|
*
|
|
*
|
|
@@ -68,7 +68,15 @@ static void batadv_tt_global_del(struct batadv_priv *bat_priv,
|
|
|
unsigned short vid, const char *message,
|
|
unsigned short vid, const char *message,
|
|
|
bool roaming);
|
|
bool roaming);
|
|
|
|
|
|
|
|
-/* returns 1 if they are the same mac addr and vid */
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * batadv_compare_tt - check if two TT entries are the same
|
|
|
|
|
+ * @node: the list element pointer of the first TT entry
|
|
|
|
|
+ * @data2: pointer to the tt_common_entry of the second TT entry
|
|
|
|
|
+ *
|
|
|
|
|
+ * Compare the MAC address and the VLAN ID of the two TT entries and check if
|
|
|
|
|
+ * they are the same TT client.
|
|
|
|
|
+ * Return: 1 if the two TT clients are the same, 0 otherwise
|
|
|
|
|
+ */
|
|
|
static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
|
|
static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
|
|
|
{
|
|
{
|
|
|
const void *data1 = container_of(node, struct batadv_tt_common_entry,
|
|
const void *data1 = container_of(node, struct batadv_tt_common_entry,
|
|
@@ -84,7 +92,7 @@ static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
|
|
|
* @data: pointer to the tt_common_entry object to map
|
|
* @data: pointer to the tt_common_entry object to map
|
|
|
* @size: the size of the hash table
|
|
* @size: the size of the hash table
|
|
|
*
|
|
*
|
|
|
- * Returns the hash index where the object represented by 'data' should be
|
|
|
|
|
|
|
+ * Return: the hash index where the object represented by 'data' should be
|
|
|
* stored at.
|
|
* stored at.
|
|
|
*/
|
|
*/
|
|
|
static inline u32 batadv_choose_tt(const void *data, u32 size)
|
|
static inline u32 batadv_choose_tt(const void *data, u32 size)
|
|
@@ -105,7 +113,7 @@ static inline u32 batadv_choose_tt(const void *data, u32 size)
|
|
|
* @addr: the mac address of the client to look for
|
|
* @addr: the mac address of the client to look for
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns a pointer to the tt_common struct belonging to the searched client if
|
|
|
|
|
|
|
+ * Return: a pointer to the tt_common struct belonging to the searched client if
|
|
|
* found, NULL otherwise.
|
|
* found, NULL otherwise.
|
|
|
*/
|
|
*/
|
|
|
static struct batadv_tt_common_entry *
|
|
static struct batadv_tt_common_entry *
|
|
@@ -150,7 +158,7 @@ batadv_tt_hash_find(struct batadv_hashtable *hash, const u8 *addr,
|
|
|
* @addr: the mac address of the client to look for
|
|
* @addr: the mac address of the client to look for
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns a pointer to the corresponding tt_local_entry struct if the client is
|
|
|
|
|
|
|
+ * Return: a pointer to the corresponding tt_local_entry struct if the client is
|
|
|
* found, NULL otherwise.
|
|
* found, NULL otherwise.
|
|
|
*/
|
|
*/
|
|
|
static struct batadv_tt_local_entry *
|
|
static struct batadv_tt_local_entry *
|
|
@@ -175,7 +183,7 @@ batadv_tt_local_hash_find(struct batadv_priv *bat_priv, const u8 *addr,
|
|
|
* @addr: the mac address of the client to look for
|
|
* @addr: the mac address of the client to look for
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns a pointer to the corresponding tt_global_entry struct if the client
|
|
|
|
|
|
|
+ * Return: a pointer to the corresponding tt_global_entry struct if the client
|
|
|
* is found, NULL otherwise.
|
|
* is found, NULL otherwise.
|
|
|
*/
|
|
*/
|
|
|
static struct batadv_tt_global_entry *
|
|
static struct batadv_tt_global_entry *
|
|
@@ -217,11 +225,11 @@ batadv_tt_global_entry_free_ref(struct batadv_tt_global_entry *tt_global_entry)
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* batadv_tt_global_hash_count - count the number of orig entries
|
|
* batadv_tt_global_hash_count - count the number of orig entries
|
|
|
- * @hash: hash table containing the tt entries
|
|
|
|
|
|
|
+ * @bat_priv: the bat priv with all the soft interface information
|
|
|
* @addr: the mac address of the client to count entries for
|
|
* @addr: the mac address of the client to count entries for
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Return the number of originators advertising the given address/data
|
|
|
|
|
|
|
+ * Return: the number of originators advertising the given address/data
|
|
|
* (excluding ourself).
|
|
* (excluding ourself).
|
|
|
*/
|
|
*/
|
|
|
int batadv_tt_global_hash_count(struct batadv_priv *bat_priv,
|
|
int batadv_tt_global_hash_count(struct batadv_priv *bat_priv,
|
|
@@ -286,9 +294,9 @@ static void batadv_tt_local_size_dec(struct batadv_priv *bat_priv,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * batadv_tt_global_size_mod - change the size by v of the local table
|
|
|
|
|
- * identified by vid
|
|
|
|
|
- * @bat_priv: the bat priv with all the soft interface information
|
|
|
|
|
|
|
+ * batadv_tt_global_size_mod - change the size by v of the global table
|
|
|
|
|
+ * for orig_node identified by vid
|
|
|
|
|
+ * @orig_node: the originator for which the table has to be modified
|
|
|
* @vid: the VLAN identifier
|
|
* @vid: the VLAN identifier
|
|
|
* @v: the amount to sum to the global table size
|
|
* @v: the amount to sum to the global table size
|
|
|
*/
|
|
*/
|
|
@@ -435,7 +443,7 @@ unlock:
|
|
|
* batadv_tt_len - compute length in bytes of given number of tt changes
|
|
* batadv_tt_len - compute length in bytes of given number of tt changes
|
|
|
* @changes_num: number of tt changes
|
|
* @changes_num: number of tt changes
|
|
|
*
|
|
*
|
|
|
- * Returns computed length in bytes.
|
|
|
|
|
|
|
+ * Return: computed length in bytes.
|
|
|
*/
|
|
*/
|
|
|
static int batadv_tt_len(int changes_num)
|
|
static int batadv_tt_len(int changes_num)
|
|
|
{
|
|
{
|
|
@@ -446,7 +454,7 @@ static int batadv_tt_len(int changes_num)
|
|
|
* batadv_tt_entries - compute the number of entries fitting in tt_len bytes
|
|
* batadv_tt_entries - compute the number of entries fitting in tt_len bytes
|
|
|
* @tt_len: available space
|
|
* @tt_len: available space
|
|
|
*
|
|
*
|
|
|
- * Returns the number of entries.
|
|
|
|
|
|
|
+ * Return: the number of entries.
|
|
|
*/
|
|
*/
|
|
|
static u16 batadv_tt_entries(u16 tt_len)
|
|
static u16 batadv_tt_entries(u16 tt_len)
|
|
|
{
|
|
{
|
|
@@ -458,7 +466,7 @@ static u16 batadv_tt_entries(u16 tt_len)
|
|
|
* size when transmitted over the air
|
|
* size when transmitted over the air
|
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
|
*
|
|
*
|
|
|
- * Returns local translation table size in bytes.
|
|
|
|
|
|
|
+ * Return: local translation table size in bytes.
|
|
|
*/
|
|
*/
|
|
|
static int batadv_tt_local_table_transmit_size(struct batadv_priv *bat_priv)
|
|
static int batadv_tt_local_table_transmit_size(struct batadv_priv *bat_priv)
|
|
|
{
|
|
{
|
|
@@ -524,7 +532,7 @@ static void batadv_tt_global_free(struct batadv_priv *bat_priv,
|
|
|
* @mark: the value contained in the skb->mark field of the received packet (if
|
|
* @mark: the value contained in the skb->mark field of the received packet (if
|
|
|
* any)
|
|
* any)
|
|
|
*
|
|
*
|
|
|
- * Returns true if the client was successfully added, false otherwise.
|
|
|
|
|
|
|
+ * Return: true if the client was successfully added, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr,
|
|
bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr,
|
|
|
unsigned short vid, int ifindex, u32 mark)
|
|
unsigned short vid, int ifindex, u32 mark)
|
|
@@ -719,12 +727,11 @@ out:
|
|
|
* function reserves the amount of space needed to send the entire global TT
|
|
* function reserves the amount of space needed to send the entire global TT
|
|
|
* table. In case of success the value is updated with the real amount of
|
|
* table. In case of success the value is updated with the real amount of
|
|
|
* reserved bytes
|
|
* reserved bytes
|
|
|
-
|
|
|
|
|
* Allocate the needed amount of memory for the entire TT TVLV and write its
|
|
* Allocate the needed amount of memory for the entire TT TVLV and write its
|
|
|
* header made up by one tvlv_tt_data object and a series of tvlv_tt_vlan_data
|
|
* header made up by one tvlv_tt_data object and a series of tvlv_tt_vlan_data
|
|
|
* objects, one per active VLAN served by the originator node.
|
|
* objects, one per active VLAN served by the originator node.
|
|
|
*
|
|
*
|
|
|
- * Return the size of the allocated buffer or 0 in case of failure.
|
|
|
|
|
|
|
+ * Return: the size of the allocated buffer or 0 in case of failure.
|
|
|
*/
|
|
*/
|
|
|
static u16
|
|
static u16
|
|
|
batadv_tt_prepare_tvlv_global_data(struct batadv_orig_node *orig_node,
|
|
batadv_tt_prepare_tvlv_global_data(struct batadv_orig_node *orig_node,
|
|
@@ -798,7 +805,7 @@ out:
|
|
|
* header made up by one tvlv_tt_data object and a series of tvlv_tt_vlan_data
|
|
* header made up by one tvlv_tt_data object and a series of tvlv_tt_vlan_data
|
|
|
* objects, one per active VLAN.
|
|
* objects, one per active VLAN.
|
|
|
*
|
|
*
|
|
|
- * Return the size of the allocated buffer or 0 in case of failure.
|
|
|
|
|
|
|
+ * Return: the size of the allocated buffer or 0 in case of failure.
|
|
|
*/
|
|
*/
|
|
|
static u16
|
|
static u16
|
|
|
batadv_tt_prepare_tvlv_local_data(struct batadv_priv *bat_priv,
|
|
batadv_tt_prepare_tvlv_local_data(struct batadv_priv *bat_priv,
|
|
@@ -1040,7 +1047,7 @@ batadv_tt_local_set_pending(struct batadv_priv *bat_priv,
|
|
|
* @message: message to append to the log on deletion
|
|
* @message: message to append to the log on deletion
|
|
|
* @roaming: true if the deletion is due to a roaming event
|
|
* @roaming: true if the deletion is due to a roaming event
|
|
|
*
|
|
*
|
|
|
- * Returns the flags assigned to the local entry before being deleted
|
|
|
|
|
|
|
+ * Return: the flags assigned to the local entry before being deleted
|
|
|
*/
|
|
*/
|
|
|
u16 batadv_tt_local_remove(struct batadv_priv *bat_priv, const u8 *addr,
|
|
u16 batadv_tt_local_remove(struct batadv_priv *bat_priv, const u8 *addr,
|
|
|
unsigned short vid, const char *message,
|
|
unsigned short vid, const char *message,
|
|
@@ -1240,10 +1247,16 @@ static void batadv_tt_changes_list_free(struct batadv_priv *bat_priv)
|
|
|
spin_unlock_bh(&bat_priv->tt.changes_list_lock);
|
|
spin_unlock_bh(&bat_priv->tt.changes_list_lock);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/* retrieves the orig_tt_list_entry belonging to orig_node from the
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * batadv_tt_global_orig_entry_find - find a TT orig_list_entry
|
|
|
|
|
+ * @entry: the TT global entry where the orig_list_entry has to be
|
|
|
|
|
+ * extracted from
|
|
|
|
|
+ * @orig_node: the originator for which the orig_list_entry has to be found
|
|
|
|
|
+ *
|
|
|
|
|
+ * retrieve the orig_tt_list_entry belonging to orig_node from the
|
|
|
* batadv_tt_global_entry list
|
|
* batadv_tt_global_entry list
|
|
|
*
|
|
*
|
|
|
- * returns it with an increased refcounter, NULL if not found
|
|
|
|
|
|
|
+ * Return: it with an increased refcounter, NULL if not found
|
|
|
*/
|
|
*/
|
|
|
static struct batadv_tt_orig_list_entry *
|
|
static struct batadv_tt_orig_list_entry *
|
|
|
batadv_tt_global_orig_entry_find(const struct batadv_tt_global_entry *entry,
|
|
batadv_tt_global_orig_entry_find(const struct batadv_tt_global_entry *entry,
|
|
@@ -1268,8 +1281,15 @@ batadv_tt_global_orig_entry_find(const struct batadv_tt_global_entry *entry,
|
|
|
return orig_entry;
|
|
return orig_entry;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/* find out if an orig_node is already in the list of a tt_global_entry.
|
|
|
|
|
- * returns true if found, false otherwise
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * batadv_tt_global_entry_has_orig - check if a TT global entry is also handled
|
|
|
|
|
+ * by a given originator
|
|
|
|
|
+ * @entry: the TT global entry to check
|
|
|
|
|
+ * @orig_node: the originator to search in the list
|
|
|
|
|
+ *
|
|
|
|
|
+ * find out if an orig_node is already in the list of a tt_global_entry.
|
|
|
|
|
+ *
|
|
|
|
|
+ * Return: true if found, false otherwise
|
|
|
*/
|
|
*/
|
|
|
static bool
|
|
static bool
|
|
|
batadv_tt_global_entry_has_orig(const struct batadv_tt_global_entry *entry,
|
|
batadv_tt_global_entry_has_orig(const struct batadv_tt_global_entry *entry,
|
|
@@ -1341,7 +1361,7 @@ out:
|
|
|
*
|
|
*
|
|
|
* The caller must hold orig_node refcount.
|
|
* The caller must hold orig_node refcount.
|
|
|
*
|
|
*
|
|
|
- * Return true if the new entry has been added, false otherwise
|
|
|
|
|
|
|
+ * Return: true if the new entry has been added, false otherwise
|
|
|
*/
|
|
*/
|
|
|
static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
|
|
static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
|
|
|
struct batadv_orig_node *orig_node,
|
|
struct batadv_orig_node *orig_node,
|
|
@@ -1499,7 +1519,7 @@ out:
|
|
|
* @tt_global_entry: global translation table entry to be analyzed
|
|
* @tt_global_entry: global translation table entry to be analyzed
|
|
|
*
|
|
*
|
|
|
* This functon assumes the caller holds rcu_read_lock().
|
|
* This functon assumes the caller holds rcu_read_lock().
|
|
|
- * Returns best originator list entry or NULL on errors.
|
|
|
|
|
|
|
+ * Return: best originator list entry or NULL on errors.
|
|
|
*/
|
|
*/
|
|
|
static struct batadv_tt_orig_list_entry *
|
|
static struct batadv_tt_orig_list_entry *
|
|
|
batadv_transtable_best_orig(struct batadv_priv *bat_priv,
|
|
batadv_transtable_best_orig(struct batadv_priv *bat_priv,
|
|
@@ -2029,7 +2049,7 @@ _batadv_is_ap_isolated(struct batadv_tt_local_entry *tt_local_entry,
|
|
|
* @addr: mac address of the destination client
|
|
* @addr: mac address of the destination client
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns a pointer to the originator that was selected as destination in the
|
|
|
|
|
|
|
+ * Return: a pointer to the originator that was selected as destination in the
|
|
|
* mesh for contacting the client 'addr', NULL otherwise.
|
|
* mesh for contacting the client 'addr', NULL otherwise.
|
|
|
* In case of multiple originators serving the same client, the function returns
|
|
* In case of multiple originators serving the same client, the function returns
|
|
|
* the best one (best in terms of metric towards the destination node).
|
|
* the best one (best in terms of metric towards the destination node).
|
|
@@ -2104,7 +2124,7 @@ out:
|
|
|
* because the XOR operation can combine them all while trying to reduce the
|
|
* because the XOR operation can combine them all while trying to reduce the
|
|
|
* noise as much as possible.
|
|
* noise as much as possible.
|
|
|
*
|
|
*
|
|
|
- * Returns the checksum of the global table of a given originator.
|
|
|
|
|
|
|
+ * Return: the checksum of the global table of a given originator.
|
|
|
*/
|
|
*/
|
|
|
static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv,
|
|
static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv,
|
|
|
struct batadv_orig_node *orig_node,
|
|
struct batadv_orig_node *orig_node,
|
|
@@ -2181,7 +2201,7 @@ static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv,
|
|
|
* For details about the computation, please refer to the documentation for
|
|
* For details about the computation, please refer to the documentation for
|
|
|
* batadv_tt_global_crc().
|
|
* batadv_tt_global_crc().
|
|
|
*
|
|
*
|
|
|
- * Returns the checksum of the local table
|
|
|
|
|
|
|
+ * Return: the checksum of the local table
|
|
|
*/
|
|
*/
|
|
|
static u32 batadv_tt_local_crc(struct batadv_priv *bat_priv,
|
|
static u32 batadv_tt_local_crc(struct batadv_priv *bat_priv,
|
|
|
unsigned short vid)
|
|
unsigned short vid)
|
|
@@ -2287,7 +2307,7 @@ static void batadv_tt_req_purge(struct batadv_priv *bat_priv)
|
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
|
* @orig_node: orig node this request is being issued for
|
|
* @orig_node: orig node this request is being issued for
|
|
|
*
|
|
*
|
|
|
- * Returns the pointer to the new tt_req_node struct if no request
|
|
|
|
|
|
|
+ * Return: the pointer to the new tt_req_node struct if no request
|
|
|
* has already been issued for this orig_node, NULL otherwise.
|
|
* has already been issued for this orig_node, NULL otherwise.
|
|
|
*/
|
|
*/
|
|
|
static struct batadv_tt_req_node *
|
|
static struct batadv_tt_req_node *
|
|
@@ -2322,7 +2342,7 @@ unlock:
|
|
|
* @entry_ptr: to be checked local tt entry
|
|
* @entry_ptr: to be checked local tt entry
|
|
|
* @data_ptr: not used but definition required to satisfy the callback prototype
|
|
* @data_ptr: not used but definition required to satisfy the callback prototype
|
|
|
*
|
|
*
|
|
|
- * Returns 1 if the entry is a valid, 0 otherwise.
|
|
|
|
|
|
|
+ * Return: 1 if the entry is a valid, 0 otherwise.
|
|
|
*/
|
|
*/
|
|
|
static int batadv_tt_local_valid(const void *entry_ptr, const void *data_ptr)
|
|
static int batadv_tt_local_valid(const void *entry_ptr, const void *data_ptr)
|
|
|
{
|
|
{
|
|
@@ -2406,9 +2426,8 @@ static void batadv_tt_tvlv_generate(struct batadv_priv *bat_priv,
|
|
|
* @orig_node: originator for which the CRCs have to be checked
|
|
* @orig_node: originator for which the CRCs have to be checked
|
|
|
* @tt_vlan: pointer to the first tvlv VLAN entry
|
|
* @tt_vlan: pointer to the first tvlv VLAN entry
|
|
|
* @num_vlan: number of tvlv VLAN entries
|
|
* @num_vlan: number of tvlv VLAN entries
|
|
|
- * @create: if true, create VLAN objects if not found
|
|
|
|
|
*
|
|
*
|
|
|
- * Return true if all the received CRCs match the locally stored ones, false
|
|
|
|
|
|
|
+ * Return: true if all the received CRCs match the locally stored ones, false
|
|
|
* otherwise
|
|
* otherwise
|
|
|
*/
|
|
*/
|
|
|
static bool batadv_tt_global_check_crc(struct batadv_orig_node *orig_node,
|
|
static bool batadv_tt_global_check_crc(struct batadv_orig_node *orig_node,
|
|
@@ -2511,6 +2530,8 @@ static void batadv_tt_global_update_crc(struct batadv_priv *bat_priv,
|
|
|
* @num_vlan: number of tvlv VLAN entries
|
|
* @num_vlan: number of tvlv VLAN entries
|
|
|
* @full_table: ask for the entire translation table if true, while only for the
|
|
* @full_table: ask for the entire translation table if true, while only for the
|
|
|
* last TT diff otherwise
|
|
* last TT diff otherwise
|
|
|
|
|
+ *
|
|
|
|
|
+ * Return: true if the TT Request was sent, false otherwise
|
|
|
*/
|
|
*/
|
|
|
static int batadv_send_tt_request(struct batadv_priv *bat_priv,
|
|
static int batadv_send_tt_request(struct batadv_priv *bat_priv,
|
|
|
struct batadv_orig_node *dst_orig_node,
|
|
struct batadv_orig_node *dst_orig_node,
|
|
@@ -2591,7 +2612,7 @@ out:
|
|
|
* @req_src: mac address of tt request sender
|
|
* @req_src: mac address of tt request sender
|
|
|
* @req_dst: mac address of tt request recipient
|
|
* @req_dst: mac address of tt request recipient
|
|
|
*
|
|
*
|
|
|
- * Returns true if tt request reply was sent, false otherwise.
|
|
|
|
|
|
|
+ * Return: true if tt request reply was sent, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
static bool batadv_send_other_tt_response(struct batadv_priv *bat_priv,
|
|
static bool batadv_send_other_tt_response(struct batadv_priv *bat_priv,
|
|
|
struct batadv_tvlv_tt_data *tt_data,
|
|
struct batadv_tvlv_tt_data *tt_data,
|
|
@@ -2723,7 +2744,7 @@ out:
|
|
|
* @tt_data: tt data containing the tt request information
|
|
* @tt_data: tt data containing the tt request information
|
|
|
* @req_src: mac address of tt request sender
|
|
* @req_src: mac address of tt request sender
|
|
|
*
|
|
*
|
|
|
- * Returns true if tt request reply was sent, false otherwise.
|
|
|
|
|
|
|
+ * Return: true if tt request reply was sent, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv,
|
|
static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv,
|
|
|
struct batadv_tvlv_tt_data *tt_data,
|
|
struct batadv_tvlv_tt_data *tt_data,
|
|
@@ -2841,7 +2862,7 @@ out:
|
|
|
* @req_src: mac address of tt request sender
|
|
* @req_src: mac address of tt request sender
|
|
|
* @req_dst: mac address of tt request recipient
|
|
* @req_dst: mac address of tt request recipient
|
|
|
*
|
|
*
|
|
|
- * Returns true if tt request reply was sent, false otherwise.
|
|
|
|
|
|
|
+ * Return: true if tt request reply was sent, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
static bool batadv_send_tt_response(struct batadv_priv *bat_priv,
|
|
static bool batadv_send_tt_response(struct batadv_priv *bat_priv,
|
|
|
struct batadv_tvlv_tt_data *tt_data,
|
|
struct batadv_tvlv_tt_data *tt_data,
|
|
@@ -2936,7 +2957,7 @@ static void batadv_tt_update_changes(struct batadv_priv *bat_priv,
|
|
|
* @addr: the mac address of the client to check
|
|
* @addr: the mac address of the client to check
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns true if the client is served by this node, false otherwise.
|
|
|
|
|
|
|
+ * Return: true if the client is served by this node, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
bool batadv_is_my_client(struct batadv_priv *bat_priv, const u8 *addr,
|
|
bool batadv_is_my_client(struct batadv_priv *bat_priv, const u8 *addr,
|
|
|
unsigned short vid)
|
|
unsigned short vid)
|
|
@@ -3053,11 +3074,16 @@ static void batadv_tt_roam_purge(struct batadv_priv *bat_priv)
|
|
|
spin_unlock_bh(&bat_priv->tt.roam_list_lock);
|
|
spin_unlock_bh(&bat_priv->tt.roam_list_lock);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/* This function checks whether the client already reached the
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * batadv_tt_check_roam_count - check if a client has roamed too frequently
|
|
|
|
|
+ * @bat_priv: the bat priv with all the soft interface information
|
|
|
|
|
+ * @client: mac address of the roaming client
|
|
|
|
|
+ *
|
|
|
|
|
+ * This function checks whether the client already reached the
|
|
|
* maximum number of possible roaming phases. In this case the ROAMING_ADV
|
|
* maximum number of possible roaming phases. In this case the ROAMING_ADV
|
|
|
* will not be sent.
|
|
* will not be sent.
|
|
|
*
|
|
*
|
|
|
- * returns true if the ROAMING_ADV can be sent, false otherwise
|
|
|
|
|
|
|
+ * Return: true if the ROAMING_ADV can be sent, false otherwise
|
|
|
*/
|
|
*/
|
|
|
static bool batadv_tt_check_roam_count(struct batadv_priv *bat_priv, u8 *client)
|
|
static bool batadv_tt_check_roam_count(struct batadv_priv *bat_priv, u8 *client)
|
|
|
{
|
|
{
|
|
@@ -3369,13 +3395,12 @@ out:
|
|
|
* batadv_tt_update_orig - update global translation table with new tt
|
|
* batadv_tt_update_orig - update global translation table with new tt
|
|
|
* information received via ogms
|
|
* information received via ogms
|
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
|
- * @orig: the orig_node of the ogm
|
|
|
|
|
- * @tt_vlan: pointer to the first tvlv VLAN entry
|
|
|
|
|
|
|
+ * @orig_node: the orig_node of the ogm
|
|
|
|
|
+ * @tt_buff: pointer to the first tvlv VLAN entry
|
|
|
* @tt_num_vlan: number of tvlv VLAN entries
|
|
* @tt_num_vlan: number of tvlv VLAN entries
|
|
|
* @tt_change: pointer to the first entry in the TT buffer
|
|
* @tt_change: pointer to the first entry in the TT buffer
|
|
|
* @tt_num_changes: number of tt changes inside the tt buffer
|
|
* @tt_num_changes: number of tt changes inside the tt buffer
|
|
|
* @ttvn: translation table version number of this changeset
|
|
* @ttvn: translation table version number of this changeset
|
|
|
- * @tt_crc: crc32 checksum of orig node's translation table
|
|
|
|
|
*/
|
|
*/
|
|
|
static void batadv_tt_update_orig(struct batadv_priv *bat_priv,
|
|
static void batadv_tt_update_orig(struct batadv_priv *bat_priv,
|
|
|
struct batadv_orig_node *orig_node,
|
|
struct batadv_orig_node *orig_node,
|
|
@@ -3457,7 +3482,7 @@ request_table:
|
|
|
* @addr: the mac address of the client to check
|
|
* @addr: the mac address of the client to check
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns true if we know that the client has moved from its old originator
|
|
|
|
|
|
|
+ * Return: true if we know that the client has moved from its old originator
|
|
|
* to another one. This entry is still kept for consistency purposes and will be
|
|
* to another one. This entry is still kept for consistency purposes and will be
|
|
|
* deleted later by a DEL or because of timeout
|
|
* deleted later by a DEL or because of timeout
|
|
|
*/
|
|
*/
|
|
@@ -3483,7 +3508,7 @@ out:
|
|
|
* @addr: the mac address of the local client to query
|
|
* @addr: the mac address of the local client to query
|
|
|
* @vid: VLAN identifier
|
|
* @vid: VLAN identifier
|
|
|
*
|
|
*
|
|
|
- * Returns true if the local client is known to be roaming (it is not served by
|
|
|
|
|
|
|
+ * Return: true if the local client is known to be roaming (it is not served by
|
|
|
* this node anymore) or not. If yes, the client is still present in the table
|
|
* this node anymore) or not. If yes, the client is still present in the table
|
|
|
* to keep the latter consistent with the node TTVN
|
|
* to keep the latter consistent with the node TTVN
|
|
|
*/
|
|
*/
|
|
@@ -3612,7 +3637,7 @@ static void batadv_tt_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv,
|
|
|
* @tvlv_value: tvlv buffer containing the tt data
|
|
* @tvlv_value: tvlv buffer containing the tt data
|
|
|
* @tvlv_value_len: tvlv buffer length
|
|
* @tvlv_value_len: tvlv buffer length
|
|
|
*
|
|
*
|
|
|
- * Returns NET_RX_DROP if the tt tvlv is to be re-routed, NET_RX_SUCCESS
|
|
|
|
|
|
|
+ * Return: NET_RX_DROP if the tt tvlv is to be re-routed, NET_RX_SUCCESS
|
|
|
* otherwise.
|
|
* otherwise.
|
|
|
*/
|
|
*/
|
|
|
static int batadv_tt_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv,
|
|
static int batadv_tt_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv,
|
|
@@ -3693,7 +3718,7 @@ static int batadv_tt_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv,
|
|
|
* @tvlv_value: tvlv buffer containing the tt data
|
|
* @tvlv_value: tvlv buffer containing the tt data
|
|
|
* @tvlv_value_len: tvlv buffer length
|
|
* @tvlv_value_len: tvlv buffer length
|
|
|
*
|
|
*
|
|
|
- * Returns NET_RX_DROP if the tt roam tvlv is to be re-routed, NET_RX_SUCCESS
|
|
|
|
|
|
|
+ * Return: NET_RX_DROP if the tt roam tvlv is to be re-routed, NET_RX_SUCCESS
|
|
|
* otherwise.
|
|
* otherwise.
|
|
|
*/
|
|
*/
|
|
|
static int batadv_roam_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv,
|
|
static int batadv_roam_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv,
|
|
@@ -3739,7 +3764,7 @@ out:
|
|
|
* batadv_tt_init - initialise the translation table internals
|
|
* batadv_tt_init - initialise the translation table internals
|
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
* @bat_priv: the bat priv with all the soft interface information
|
|
|
*
|
|
*
|
|
|
- * Return 0 on success or negative error number in case of failure.
|
|
|
|
|
|
|
+ * Return: 0 on success or negative error number in case of failure.
|
|
|
*/
|
|
*/
|
|
|
int batadv_tt_init(struct batadv_priv *bat_priv)
|
|
int batadv_tt_init(struct batadv_priv *bat_priv)
|
|
|
{
|
|
{
|
|
@@ -3777,7 +3802,7 @@ int batadv_tt_init(struct batadv_priv *bat_priv)
|
|
|
* @addr: the mac address of the client
|
|
* @addr: the mac address of the client
|
|
|
* @vid: the identifier of the VLAN where this client is connected
|
|
* @vid: the identifier of the VLAN where this client is connected
|
|
|
*
|
|
*
|
|
|
- * Returns true if the client is marked with the TT_CLIENT_ISOLA flag, false
|
|
|
|
|
|
|
+ * Return: true if the client is marked with the TT_CLIENT_ISOLA flag, false
|
|
|
* otherwise
|
|
* otherwise
|
|
|
*/
|
|
*/
|
|
|
bool batadv_tt_global_is_isolated(struct batadv_priv *bat_priv,
|
|
bool batadv_tt_global_is_isolated(struct batadv_priv *bat_priv,
|