Commit | Line | Data |
---|---|---|
7db7d9f3 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
cfa55c6d | 2 | /* Copyright (C) B.A.T.M.A.N. contributors: |
c6c8fea2 | 3 | * |
35c133a0 | 4 | * Marek Lindner, Simon Wunderlich, Antonio Quartulli |
c6c8fea2 SE |
5 | */ |
6 | ||
7 | #ifndef _NET_BATMAN_ADV_TRANSLATION_TABLE_H_ | |
8 | #define _NET_BATMAN_ADV_TRANSLATION_TABLE_H_ | |
9 | ||
1e2c2a4f SE |
10 | #include "main.h" |
11 | ||
6340dcbd | 12 | #include <linux/kref.h> |
68a600de SE |
13 | #include <linux/netdevice.h> |
14 | #include <linux/netlink.h> | |
68a600de | 15 | #include <linux/skbuff.h> |
1e2c2a4f SE |
16 | #include <linux/types.h> |
17 | ||
56303d34 | 18 | int batadv_tt_init(struct batadv_priv *bat_priv); |
6b5e971a SE |
19 | bool batadv_tt_local_add(struct net_device *soft_iface, const u8 *addr, |
20 | unsigned short vid, int ifindex, u32 mark); | |
21 | u16 batadv_tt_local_remove(struct batadv_priv *bat_priv, | |
22 | const u8 *addr, unsigned short vid, | |
23 | const char *message, bool roaming); | |
d34f0550 MS |
24 | int batadv_tt_local_dump(struct sk_buff *msg, struct netlink_callback *cb); |
25 | int batadv_tt_global_dump(struct sk_buff *msg, struct netlink_callback *cb); | |
56303d34 SE |
26 | void batadv_tt_global_del_orig(struct batadv_priv *bat_priv, |
27 | struct batadv_orig_node *orig_node, | |
6b5e971a | 28 | s32 match_vid, const char *message); |
32e72744 LL |
29 | struct batadv_tt_global_entry * |
30 | batadv_tt_global_hash_find(struct batadv_priv *bat_priv, const u8 *addr, | |
31 | unsigned short vid); | |
6340dcbd | 32 | void batadv_tt_global_entry_release(struct kref *ref); |
1d8ab8d3 | 33 | int batadv_tt_global_hash_count(struct batadv_priv *bat_priv, |
6b5e971a | 34 | const u8 *addr, unsigned short vid); |
56303d34 | 35 | struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv, |
6b5e971a | 36 | const u8 *src, const u8 *addr, |
c018ad3d | 37 | unsigned short vid); |
56303d34 | 38 | void batadv_tt_free(struct batadv_priv *bat_priv); |
6b5e971a | 39 | bool batadv_is_my_client(struct batadv_priv *bat_priv, const u8 *addr, |
c018ad3d | 40 | unsigned short vid); |
6b5e971a SE |
41 | bool batadv_is_ap_isolated(struct batadv_priv *bat_priv, u8 *src, u8 *dst, |
42 | unsigned short vid); | |
e1bf0c14 | 43 | void batadv_tt_local_commit_changes(struct batadv_priv *bat_priv); |
56303d34 | 44 | bool batadv_tt_global_client_is_roaming(struct batadv_priv *bat_priv, |
6b5e971a | 45 | u8 *addr, unsigned short vid); |
7c1fd91d | 46 | bool batadv_tt_local_client_is_roaming(struct batadv_priv *bat_priv, |
6b5e971a | 47 | u8 *addr, unsigned short vid); |
a19d3d85 | 48 | void batadv_tt_local_resize_to_mtu(struct net_device *soft_iface); |
30cfd02b AQ |
49 | bool batadv_tt_add_temporary_global_entry(struct batadv_priv *bat_priv, |
50 | struct batadv_orig_node *orig_node, | |
c018ad3d AQ |
51 | const unsigned char *addr, |
52 | unsigned short vid); | |
42cb0bef | 53 | bool batadv_tt_global_is_isolated(struct batadv_priv *bat_priv, |
6b5e971a | 54 | const u8 *addr, unsigned short vid); |
c6c8fea2 | 55 | |
86452f81 SE |
56 | int batadv_tt_cache_init(void); |
57 | void batadv_tt_cache_destroy(void); | |
58 | ||
6340dcbd SE |
59 | /** |
60 | * batadv_tt_global_entry_put() - decrement the tt_global_entry refcounter and | |
61 | * possibly release it | |
62 | * @tt_global_entry: tt_global_entry to be free'd | |
63 | */ | |
64 | static inline void | |
65 | batadv_tt_global_entry_put(struct batadv_tt_global_entry *tt_global_entry) | |
66 | { | |
67 | if (!tt_global_entry) | |
68 | return; | |
69 | ||
70 | kref_put(&tt_global_entry->common.refcount, | |
71 | batadv_tt_global_entry_release); | |
72 | } | |
73 | ||
c6c8fea2 | 74 | #endif /* _NET_BATMAN_ADV_TRANSLATION_TABLE_H_ */ |