[v2,1/2] batman-adv: move hash_bytes into hash.h
Commit Message
This function will be used by other parts of batman-adv as well.
Reported-by: Marek Lindner <lindner_marek@yahoo.de>
Reported-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
---
bridge_loop_avoidance.c | 20 ++++----------------
hash.h | 18 ++++++++++++++++++
2 files changed, 22 insertions(+), 16 deletions(-)
Comments
On Tuesday, October 16, 2012 04:38:03 Simon Wunderlich wrote:
> This function will be used by other parts of batman-adv as well.
>
> Reported-by: Marek Lindner <lindner_marek@yahoo.de>
> Reported-by: Sven Eckelmann <sven@narfation.org>
> Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
> ---
> bridge_loop_avoidance.c | 20 ++++----------------
> hash.h | 18 ++++++++++++++++++
> 2 files changed, 22 insertions(+), 16 deletions(-)
Applied in revision f64999e.
Thanks,
Marek
@@ -37,26 +37,14 @@ static void batadv_bla_periodic_work(struct work_struct *work);
static void batadv_bla_send_announce(struct batadv_priv *bat_priv,
struct batadv_backbone_gw *backbone_gw);
-static inline void hash_bytes(uint32_t *hash, void *data, uint32_t size)
-{
- const unsigned char *key = data;
- int i;
-
- for (i = 0; i < size; i++) {
- *hash += key[i];
- *hash += (*hash << 10);
- *hash ^= (*hash >> 6);
- }
-}
-
/* return the index of the claim */
static inline uint32_t batadv_choose_claim(const void *data, uint32_t size)
{
struct batadv_claim *claim = (struct batadv_claim *)data;
uint32_t hash = 0;
- hash_bytes(&hash, &claim->addr, sizeof(claim->addr));
- hash_bytes(&hash, &claim->vid, sizeof(claim->vid));
+ batadv_hash_bytes(&hash, &claim->addr, sizeof(claim->addr));
+ batadv_hash_bytes(&hash, &claim->vid, sizeof(claim->vid));
hash += (hash << 3);
hash ^= (hash >> 11);
@@ -72,8 +60,8 @@ static inline uint32_t batadv_choose_backbone_gw(const void *data,
struct batadv_claim *claim = (struct batadv_claim *)data;
uint32_t hash = 0;
- hash_bytes(&hash, &claim->addr, sizeof(claim->addr));
- hash_bytes(&hash, &claim->vid, sizeof(claim->vid));
+ batadv_hash_bytes(&hash, &claim->addr, sizeof(claim->addr));
+ batadv_hash_bytes(&hash, &claim->vid, sizeof(claim->vid));
hash += (hash << 3);
hash ^= (hash >> 11);
@@ -82,6 +82,24 @@ static inline void batadv_hash_delete(struct batadv_hashtable *hash,
}
/**
+ * batadv_hash_bytes - hash some bytes and add them to the previous hash
+ * @hash: previous hash value
+ * @data: data to be hashed
+ * @size: number of bytes to be hashed
+ */
+static inline void batadv_hash_bytes(uint32_t *hash, void *data, uint32_t size)
+{
+ const unsigned char *key = data;
+ int i;
+
+ for (i = 0; i < size; i++) {
+ *hash += key[i];
+ *hash += (*hash << 10);
+ *hash ^= (*hash >> 6);
+ }
+}
+
+/**
* batadv_hash_add - adds data to the hashtable
* @hash: storage hash table
* @compare: callback to determine if 2 hash elements are identical