Blame view
net/batman-adv/main.h
6.61 KB
c6c8fea29 net: Add batman-a... |
1 |
/* |
64afe3539 batman-adv: Updat... |
2 |
* Copyright (C) 2007-2011 B.A.T.M.A.N. contributors: |
c6c8fea29 net: Add batman-a... |
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
* * Marek Lindner, Simon Wunderlich * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA * */ #ifndef _NET_BATMAN_ADV_MAIN_H_ #define _NET_BATMAN_ADV_MAIN_H_ |
c6c8fea29 net: Add batman-a... |
24 25 26 27 |
#define DRIVER_AUTHOR "Marek Lindner <lindner_marek@yahoo.de>, " \ "Simon Wunderlich <siwu@hrz.tu-chemnitz.de>" #define DRIVER_DESC "B.A.T.M.A.N. advanced" #define DRIVER_DEVICE "batman-adv" |
44c4349a2 batman-adv: Repla... |
28 |
#ifndef SOURCE_VERSION |
c20186b90 batman-adv: updat... |
29 |
#define SOURCE_VERSION "2012.0.0" |
44c4349a2 batman-adv: Repla... |
30 |
#endif |
c6c8fea29 net: Add batman-a... |
31 32 33 34 35 |
/* B.A.T.M.A.N. parameters */ #define TQ_MAX_VALUE 255 #define JITTER 20 |
c6c8fea29 net: Add batman-a... |
36 |
|
6e215fd8e batman-adv: Remov... |
37 38 39 40 41 42 |
/* Time To Live of broadcast messages */ #define TTL 50 /* purge originators after time in seconds if no valid packet comes in * -> TODO: check influence on TQ_LOCAL_WINDOW_SIZE */ #define PURGE_TIMEOUT 200 |
2dafb49d8 batman-adv: renam... |
43 |
#define TT_LOCAL_TIMEOUT 3600 /* in seconds */ |
cc47f66e6 batman-adv: impro... |
44 |
#define TT_CLIENT_ROAM_TIMEOUT 600 |
015758d00 batman-adv: corre... |
45 |
/* sliding packet range of received originator messages in sequence numbers |
6e215fd8e batman-adv: Remov... |
46 47 |
* (should be a multiple of our word size) */ #define TQ_LOCAL_WINDOW_SIZE 64 |
a73105b8d batman-adv: impro... |
48 |
#define TT_REQUEST_TIMEOUT 3 /* seconds we have to keep pending tt_req */ |
c6c8fea29 net: Add batman-a... |
49 50 51 52 |
#define TQ_GLOBAL_WINDOW_SIZE 5 #define TQ_LOCAL_BIDRECT_SEND_MINIMUM 1 #define TQ_LOCAL_BIDRECT_RECV_MINIMUM 1 #define TQ_TOTAL_BIDRECT_LIMIT 1 |
a73105b8d batman-adv: impro... |
53 |
#define TT_OGM_APPEND_MAX 3 /* number of OGMs sent with the last tt diff */ |
cc47f66e6 batman-adv: impro... |
54 55 56 |
#define ROAMING_MAX_TIME 20 /* Time in which a client can roam at most * ROAMING_MAX_COUNT times */ #define ROAMING_MAX_COUNT 5 |
ecbd53210 batman-adv: use N... |
57 |
#define NO_FLAGS 0 |
bc2790808 batman-adv: detec... |
58 |
#define NULL_IFINDEX 0 /* dummy ifindex used to avoid iface checks */ |
c6c8fea29 net: Add batman-a... |
59 |
#define NUM_WORDS (TQ_LOCAL_WINDOW_SIZE / WORD_BIT_SIZE) |
c6c8fea29 net: Add batman-a... |
60 61 62 |
#define LOG_BUF_LEN 8192 /* has to be a power of 2 */ #define VIS_INTERVAL 5000 /* 5 seconds */ |
6e215fd8e batman-adv: Remov... |
63 64 |
/* how much worse secondary interfaces may be to be considered as bonding * candidates */ |
c6c8fea29 net: Add batman-a... |
65 |
#define BONDING_TQ_THRESHOLD 50 |
6e215fd8e batman-adv: Remov... |
66 67 68 |
/* should not be bigger than 512 bytes or change the size of * forw_packet->direct_link_flags */ #define MAX_AGGREGATION_BYTES 512 |
c6c8fea29 net: Add batman-a... |
69 70 71 |
#define MAX_AGGREGATION_MS 100 #define SOFTIF_NEIGH_TIMEOUT 180000 /* 3 minutes */ |
6e215fd8e batman-adv: Remov... |
72 |
/* don't reset again within 30 seconds */ |
c6c8fea29 net: Add batman-a... |
73 74 |
#define RESET_PROTECTION_MS 30000 #define EXPECTED_SEQNO_RANGE 65536 |
c6c8fea29 net: Add batman-a... |
75 |
|
e8958dbf0 batman-adv: Use e... |
76 77 78 79 80 |
enum mesh_state { MESH_INACTIVE, MESH_ACTIVE, MESH_DEACTIVATING }; |
c6c8fea29 net: Add batman-a... |
81 82 83 |
#define BCAST_QUEUE_LEN 256 #define BATMAN_QUEUE_LEN 256 |
c6bda689c batman-adv: add w... |
84 85 86 87 88 89 90 91 92 |
enum uev_action { UEV_ADD = 0, UEV_DEL, UEV_CHANGE }; enum uev_type { UEV_GW = 0 }; |
43676ab59 batman-adv: impro... |
93 |
#define GW_THRESHOLD 50 |
c6c8fea29 net: Add batman-a... |
94 95 96 97 98 99 |
/* * Debug Messages */ #ifdef pr_fmt #undef pr_fmt #endif |
6e215fd8e batman-adv: Remov... |
100 101 |
/* Append 'batman-adv: ' before kernel messages */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
c6c8fea29 net: Add batman-a... |
102 |
|
6e215fd8e batman-adv: Remov... |
103 |
/* all messages related to routing / flooding / broadcasting / etc */ |
e8958dbf0 batman-adv: Use e... |
104 105 106 |
enum dbg_level { DBG_BATMAN = 1 << 0, DBG_ROUTES = 1 << 1, /* route added / changed / deleted */ |
a73105b8d batman-adv: impro... |
107 108 |
DBG_TT = 1 << 2, /* translation table operations */ DBG_ALL = 7 |
e8958dbf0 batman-adv: Use e... |
109 |
}; |
c6c8fea29 net: Add batman-a... |
110 |
|
c6c8fea29 net: Add batman-a... |
111 112 113 114 |
/* * Vis */ |
c6c8fea29 net: Add batman-a... |
115 116 117 118 119 120 121 |
/* * Kernel headers */ #include <linux/mutex.h> /* mutex */ #include <linux/module.h> /* needed by all modules */ #include <linux/netdevice.h> /* netdevice */ |
015758d00 batman-adv: corre... |
122 |
#include <linux/etherdevice.h> /* ethernet address classification */ |
c6c8fea29 net: Add batman-a... |
123 124 125 126 127 128 129 130 131 132 |
#include <linux/if_ether.h> /* ethernet header */ #include <linux/poll.h> /* poll_table */ #include <linux/kthread.h> /* kernel threads */ #include <linux/pkt_sched.h> /* schedule types */ #include <linux/workqueue.h> /* workqueue */ #include <linux/slab.h> #include <net/sock.h> /* struct sock */ #include <linux/jiffies.h> #include <linux/seq_file.h> #include "types.h" |
4389e47af batman-adv: renam... |
133 |
extern struct list_head hardif_list; |
c6c8fea29 net: Add batman-a... |
134 135 136 137 138 139 140 141 |
extern unsigned char broadcast_addr[]; extern struct workqueue_struct *bat_event_workqueue; int mesh_init(struct net_device *soft_iface); void mesh_free(struct net_device *soft_iface); void inc_module_count(void); void dec_module_count(void); |
747e4221a batman-adv: Add c... |
142 |
int is_my_mac(const uint8_t *addr); |
c6c8fea29 net: Add batman-a... |
143 144 |
#ifdef CONFIG_BATMAN_ADV_DEBUG |
747e4221a batman-adv: Add c... |
145 |
int debug_log(struct bat_priv *bat_priv, const char *fmt, ...) __printf(2, 3); |
c6c8fea29 net: Add batman-a... |
146 147 148 149 150 151 152 153 |
#define bat_dbg(type, bat_priv, fmt, arg...) \ do { \ if (atomic_read(&bat_priv->log_level) & type) \ debug_log(bat_priv, fmt, ## arg); \ } \ while (0) #else /* !CONFIG_BATMAN_ADV_DEBUG */ |
d3a547be4 batman-adv: Annot... |
154 |
__printf(3, 4) |
b4e170541 batman-adv: Reduc... |
155 |
static inline void bat_dbg(int type __always_unused, |
aa0adb1a8 batman-adv: Use "... |
156 |
struct bat_priv *bat_priv __always_unused, |
747e4221a batman-adv: Add c... |
157 |
const char *fmt __always_unused, ...) |
c6c8fea29 net: Add batman-a... |
158 159 160 |
{ } #endif |
c6c8fea29 net: Add batman-a... |
161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
#define bat_info(net_dev, fmt, arg...) \ do { \ struct net_device *_netdev = (net_dev); \ struct bat_priv *_batpriv = netdev_priv(_netdev); \ bat_dbg(DBG_ALL, _batpriv, fmt, ## arg); \ pr_info("%s: " fmt, _netdev->name, ## arg); \ } while (0) #define bat_err(net_dev, fmt, arg...) \ do { \ struct net_device *_netdev = (net_dev); \ struct bat_priv *_batpriv = netdev_priv(_netdev); \ bat_dbg(DBG_ALL, _batpriv, fmt, ## arg); \ pr_err("%s: " fmt, _netdev->name, ## arg); \ } while (0) |
39901e716 batman-adv: separ... |
175 176 177 178 179 |
/** * returns 1 if they are the same ethernet addr * * note: can't use compare_ether_addr() as it requires aligned memory */ |
747e4221a batman-adv: Add c... |
180 181 |
static inline int compare_eth(const void *data1, const void *data2) |
39901e716 batman-adv: separ... |
182 183 184 |
{ return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0); } |
747e4221a batman-adv: Add c... |
185 |
|
5f657ec0d batman-adv: Move ... |
186 |
#define atomic_dec_not_zero(v) atomic_add_unless((v), -1, 0) |
f5d33d377 batman-adv: move ... |
187 188 189 190 191 192 193 194 195 196 197 198 |
/* Returns the smallest signed integer in two's complement with the sizeof x */ #define smallest_signed_int(x) (1u << (7u + 8u * (sizeof(x) - 1u))) /* Checks if a sequence number x is a predecessor/successor of y. * they handle overflows/underflows and can correctly check for a * predecessor/successor unless the variable sequence number has grown by * more then 2**(bitwidth(x)-1)-1. * This means that for a uint8_t with the maximum value 255, it would think: * - when adding nothing - it is neither a predecessor nor a successor * - before adding more than 127 to the starting value - it is a predecessor, * - when adding 128 - it is neither a predecessor nor a successor, * - after adding more than 127 to the starting value - it is a successor */ |
0bb857511 batman-adv: Check... |
199 200 201 202 203 |
#define seq_before(x, y) ({typeof(x) _d1 = (x); \ typeof(y) _d2 = (y); \ typeof(x) _dummy = (_d1 - _d2); \ (void) (&_d1 == &_d2); \ _dummy > smallest_signed_int(_dummy); }) |
f5d33d377 batman-adv: move ... |
204 |
#define seq_after(x, y) seq_before(y, x) |
c6c8fea29 net: Add batman-a... |
205 |
#endif /* _NET_BATMAN_ADV_MAIN_H_ */ |