Included changes:
- use common Jenkins hash instead of private implementation - extend internal routing API - properly re-arrange header files inclusion - clarify precedence between '&' and '?' - remove unused ethhdr variable in batadv_gw_dhcp_recipient_get() - ensure per-VLAN structs are updated upon MAC change -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJVdaxwAAoJEOb/4TMchkvffJsQAK33RTmcnFYVpS09AywTbxfC kNo5SAbQJ1MsNui8TmyHsnLBW/l59WnP8CITVYDlwLyW4cEKWVooGsFPv+MCityM 3vOqghdi7jC1b0LT6kTcoSr7P04q+bBV9atj5Z5nnXUpvjmW0b/a6qCIZmqGKTtQ WIIayEs0bVPJ6y1Z6CDpFQY6k9j938BaH3VgP7NL4zXRA3OJGGQKaZTRwVuYnVu4 Swt/zj+B7lutBSP2d4ngjU2CXS35OzDWl4GybQuIiNzdSXsZwm4inTyuNjA4Eqdg vE87ZqbFqD4T2PqR1wcTPKMJegd+nPQrYDdeNfz91KdjVKBN+LrdSCX3IozEynpY 7584+eROCyCKlQGi7OcRze5THbZ+BNKxUd3Ds4ek2NTU7vG2rMWADFj3wZ0yzX6F e/JunQ39BHXPSc6UlaTgdYiVpTNME9+A2I0AXMOpU6urpc4fAyFVGUORJqjM8BBm jLZ8QakmXdfgBYi7zqefeCW9de9L1ekGQs/XB1AmKmx5xY7IKzKEZbkUV3nAxtqI YKP2yQUhqjoke6bzllz72CPChO4O11fYPCDPL0sarn/UxY8SzwmHeKi8UeGaN6gt FZhR17kQGm4c2WF7082HEIrOW137YogEOFWMixqpqix5ICBmmRMPqo8wqQBxllk3 mC+4jiwdn4kT1EVAqHba =u+G3 -----END PGP SIGNATURE----- Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge Antonio Quartulli says: ==================== Included changes: - use common Jenkins hash instead of private implementation - extend internal routing API - properly re-arrange header files inclusion - clarify precedence between '&' and '?' - remove unused ethhdr variable in batadv_gw_dhcp_recipient_get() - ensure per-VLAN structs are updated upon MAC change ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
c3eee1fb1d
|
@ -15,16 +15,46 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "translation-table.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include "routing.h"
|
|
||||||
#include "gateway_common.h"
|
|
||||||
#include "gateway_client.h"
|
|
||||||
#include "hard-interface.h"
|
|
||||||
#include "send.h"
|
|
||||||
#include "bat_algo.h"
|
#include "bat_algo.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/bitmap.h>
|
||||||
|
#include <linux/bitops.h>
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/cache.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/pkt_sched.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/random.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
|
#include "bitarray.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "hash.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "routing.h"
|
||||||
|
#include "send.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum batadv_dup_status - duplicate status
|
* enum batadv_dup_status - duplicate status
|
||||||
|
@ -449,7 +479,7 @@ static void batadv_iv_ogm_send_to_if(struct batadv_forw_packet *forw_packet,
|
||||||
batadv_ogm_packet->orig,
|
batadv_ogm_packet->orig,
|
||||||
ntohl(batadv_ogm_packet->seqno),
|
ntohl(batadv_ogm_packet->seqno),
|
||||||
batadv_ogm_packet->tq, batadv_ogm_packet->ttl,
|
batadv_ogm_packet->tq, batadv_ogm_packet->ttl,
|
||||||
(batadv_ogm_packet->flags & BATADV_DIRECTLINK ?
|
((batadv_ogm_packet->flags & BATADV_DIRECTLINK) ?
|
||||||
"on" : "off"),
|
"on" : "off"),
|
||||||
hard_iface->net_dev->name,
|
hard_iface->net_dev->name,
|
||||||
hard_iface->net_dev->dev_addr);
|
hard_iface->net_dev->dev_addr);
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "bitarray.h"
|
#include "bitarray.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitmap.h>
|
||||||
|
|
||||||
/* shift the packet array by n places. */
|
/* shift the packet array by n places. */
|
||||||
static void batadv_bitmap_shift_left(unsigned long *seq_bits, int32_t n)
|
static void batadv_bitmap_shift_left(unsigned long *seq_bits, int32_t n)
|
||||||
|
|
|
@ -18,6 +18,12 @@
|
||||||
#ifndef _NET_BATMAN_ADV_BITARRAY_H_
|
#ifndef _NET_BATMAN_ADV_BITARRAY_H_
|
||||||
#define _NET_BATMAN_ADV_BITARRAY_H_
|
#define _NET_BATMAN_ADV_BITARRAY_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/bitops.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
/* Returns 1 if the corresponding bit in the given seq_bits indicates true
|
/* Returns 1 if the corresponding bit in the given seq_bits indicates true
|
||||||
* and curr_seqno is within range of last_seqno. Otherwise returns 0.
|
* and curr_seqno is within range of last_seqno. Otherwise returns 0.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -15,19 +15,41 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "hash.h"
|
|
||||||
#include "hard-interface.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
#include "translation-table.h"
|
#include "main.h"
|
||||||
#include "send.h"
|
|
||||||
|
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
#include <linux/crc16.h>
|
#include <linux/crc16.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
#include <linux/if_arp.h>
|
#include <linux/if_arp.h>
|
||||||
#include <net/arp.h>
|
#include <linux/if_ether.h>
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
|
#include <linux/jhash.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/lockdep.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
#include <net/arp.h>
|
||||||
|
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "hash.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
static const uint8_t batadv_announce_mac[4] = {0x43, 0x05, 0x43, 0x05};
|
static const uint8_t batadv_announce_mac[4] = {0x43, 0x05, 0x43, 0x05};
|
||||||
|
|
||||||
|
@ -42,12 +64,8 @@ static inline uint32_t batadv_choose_claim(const void *data, uint32_t size)
|
||||||
struct batadv_bla_claim *claim = (struct batadv_bla_claim *)data;
|
struct batadv_bla_claim *claim = (struct batadv_bla_claim *)data;
|
||||||
uint32_t hash = 0;
|
uint32_t hash = 0;
|
||||||
|
|
||||||
hash = batadv_hash_bytes(hash, &claim->addr, sizeof(claim->addr));
|
hash = jhash(&claim->addr, sizeof(claim->addr), hash);
|
||||||
hash = batadv_hash_bytes(hash, &claim->vid, sizeof(claim->vid));
|
hash = jhash(&claim->vid, sizeof(claim->vid), hash);
|
||||||
|
|
||||||
hash += (hash << 3);
|
|
||||||
hash ^= (hash >> 11);
|
|
||||||
hash += (hash << 15);
|
|
||||||
|
|
||||||
return hash % size;
|
return hash % size;
|
||||||
}
|
}
|
||||||
|
@ -59,12 +77,8 @@ static inline uint32_t batadv_choose_backbone_gw(const void *data,
|
||||||
const struct batadv_bla_claim *claim = (struct batadv_bla_claim *)data;
|
const struct batadv_bla_claim *claim = (struct batadv_bla_claim *)data;
|
||||||
uint32_t hash = 0;
|
uint32_t hash = 0;
|
||||||
|
|
||||||
hash = batadv_hash_bytes(hash, &claim->addr, sizeof(claim->addr));
|
hash = jhash(&claim->addr, sizeof(claim->addr), hash);
|
||||||
hash = batadv_hash_bytes(hash, &claim->vid, sizeof(claim->vid));
|
hash = jhash(&claim->vid, sizeof(claim->vid), hash);
|
||||||
|
|
||||||
hash += (hash << 3);
|
|
||||||
hash ^= (hash >> 11);
|
|
||||||
hash += (hash << 15);
|
|
||||||
|
|
||||||
return hash % size;
|
return hash % size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,16 @@
|
||||||
#ifndef _NET_BATMAN_ADV_BLA_H_
|
#ifndef _NET_BATMAN_ADV_BLA_H_
|
||||||
#define _NET_BATMAN_ADV_BLA_H_
|
#define _NET_BATMAN_ADV_BLA_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_hard_iface;
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct seq_file;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
#ifdef CONFIG_BATMAN_ADV_BLA
|
#ifdef CONFIG_BATMAN_ADV_BLA
|
||||||
int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||||
unsigned short vid, bool is_bcast);
|
unsigned short vid, bool is_bcast);
|
||||||
|
|
|
@ -15,21 +15,42 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "debugfs.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/export.h>
|
||||||
|
#include <linux/fcntl.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/poll.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/sched.h> /* for linux/wait.h */
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stat.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/stringify.h>
|
||||||
|
#include <linux/sysfs.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
#include <linux/wait.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include "debugfs.h"
|
|
||||||
#include "translation-table.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include "hard-interface.h"
|
|
||||||
#include "gateway_common.h"
|
|
||||||
#include "gateway_client.h"
|
|
||||||
#include "soft-interface.h"
|
|
||||||
#include "icmp_socket.h"
|
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
#include "distributed-arp-table.h"
|
#include "distributed-arp-table.h"
|
||||||
|
#include "gateway_client.h"
|
||||||
|
#include "icmp_socket.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
static struct dentry *batadv_debugfs;
|
static struct dentry *batadv_debugfs;
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
#ifndef _NET_BATMAN_ADV_DEBUGFS_H_
|
#ifndef _NET_BATMAN_ADV_DEBUGFS_H_
|
||||||
#define _NET_BATMAN_ADV_DEBUGFS_H_
|
#define _NET_BATMAN_ADV_DEBUGFS_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/kconfig.h>
|
||||||
|
|
||||||
|
struct batadv_hard_iface;
|
||||||
|
struct net_device;
|
||||||
|
|
||||||
#define BATADV_DEBUGFS_SUBDIR "batman_adv"
|
#define BATADV_DEBUGFS_SUBDIR "batman_adv"
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_DEBUG_FS)
|
#if IS_ENABLED(CONFIG_DEBUG_FS)
|
||||||
|
|
|
@ -15,18 +15,36 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/if_ether.h>
|
#include "distributed-arp-table.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
#include <linux/if_arp.h>
|
#include <linux/if_arp.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
|
#include <linux/in.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
#include <net/arp.h>
|
#include <net/arp.h>
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "hash.h"
|
|
||||||
#include "distributed-arp-table.h"
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
|
#include "hash.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "types.h"
|
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
|
||||||
static void batadv_dat_purge(struct work_struct *work);
|
static void batadv_dat_purge(struct work_struct *work);
|
||||||
|
@ -206,9 +224,22 @@ static uint32_t batadv_hash_dat(const void *data, uint32_t size)
|
||||||
{
|
{
|
||||||
uint32_t hash = 0;
|
uint32_t hash = 0;
|
||||||
const struct batadv_dat_entry *dat = data;
|
const struct batadv_dat_entry *dat = data;
|
||||||
|
const unsigned char *key;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
hash = batadv_hash_bytes(hash, &dat->ip, sizeof(dat->ip));
|
key = (const unsigned char *)&dat->ip;
|
||||||
hash = batadv_hash_bytes(hash, &dat->vid, sizeof(dat->vid));
|
for (i = 0; i < sizeof(dat->ip); i++) {
|
||||||
|
hash += key[i];
|
||||||
|
hash += (hash << 10);
|
||||||
|
hash ^= (hash >> 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
key = (const unsigned char *)&dat->vid;
|
||||||
|
for (i = 0; i < sizeof(dat->vid); i++) {
|
||||||
|
hash += key[i];
|
||||||
|
hash += (hash << 10);
|
||||||
|
hash ^= (hash >> 6);
|
||||||
|
}
|
||||||
|
|
||||||
hash += (hash << 3);
|
hash += (hash << 3);
|
||||||
hash ^= (hash >> 11);
|
hash ^= (hash >> 11);
|
||||||
|
|
|
@ -18,12 +18,19 @@
|
||||||
#ifndef _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
|
#ifndef _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
|
||||||
#define _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
|
#define _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
|
||||||
|
|
||||||
#ifdef CONFIG_BATMAN_ADV_DAT
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
#include "types.h"
|
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
|
||||||
#include <linux/if_arp.h>
|
struct seq_file;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
|
#ifdef CONFIG_BATMAN_ADV_DAT
|
||||||
|
|
||||||
/* BATADV_DAT_ADDR_MAX - maximum address value in the DHT space */
|
/* BATADV_DAT_ADDR_MAX - maximum address value in the DHT space */
|
||||||
#define BATADV_DAT_ADDR_MAX ((batadv_dat_addr_t)~(batadv_dat_addr_t)0)
|
#define BATADV_DAT_ADDR_MAX ((batadv_dat_addr_t)~(batadv_dat_addr_t)0)
|
||||||
|
|
|
@ -15,12 +15,28 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "fragmentation.h"
|
#include "fragmentation.h"
|
||||||
#include "send.h"
|
#include "main.h"
|
||||||
#include "originator.h"
|
|
||||||
#include "routing.h"
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/pkt_sched.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "routing.h"
|
||||||
|
#include "send.h"
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,6 +18,15 @@
|
||||||
#ifndef _NET_BATMAN_ADV_FRAGMENTATION_H_
|
#ifndef _NET_BATMAN_ADV_FRAGMENTATION_H_
|
||||||
#define _NET_BATMAN_ADV_FRAGMENTATION_H_
|
#define _NET_BATMAN_ADV_FRAGMENTATION_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
void batadv_frag_purge_orig(struct batadv_orig_node *orig,
|
void batadv_frag_purge_orig(struct batadv_orig_node *orig,
|
||||||
bool (*check_cb)(struct batadv_frag_table_entry *));
|
bool (*check_cb)(struct batadv_frag_table_entry *));
|
||||||
bool batadv_frag_skb_fwd(struct sk_buff *skb,
|
bool batadv_frag_skb_fwd(struct sk_buff *skb,
|
||||||
|
|
|
@ -15,18 +15,38 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "sysfs.h"
|
|
||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/if_vlan.h>
|
||||||
|
#include <linux/in.h>
|
||||||
|
#include <linux/ip.h>
|
||||||
|
#include <linux/ipv6.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/udp.h>
|
||||||
|
|
||||||
#include "gateway_common.h"
|
#include "gateway_common.h"
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "translation-table.h"
|
#include "packet.h"
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include <linux/ip.h>
|
#include "sysfs.h"
|
||||||
#include <linux/ipv6.h>
|
#include "translation-table.h"
|
||||||
#include <linux/udp.h>
|
|
||||||
#include <linux/if_vlan.h>
|
|
||||||
|
|
||||||
/* These are the offsets of the "hw type" and "hw address length" in the dhcp
|
/* These are the offsets of the "hw type" and "hw address length" in the dhcp
|
||||||
* packet starting at the beginning of the dhcp header
|
* packet starting at the beginning of the dhcp header
|
||||||
|
@ -733,11 +753,6 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
|
||||||
if (!pskb_may_pull(skb, *header_len + sizeof(*udphdr)))
|
if (!pskb_may_pull(skb, *header_len + sizeof(*udphdr)))
|
||||||
return BATADV_DHCP_NO;
|
return BATADV_DHCP_NO;
|
||||||
|
|
||||||
/* skb->data might have been reallocated by pskb_may_pull() */
|
|
||||||
ethhdr = eth_hdr(skb);
|
|
||||||
if (ntohs(ethhdr->h_proto) == ETH_P_8021Q)
|
|
||||||
ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN);
|
|
||||||
|
|
||||||
udphdr = (struct udphdr *)(skb->data + *header_len);
|
udphdr = (struct udphdr *)(skb->data + *header_len);
|
||||||
*header_len += sizeof(*udphdr);
|
*header_len += sizeof(*udphdr);
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,14 @@
|
||||||
#ifndef _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
|
#ifndef _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
|
||||||
#define _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
|
#define _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_tvlv_gateway_data;
|
||||||
|
struct seq_file;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
void batadv_gw_check_client_stop(struct batadv_priv *bat_priv);
|
void batadv_gw_check_client_stop(struct batadv_priv *bat_priv);
|
||||||
void batadv_gw_reselect(struct batadv_priv *bat_priv);
|
void batadv_gw_reselect(struct batadv_priv *bat_priv);
|
||||||
void batadv_gw_election(struct batadv_priv *bat_priv);
|
void batadv_gw_election(struct batadv_priv *bat_priv);
|
||||||
|
|
|
@ -15,9 +15,18 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "gateway_common.h"
|
#include "gateway_common.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
|
||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
|
#include "packet.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* batadv_parse_gw_bandwidth - parse supplied string buffer to extract download
|
* batadv_parse_gw_bandwidth - parse supplied string buffer to extract download
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
#ifndef _NET_BATMAN_ADV_GATEWAY_COMMON_H_
|
#ifndef _NET_BATMAN_ADV_GATEWAY_COMMON_H_
|
||||||
#define _NET_BATMAN_ADV_GATEWAY_COMMON_H_
|
#define _NET_BATMAN_ADV_GATEWAY_COMMON_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_priv;
|
||||||
|
struct net_device;
|
||||||
|
|
||||||
enum batadv_gw_modes {
|
enum batadv_gw_modes {
|
||||||
BATADV_GW_MODE_OFF,
|
BATADV_GW_MODE_OFF,
|
||||||
BATADV_GW_MODE_CLIENT,
|
BATADV_GW_MODE_CLIENT,
|
||||||
|
|
|
@ -15,22 +15,36 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "distributed-arp-table.h"
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "soft-interface.h"
|
#include "main.h"
|
||||||
#include "send.h"
|
|
||||||
#include "translation-table.h"
|
|
||||||
#include "routing.h"
|
|
||||||
#include "sysfs.h"
|
|
||||||
#include "debugfs.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include "hash.h"
|
|
||||||
#include "bridge_loop_avoidance.h"
|
|
||||||
#include "gateway_client.h"
|
|
||||||
|
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
#include <linux/if_arp.h>
|
#include <linux/if_arp.h>
|
||||||
#include <linux/if_ether.h>
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/if.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rtnetlink.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
#include <net/net_namespace.h>
|
||||||
|
|
||||||
|
#include "bridge_loop_avoidance.h"
|
||||||
|
#include "debugfs.h"
|
||||||
|
#include "distributed-arp-table.h"
|
||||||
|
#include "gateway_client.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "send.h"
|
||||||
|
#include "soft-interface.h"
|
||||||
|
#include "sysfs.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
void batadv_hardif_free_rcu(struct rcu_head *rcu)
|
void batadv_hardif_free_rcu(struct rcu_head *rcu)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,17 @@
|
||||||
#ifndef _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
#ifndef _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
||||||
#define _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
#define _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/notifier.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct net_device;
|
||||||
|
|
||||||
enum batadv_hard_if_state {
|
enum batadv_hard_if_state {
|
||||||
BATADV_IF_NOT_IN_USE,
|
BATADV_IF_NOT_IN_USE,
|
||||||
BATADV_IF_TO_BE_REMOVED,
|
BATADV_IF_TO_BE_REMOVED,
|
||||||
|
|
|
@ -15,8 +15,12 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/lockdep.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
/* clears the hash */
|
/* clears the hash */
|
||||||
static void batadv_hash_init(struct batadv_hashtable *hash)
|
static void batadv_hash_init(struct batadv_hashtable *hash)
|
||||||
|
|
|
@ -18,7 +18,16 @@
|
||||||
#ifndef _NET_BATMAN_ADV_HASH_H_
|
#ifndef _NET_BATMAN_ADV_HASH_H_
|
||||||
#define _NET_BATMAN_ADV_HASH_H_
|
#define _NET_BATMAN_ADV_HASH_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct lock_class_key;
|
||||||
|
|
||||||
/* callback to a compare function. should compare 2 element datas for their
|
/* callback to a compare function. should compare 2 element datas for their
|
||||||
* keys, return 0 if same and not 0 if not same
|
* keys, return 0 if same and not 0 if not same
|
||||||
|
@ -79,28 +88,6 @@ static inline void batadv_hash_delete(struct batadv_hashtable *hash,
|
||||||
batadv_hash_destroy(hash);
|
batadv_hash_destroy(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
|
|
||||||
*
|
|
||||||
* Returns the new hash value.
|
|
||||||
*/
|
|
||||||
static inline uint32_t batadv_hash_bytes(uint32_t hash, const 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 hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* batadv_hash_add - adds data to the hashtable
|
* batadv_hash_add - adds data to the hashtable
|
||||||
* @hash: storage hash table
|
* @hash: storage hash table
|
||||||
|
|
|
@ -15,14 +15,39 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include <linux/debugfs.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include "icmp_socket.h"
|
#include "icmp_socket.h"
|
||||||
#include "send.h"
|
#include "main.h"
|
||||||
#include "hash.h"
|
|
||||||
#include "originator.h"
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/debugfs.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/export.h>
|
||||||
|
#include <linux/fcntl.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/pkt_sched.h>
|
||||||
|
#include <linux/poll.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/sched.h> /* for linux/wait.h */
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stat.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
#include <linux/wait.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "send.h"
|
||||||
|
|
||||||
static struct batadv_socket_client *batadv_socket_client_hash[256];
|
static struct batadv_socket_client *batadv_socket_client_hash[256];
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
#ifndef _NET_BATMAN_ADV_ICMP_SOCKET_H_
|
#ifndef _NET_BATMAN_ADV_ICMP_SOCKET_H_
|
||||||
#define _NET_BATMAN_ADV_ICMP_SOCKET_H_
|
#define _NET_BATMAN_ADV_ICMP_SOCKET_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_icmp_header;
|
||||||
|
struct batadv_priv;
|
||||||
|
|
||||||
#define BATADV_ICMP_SOCKET "socket"
|
#define BATADV_ICMP_SOCKET "socket"
|
||||||
|
|
||||||
void batadv_socket_init(void);
|
void batadv_socket_init(void);
|
||||||
|
|
|
@ -15,31 +15,53 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/crc32c.h>
|
|
||||||
#include <linux/highmem.h>
|
|
||||||
#include <linux/if_vlan.h>
|
|
||||||
#include <net/ip.h>
|
|
||||||
#include <net/ipv6.h>
|
|
||||||
#include <net/dsfield.h>
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "sysfs.h"
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/crc32c.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/if_vlan.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/ip.h>
|
||||||
|
#include <linux/ipv6.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/moduleparam.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/pkt_sched.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
#include <net/dsfield.h>
|
||||||
|
#include <net/rtnetlink.h>
|
||||||
|
|
||||||
|
#include "bat_algo.h"
|
||||||
|
#include "bridge_loop_avoidance.h"
|
||||||
#include "debugfs.h"
|
#include "debugfs.h"
|
||||||
|
#include "distributed-arp-table.h"
|
||||||
|
#include "gateway_client.h"
|
||||||
|
#include "gateway_common.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "icmp_socket.h"
|
||||||
|
#include "multicast.h"
|
||||||
|
#include "network-coding.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "originator.h"
|
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "icmp_socket.h"
|
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
#include "hard-interface.h"
|
|
||||||
#include "gateway_client.h"
|
|
||||||
#include "bridge_loop_avoidance.h"
|
|
||||||
#include "distributed-arp-table.h"
|
|
||||||
#include "multicast.h"
|
|
||||||
#include "gateway_common.h"
|
|
||||||
#include "hash.h"
|
|
||||||
#include "bat_algo.h"
|
|
||||||
#include "network-coding.h"
|
|
||||||
#include "fragmentation.h"
|
|
||||||
|
|
||||||
/* List manipulations on hardif_list have to be rtnl_lock()'ed,
|
/* List manipulations on hardif_list have to be rtnl_lock()'ed,
|
||||||
* list traversals just rcu-locked
|
* list traversals just rcu-locked
|
||||||
|
|
|
@ -163,28 +163,26 @@ enum batadv_uev_type {
|
||||||
|
|
||||||
/* Kernel headers */
|
/* Kernel headers */
|
||||||
|
|
||||||
#include <linux/mutex.h> /* mutex */
|
#include <linux/atomic.h>
|
||||||
#include <linux/module.h> /* needed by all modules */
|
#include <linux/bitops.h> /* for packet.h */
|
||||||
#include <linux/netdevice.h> /* netdevice */
|
#include <linux/compiler.h>
|
||||||
#include <linux/etherdevice.h> /* ethernet address classification */
|
#include <linux/cpumask.h>
|
||||||
#include <linux/if_ether.h> /* ethernet header */
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/poll.h> /* poll_table */
|
#include <linux/if_ether.h> /* for packet.h */
|
||||||
#include <linux/kthread.h> /* kernel threads */
|
#include <linux/netdevice.h>
|
||||||
#include <linux/pkt_sched.h> /* schedule types */
|
#include <linux/printk.h>
|
||||||
#include <linux/workqueue.h> /* workqueue */
|
#include <linux/types.h>
|
||||||
#include <linux/percpu.h>
|
#include <linux/percpu.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <net/sock.h> /* struct sock */
|
|
||||||
#include <net/addrconf.h> /* ipv6 address stuff */
|
|
||||||
#include <linux/ip.h>
|
|
||||||
#include <net/rtnetlink.h>
|
|
||||||
#include <linux/jiffies.h>
|
#include <linux/jiffies.h>
|
||||||
#include <linux/seq_file.h>
|
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#define BATADV_PRINT_VID(vid) (vid & BATADV_VLAN_HAS_TAG ? \
|
struct batadv_ogm_packet;
|
||||||
|
struct seq_file;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
|
#define BATADV_PRINT_VID(vid) ((vid & BATADV_VLAN_HAS_TAG) ? \
|
||||||
(int)(vid & VLAN_VID_MASK) : -1)
|
(int)(vid & VLAN_VID_MASK) : -1)
|
||||||
|
|
||||||
extern char batadv_routing_algo[];
|
extern char batadv_routing_algo[];
|
||||||
|
|
|
@ -15,10 +15,33 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "multicast.h"
|
#include "multicast.h"
|
||||||
#include "originator.h"
|
#include "main.h"
|
||||||
#include "hard-interface.h"
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/in6.h>
|
||||||
|
#include <linux/in.h>
|
||||||
|
#include <linux/ip.h>
|
||||||
|
#include <linux/ipv6.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <net/addrconf.h>
|
||||||
|
#include <net/ipv6.h>
|
||||||
|
|
||||||
|
#include "packet.h"
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,6 +18,12 @@
|
||||||
#ifndef _NET_BATMAN_ADV_MULTICAST_H_
|
#ifndef _NET_BATMAN_ADV_MULTICAST_H_
|
||||||
#define _NET_BATMAN_ADV_MULTICAST_H_
|
#define _NET_BATMAN_ADV_MULTICAST_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* batadv_forw_mode - the way a packet should be forwarded as
|
* batadv_forw_mode - the way a packet should be forwarded as
|
||||||
* @BATADV_FORW_ALL: forward the packet to all nodes (currently via classic
|
* @BATADV_FORW_ALL: forward the packet to all nodes (currently via classic
|
||||||
|
|
|
@ -15,15 +15,44 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/debugfs.h>
|
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "hash.h"
|
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
#include "send.h"
|
#include "main.h"
|
||||||
#include "originator.h"
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/debugfs.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/if_packet.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/jhash.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/lockdep.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/random.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stat.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
|
#include "hash.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
|
#include "send.h"
|
||||||
|
|
||||||
static struct lock_class_key batadv_nc_coding_hash_lock_class_key;
|
static struct lock_class_key batadv_nc_coding_hash_lock_class_key;
|
||||||
static struct lock_class_key batadv_nc_decoding_hash_lock_class_key;
|
static struct lock_class_key batadv_nc_decoding_hash_lock_class_key;
|
||||||
|
@ -453,14 +482,8 @@ static uint32_t batadv_nc_hash_choose(const void *data, uint32_t size)
|
||||||
const struct batadv_nc_path *nc_path = data;
|
const struct batadv_nc_path *nc_path = data;
|
||||||
uint32_t hash = 0;
|
uint32_t hash = 0;
|
||||||
|
|
||||||
hash = batadv_hash_bytes(hash, &nc_path->prev_hop,
|
hash = jhash(&nc_path->prev_hop, sizeof(nc_path->prev_hop), hash);
|
||||||
sizeof(nc_path->prev_hop));
|
hash = jhash(&nc_path->next_hop, sizeof(nc_path->next_hop), hash);
|
||||||
hash = batadv_hash_bytes(hash, &nc_path->next_hop,
|
|
||||||
sizeof(nc_path->next_hop));
|
|
||||||
|
|
||||||
hash += (hash << 3);
|
|
||||||
hash ^= (hash >> 11);
|
|
||||||
hash += (hash << 15);
|
|
||||||
|
|
||||||
return hash % size;
|
return hash % size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,19 @@
|
||||||
#ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_
|
#ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_
|
||||||
#define _NET_BATMAN_ADV_NETWORK_CODING_H_
|
#define _NET_BATMAN_ADV_NETWORK_CODING_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_nc_node;
|
||||||
|
struct batadv_neigh_node;
|
||||||
|
struct batadv_ogm_packet;
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct net_device;
|
||||||
|
struct seq_file;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
#ifdef CONFIG_BATMAN_ADV_NC
|
#ifdef CONFIG_BATMAN_ADV_NC
|
||||||
|
|
||||||
void batadv_nc_status_update(struct net_device *net_dev);
|
void batadv_nc_status_update(struct net_device *net_dev);
|
||||||
|
|
|
@ -15,19 +15,31 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "distributed-arp-table.h"
|
|
||||||
#include "originator.h"
|
#include "originator.h"
|
||||||
#include "hash.h"
|
#include "main.h"
|
||||||
#include "translation-table.h"
|
|
||||||
#include "routing.h"
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/lockdep.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
|
#include "distributed-arp-table.h"
|
||||||
|
#include "fragmentation.h"
|
||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
#include "hard-interface.h"
|
#include "hard-interface.h"
|
||||||
#include "soft-interface.h"
|
#include "hash.h"
|
||||||
#include "bridge_loop_avoidance.h"
|
|
||||||
#include "network-coding.h"
|
|
||||||
#include "fragmentation.h"
|
|
||||||
#include "multicast.h"
|
#include "multicast.h"
|
||||||
|
#include "network-coding.h"
|
||||||
|
#include "routing.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
/* hash class keys */
|
/* hash class keys */
|
||||||
static struct lock_class_key batadv_orig_hash_lock_class_key;
|
static struct lock_class_key batadv_orig_hash_lock_class_key;
|
||||||
|
@ -197,13 +209,19 @@ static void batadv_neigh_node_free_rcu(struct rcu_head *rcu)
|
||||||
struct hlist_node *node_tmp;
|
struct hlist_node *node_tmp;
|
||||||
struct batadv_neigh_node *neigh_node;
|
struct batadv_neigh_node *neigh_node;
|
||||||
struct batadv_neigh_ifinfo *neigh_ifinfo;
|
struct batadv_neigh_ifinfo *neigh_ifinfo;
|
||||||
|
struct batadv_algo_ops *bao;
|
||||||
|
|
||||||
neigh_node = container_of(rcu, struct batadv_neigh_node, rcu);
|
neigh_node = container_of(rcu, struct batadv_neigh_node, rcu);
|
||||||
|
bao = neigh_node->orig_node->bat_priv->bat_algo_ops;
|
||||||
|
|
||||||
hlist_for_each_entry_safe(neigh_ifinfo, node_tmp,
|
hlist_for_each_entry_safe(neigh_ifinfo, node_tmp,
|
||||||
&neigh_node->ifinfo_list, list) {
|
&neigh_node->ifinfo_list, list) {
|
||||||
batadv_neigh_ifinfo_free_ref_now(neigh_ifinfo);
|
batadv_neigh_ifinfo_free_ref_now(neigh_ifinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bao->bat_neigh_free)
|
||||||
|
bao->bat_neigh_free(neigh_node);
|
||||||
|
|
||||||
batadv_hardif_free_ref_now(neigh_node->if_incoming);
|
batadv_hardif_free_ref_now(neigh_node->if_incoming);
|
||||||
|
|
||||||
kfree(neigh_node);
|
kfree(neigh_node);
|
||||||
|
|
|
@ -18,8 +18,21 @@
|
||||||
#ifndef _NET_BATMAN_ADV_ORIGINATOR_H_
|
#ifndef _NET_BATMAN_ADV_ORIGINATOR_H_
|
||||||
#define _NET_BATMAN_ADV_ORIGINATOR_H_
|
#define _NET_BATMAN_ADV_ORIGINATOR_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/jhash.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
|
|
||||||
|
struct seq_file;
|
||||||
|
|
||||||
int batadv_compare_orig(const struct hlist_node *node, const void *data2);
|
int batadv_compare_orig(const struct hlist_node *node, const void *data2);
|
||||||
int batadv_originator_init(struct batadv_priv *bat_priv);
|
int batadv_originator_init(struct batadv_priv *bat_priv);
|
||||||
void batadv_originator_free(struct batadv_priv *bat_priv);
|
void batadv_originator_free(struct batadv_priv *bat_priv);
|
||||||
|
@ -75,20 +88,9 @@ void batadv_orig_node_vlan_free_ref(struct batadv_orig_node_vlan *orig_vlan);
|
||||||
*/
|
*/
|
||||||
static inline uint32_t batadv_choose_orig(const void *data, uint32_t size)
|
static inline uint32_t batadv_choose_orig(const void *data, uint32_t size)
|
||||||
{
|
{
|
||||||
const unsigned char *key = data;
|
|
||||||
uint32_t hash = 0;
|
uint32_t hash = 0;
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < 6; i++) {
|
|
||||||
hash += key[i];
|
|
||||||
hash += (hash << 10);
|
|
||||||
hash ^= (hash >> 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
hash += (hash << 3);
|
|
||||||
hash ^= (hash >> 11);
|
|
||||||
hash += (hash << 15);
|
|
||||||
|
|
||||||
|
hash = jhash(data, ETH_ALEN, hash);
|
||||||
return hash % size;
|
return hash % size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
#ifndef _NET_BATMAN_ADV_PACKET_H_
|
#ifndef _NET_BATMAN_ADV_PACKET_H_
|
||||||
#define _NET_BATMAN_ADV_PACKET_H_
|
#define _NET_BATMAN_ADV_PACKET_H_
|
||||||
|
|
||||||
|
#include <asm/byteorder.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum batadv_packettype - types for batman-adv encapsulated packets
|
* enum batadv_packettype - types for batman-adv encapsulated packets
|
||||||
* @BATADV_IV_OGM: originator messages for B.A.T.M.A.N. IV
|
* @BATADV_IV_OGM: originator messages for B.A.T.M.A.N. IV
|
||||||
|
|
|
@ -15,20 +15,36 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "routing.h"
|
#include "routing.h"
|
||||||
#include "send.h"
|
#include "main.h"
|
||||||
#include "soft-interface.h"
|
|
||||||
#include "hard-interface.h"
|
#include <linux/atomic.h>
|
||||||
#include "icmp_socket.h"
|
#include <linux/byteorder/generic.h>
|
||||||
#include "translation-table.h"
|
#include <linux/compiler.h>
|
||||||
#include "originator.h"
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
|
||||||
|
#include "bitarray.h"
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
#include "distributed-arp-table.h"
|
#include "distributed-arp-table.h"
|
||||||
#include "network-coding.h"
|
|
||||||
#include "fragmentation.h"
|
#include "fragmentation.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
#include <linux/if_vlan.h>
|
#include "icmp_socket.h"
|
||||||
|
#include "network-coding.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "send.h"
|
||||||
|
#include "soft-interface.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
static int batadv_route_unicast_packet(struct sk_buff *skb,
|
static int batadv_route_unicast_packet(struct sk_buff *skb,
|
||||||
struct batadv_hard_iface *recv_if);
|
struct batadv_hard_iface *recv_if);
|
||||||
|
|
|
@ -18,6 +18,16 @@
|
||||||
#ifndef _NET_BATMAN_ADV_ROUTING_H_
|
#ifndef _NET_BATMAN_ADV_ROUTING_H_
|
||||||
#define _NET_BATMAN_ADV_ROUTING_H_
|
#define _NET_BATMAN_ADV_ROUTING_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_hard_iface;
|
||||||
|
struct batadv_neigh_node;
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
bool batadv_check_management_packet(struct sk_buff *skb,
|
bool batadv_check_management_packet(struct sk_buff *skb,
|
||||||
struct batadv_hard_iface *hard_iface,
|
struct batadv_hard_iface *hard_iface,
|
||||||
int header_len);
|
int header_len);
|
||||||
|
|
|
@ -15,19 +15,37 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "distributed-arp-table.h"
|
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "routing.h"
|
#include "main.h"
|
||||||
#include "translation-table.h"
|
|
||||||
#include "soft-interface.h"
|
#include <linux/atomic.h>
|
||||||
#include "hard-interface.h"
|
#include <linux/byteorder/generic.h>
|
||||||
#include "gateway_common.h"
|
#include <linux/etherdevice.h>
|
||||||
#include "gateway_client.h"
|
#include <linux/fs.h>
|
||||||
#include "originator.h"
|
#include <linux/if_ether.h>
|
||||||
#include "network-coding.h"
|
#include <linux/if.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
|
#include "distributed-arp-table.h"
|
||||||
#include "fragmentation.h"
|
#include "fragmentation.h"
|
||||||
#include "multicast.h"
|
#include "gateway_client.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "network-coding.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "routing.h"
|
||||||
|
#include "soft-interface.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
static void batadv_send_outstanding_bcast_packet(struct work_struct *work);
|
static void batadv_send_outstanding_bcast_packet(struct work_struct *work);
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,19 @@
|
||||||
#ifndef _NET_BATMAN_ADV_SEND_H_
|
#ifndef _NET_BATMAN_ADV_SEND_H_
|
||||||
#define _NET_BATMAN_ADV_SEND_H_
|
#define _NET_BATMAN_ADV_SEND_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#include "packet.h"
|
||||||
|
|
||||||
|
struct batadv_hard_iface;
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct sk_buff;
|
||||||
|
struct work_struct;
|
||||||
|
|
||||||
int batadv_send_skb_packet(struct sk_buff *skb,
|
int batadv_send_skb_packet(struct sk_buff *skb,
|
||||||
struct batadv_hard_iface *hard_iface,
|
struct batadv_hard_iface *hard_iface,
|
||||||
const uint8_t *dst_addr);
|
const uint8_t *dst_addr);
|
||||||
|
|
|
@ -15,26 +15,50 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "soft-interface.h"
|
#include "soft-interface.h"
|
||||||
#include "hard-interface.h"
|
#include "main.h"
|
||||||
#include "distributed-arp-table.h"
|
|
||||||
#include "routing.h"
|
#include <linux/atomic.h>
|
||||||
#include "send.h"
|
#include <linux/byteorder/generic.h>
|
||||||
#include "debugfs.h"
|
#include <linux/cache.h>
|
||||||
#include "translation-table.h"
|
#include <linux/compiler.h>
|
||||||
#include "hash.h"
|
#include <linux/errno.h>
|
||||||
#include "gateway_common.h"
|
|
||||||
#include "gateway_client.h"
|
|
||||||
#include "sysfs.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/ethtool.h>
|
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/ethtool.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
#include "multicast.h"
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/lockdep.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/percpu.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/random.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/socket.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
#include "bridge_loop_avoidance.h"
|
#include "bridge_loop_avoidance.h"
|
||||||
|
#include "debugfs.h"
|
||||||
|
#include "distributed-arp-table.h"
|
||||||
|
#include "gateway_client.h"
|
||||||
|
#include "gateway_common.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "multicast.h"
|
||||||
#include "network-coding.h"
|
#include "network-coding.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "send.h"
|
||||||
|
#include "sysfs.h"
|
||||||
|
#include "translation-table.h"
|
||||||
|
|
||||||
static int batadv_get_settings(struct net_device *dev, struct ethtool_cmd *cmd);
|
static int batadv_get_settings(struct net_device *dev, struct ethtool_cmd *cmd);
|
||||||
static void batadv_get_drvinfo(struct net_device *dev,
|
static void batadv_get_drvinfo(struct net_device *dev,
|
||||||
|
@ -105,6 +129,7 @@ static struct net_device_stats *batadv_interface_stats(struct net_device *dev)
|
||||||
static int batadv_interface_set_mac_addr(struct net_device *dev, void *p)
|
static int batadv_interface_set_mac_addr(struct net_device *dev, void *p)
|
||||||
{
|
{
|
||||||
struct batadv_priv *bat_priv = netdev_priv(dev);
|
struct batadv_priv *bat_priv = netdev_priv(dev);
|
||||||
|
struct batadv_softif_vlan *vlan;
|
||||||
struct sockaddr *addr = p;
|
struct sockaddr *addr = p;
|
||||||
uint8_t old_addr[ETH_ALEN];
|
uint8_t old_addr[ETH_ALEN];
|
||||||
|
|
||||||
|
@ -115,12 +140,17 @@ static int batadv_interface_set_mac_addr(struct net_device *dev, void *p)
|
||||||
ether_addr_copy(dev->dev_addr, addr->sa_data);
|
ether_addr_copy(dev->dev_addr, addr->sa_data);
|
||||||
|
|
||||||
/* only modify transtable if it has been initialized before */
|
/* only modify transtable if it has been initialized before */
|
||||||
if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_ACTIVE) {
|
if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE)
|
||||||
batadv_tt_local_remove(bat_priv, old_addr, BATADV_NO_FLAGS,
|
return 0;
|
||||||
|
|
||||||
|
rcu_read_lock();
|
||||||
|
hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) {
|
||||||
|
batadv_tt_local_remove(bat_priv, old_addr, vlan->vid,
|
||||||
"mac address changed", false);
|
"mac address changed", false);
|
||||||
batadv_tt_local_add(dev, addr->sa_data, BATADV_NO_FLAGS,
|
batadv_tt_local_add(dev, addr->sa_data, vlan->vid,
|
||||||
BATADV_NULL_IFINDEX, BATADV_NO_MARK);
|
BATADV_NULL_IFINDEX, BATADV_NO_MARK);
|
||||||
}
|
}
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,17 @@
|
||||||
#ifndef _NET_BATMAN_ADV_SOFT_INTERFACE_H_
|
#ifndef _NET_BATMAN_ADV_SOFT_INTERFACE_H_
|
||||||
#define _NET_BATMAN_ADV_SOFT_INTERFACE_H_
|
#define _NET_BATMAN_ADV_SOFT_INTERFACE_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <net/rtnetlink.h>
|
||||||
|
|
||||||
|
struct batadv_hard_iface;
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct batadv_softif_vlan;
|
||||||
|
struct net_device;
|
||||||
|
struct sk_buff;
|
||||||
|
|
||||||
int batadv_skb_head_push(struct sk_buff *skb, unsigned int len);
|
int batadv_skb_head_push(struct sk_buff *skb, unsigned int len);
|
||||||
void batadv_interface_rx(struct net_device *soft_iface,
|
void batadv_interface_rx(struct net_device *soft_iface,
|
||||||
struct sk_buff *skb, struct batadv_hard_iface *recv_if,
|
struct sk_buff *skb, struct batadv_hard_iface *recv_if,
|
||||||
|
|
|
@ -15,16 +15,35 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
#include "translation-table.h"
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if.h>
|
||||||
|
#include <linux/if_vlan.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/rtnetlink.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/stat.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/stringify.h>
|
||||||
|
|
||||||
#include "distributed-arp-table.h"
|
#include "distributed-arp-table.h"
|
||||||
#include "network-coding.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include "hard-interface.h"
|
|
||||||
#include "soft-interface.h"
|
|
||||||
#include "gateway_common.h"
|
|
||||||
#include "gateway_client.h"
|
#include "gateway_client.h"
|
||||||
|
#include "gateway_common.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "network-coding.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "soft-interface.h"
|
||||||
|
|
||||||
static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
|
static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
|
||||||
{
|
{
|
||||||
|
@ -151,7 +170,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||||
static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
|
static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
|
||||||
batadv_store_##_name)
|
batadv_store_##_name)
|
||||||
|
|
||||||
#define BATADV_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func) \
|
#define BATADV_ATTR_SIF_STORE_UINT(_name, _var, _min, _max, _post_func) \
|
||||||
ssize_t batadv_store_##_name(struct kobject *kobj, \
|
ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||||
struct attribute *attr, char *buff, \
|
struct attribute *attr, char *buff, \
|
||||||
size_t count) \
|
size_t count) \
|
||||||
|
@ -161,24 +180,24 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||||
\
|
\
|
||||||
return __batadv_store_uint_attr(buff, count, _min, _max, \
|
return __batadv_store_uint_attr(buff, count, _min, _max, \
|
||||||
_post_func, attr, \
|
_post_func, attr, \
|
||||||
&bat_priv->_name, net_dev); \
|
&bat_priv->_var, net_dev); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BATADV_ATTR_SIF_SHOW_UINT(_name) \
|
#define BATADV_ATTR_SIF_SHOW_UINT(_name, _var) \
|
||||||
ssize_t batadv_show_##_name(struct kobject *kobj, \
|
ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||||
struct attribute *attr, char *buff) \
|
struct attribute *attr, char *buff) \
|
||||||
{ \
|
{ \
|
||||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \
|
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \
|
||||||
\
|
\
|
||||||
return sprintf(buff, "%i\n", atomic_read(&bat_priv->_name)); \
|
return sprintf(buff, "%i\n", atomic_read(&bat_priv->_var)); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
/* Use this, if you are going to set [name] in the soft-interface
|
/* Use this, if you are going to set [name] in the soft-interface
|
||||||
* (bat_priv) to an unsigned integer value
|
* (bat_priv) to an unsigned integer value
|
||||||
*/
|
*/
|
||||||
#define BATADV_ATTR_SIF_UINT(_name, _mode, _min, _max, _post_func) \
|
#define BATADV_ATTR_SIF_UINT(_name, _var, _mode, _min, _max, _post_func)\
|
||||||
static BATADV_ATTR_SIF_STORE_UINT(_name, _min, _max, _post_func)\
|
static BATADV_ATTR_SIF_STORE_UINT(_name, _var, _min, _max, _post_func)\
|
||||||
static BATADV_ATTR_SIF_SHOW_UINT(_name) \
|
static BATADV_ATTR_SIF_SHOW_UINT(_name, _var) \
|
||||||
static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
|
static BATADV_ATTR(_name, _mode, batadv_show_##_name, \
|
||||||
batadv_store_##_name)
|
batadv_store_##_name)
|
||||||
|
|
||||||
|
@ -540,19 +559,20 @@ BATADV_ATTR_SIF_BOOL(fragmentation, S_IRUGO | S_IWUSR, batadv_update_min_mtu);
|
||||||
static BATADV_ATTR(routing_algo, S_IRUGO, batadv_show_bat_algo, NULL);
|
static BATADV_ATTR(routing_algo, S_IRUGO, batadv_show_bat_algo, NULL);
|
||||||
static BATADV_ATTR(gw_mode, S_IRUGO | S_IWUSR, batadv_show_gw_mode,
|
static BATADV_ATTR(gw_mode, S_IRUGO | S_IWUSR, batadv_show_gw_mode,
|
||||||
batadv_store_gw_mode);
|
batadv_store_gw_mode);
|
||||||
BATADV_ATTR_SIF_UINT(orig_interval, S_IRUGO | S_IWUSR, 2 * BATADV_JITTER,
|
BATADV_ATTR_SIF_UINT(orig_interval, orig_interval, S_IRUGO | S_IWUSR,
|
||||||
INT_MAX, NULL);
|
2 * BATADV_JITTER, INT_MAX, NULL);
|
||||||
BATADV_ATTR_SIF_UINT(hop_penalty, S_IRUGO | S_IWUSR, 0, BATADV_TQ_MAX_VALUE,
|
BATADV_ATTR_SIF_UINT(hop_penalty, hop_penalty, S_IRUGO | S_IWUSR, 0,
|
||||||
NULL);
|
BATADV_TQ_MAX_VALUE, NULL);
|
||||||
BATADV_ATTR_SIF_UINT(gw_sel_class, S_IRUGO | S_IWUSR, 1, BATADV_TQ_MAX_VALUE,
|
BATADV_ATTR_SIF_UINT(gw_sel_class, gw_sel_class, S_IRUGO | S_IWUSR, 1,
|
||||||
batadv_post_gw_reselect);
|
BATADV_TQ_MAX_VALUE, batadv_post_gw_reselect);
|
||||||
static BATADV_ATTR(gw_bandwidth, S_IRUGO | S_IWUSR, batadv_show_gw_bwidth,
|
static BATADV_ATTR(gw_bandwidth, S_IRUGO | S_IWUSR, batadv_show_gw_bwidth,
|
||||||
batadv_store_gw_bwidth);
|
batadv_store_gw_bwidth);
|
||||||
#ifdef CONFIG_BATMAN_ADV_MCAST
|
#ifdef CONFIG_BATMAN_ADV_MCAST
|
||||||
BATADV_ATTR_SIF_BOOL(multicast_mode, S_IRUGO | S_IWUSR, NULL);
|
BATADV_ATTR_SIF_BOOL(multicast_mode, S_IRUGO | S_IWUSR, NULL);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BATMAN_ADV_DEBUG
|
#ifdef CONFIG_BATMAN_ADV_DEBUG
|
||||||
BATADV_ATTR_SIF_UINT(log_level, S_IRUGO | S_IWUSR, 0, BATADV_DBG_ALL, NULL);
|
BATADV_ATTR_SIF_UINT(log_level, log_level, S_IRUGO | S_IWUSR, 0,
|
||||||
|
BATADV_DBG_ALL, NULL);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BATMAN_ADV_NC
|
#ifdef CONFIG_BATMAN_ADV_NC
|
||||||
BATADV_ATTR_SIF_BOOL(network_coding, S_IRUGO | S_IWUSR,
|
BATADV_ATTR_SIF_BOOL(network_coding, S_IRUGO | S_IWUSR,
|
||||||
|
|
|
@ -18,6 +18,16 @@
|
||||||
#ifndef _NET_BATMAN_ADV_SYSFS_H_
|
#ifndef _NET_BATMAN_ADV_SYSFS_H_
|
||||||
#define _NET_BATMAN_ADV_SYSFS_H_
|
#define _NET_BATMAN_ADV_SYSFS_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/sysfs.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_priv;
|
||||||
|
struct batadv_softif_vlan;
|
||||||
|
struct kobject;
|
||||||
|
struct net_device;
|
||||||
|
|
||||||
#define BATADV_SYSFS_IF_MESH_SUBDIR "mesh"
|
#define BATADV_SYSFS_IF_MESH_SUBDIR "mesh"
|
||||||
#define BATADV_SYSFS_IF_BAT_SUBDIR "batman_adv"
|
#define BATADV_SYSFS_IF_BAT_SUBDIR "batman_adv"
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -15,18 +15,41 @@
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "translation-table.h"
|
#include "translation-table.h"
|
||||||
#include "soft-interface.h"
|
#include "main.h"
|
||||||
#include "hard-interface.h"
|
|
||||||
#include "send.h"
|
|
||||||
#include "hash.h"
|
|
||||||
#include "originator.h"
|
|
||||||
#include "routing.h"
|
|
||||||
#include "bridge_loop_avoidance.h"
|
|
||||||
#include "multicast.h"
|
|
||||||
|
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/byteorder/generic.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
#include <linux/crc32c.h>
|
#include <linux/crc32c.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/jhash.h>
|
||||||
|
#include <linux/jiffies.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/lockdep.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/rculist.h>
|
||||||
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/stddef.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
#include <net/net_namespace.h>
|
||||||
|
|
||||||
|
#include "bridge_loop_avoidance.h"
|
||||||
|
#include "hard-interface.h"
|
||||||
|
#include "hash.h"
|
||||||
|
#include "multicast.h"
|
||||||
|
#include "originator.h"
|
||||||
|
#include "packet.h"
|
||||||
|
#include "soft-interface.h"
|
||||||
|
|
||||||
/* hash class keys */
|
/* hash class keys */
|
||||||
static struct lock_class_key batadv_tt_local_hash_lock_class_key;
|
static struct lock_class_key batadv_tt_local_hash_lock_class_key;
|
||||||
|
@ -67,12 +90,8 @@ static inline uint32_t batadv_choose_tt(const void *data, uint32_t size)
|
||||||
uint32_t hash = 0;
|
uint32_t hash = 0;
|
||||||
|
|
||||||
tt = (struct batadv_tt_common_entry *)data;
|
tt = (struct batadv_tt_common_entry *)data;
|
||||||
hash = batadv_hash_bytes(hash, &tt->addr, ETH_ALEN);
|
hash = jhash(&tt->addr, ETH_ALEN, hash);
|
||||||
hash = batadv_hash_bytes(hash, &tt->vid, sizeof(tt->vid));
|
hash = jhash(&tt->vid, sizeof(tt->vid), hash);
|
||||||
|
|
||||||
hash += (hash << 3);
|
|
||||||
hash ^= (hash >> 11);
|
|
||||||
hash += (hash << 15);
|
|
||||||
|
|
||||||
return hash % size;
|
return hash % size;
|
||||||
}
|
}
|
||||||
|
@ -954,17 +973,17 @@ int batadv_tt_local_seq_print_text(struct seq_file *seq, void *offset)
|
||||||
" * %pM %4i [%c%c%c%c%c%c] %3u.%03u (%#.8x)\n",
|
" * %pM %4i [%c%c%c%c%c%c] %3u.%03u (%#.8x)\n",
|
||||||
tt_common_entry->addr,
|
tt_common_entry->addr,
|
||||||
BATADV_PRINT_VID(tt_common_entry->vid),
|
BATADV_PRINT_VID(tt_common_entry->vid),
|
||||||
(tt_common_entry->flags &
|
((tt_common_entry->flags &
|
||||||
BATADV_TT_CLIENT_ROAM ? 'R' : '.'),
|
BATADV_TT_CLIENT_ROAM) ? 'R' : '.'),
|
||||||
no_purge ? 'P' : '.',
|
no_purge ? 'P' : '.',
|
||||||
(tt_common_entry->flags &
|
((tt_common_entry->flags &
|
||||||
BATADV_TT_CLIENT_NEW ? 'N' : '.'),
|
BATADV_TT_CLIENT_NEW) ? 'N' : '.'),
|
||||||
(tt_common_entry->flags &
|
((tt_common_entry->flags &
|
||||||
BATADV_TT_CLIENT_PENDING ? 'X' : '.'),
|
BATADV_TT_CLIENT_PENDING) ? 'X' : '.'),
|
||||||
(tt_common_entry->flags &
|
((tt_common_entry->flags &
|
||||||
BATADV_TT_CLIENT_WIFI ? 'W' : '.'),
|
BATADV_TT_CLIENT_WIFI) ? 'W' : '.'),
|
||||||
(tt_common_entry->flags &
|
((tt_common_entry->flags &
|
||||||
BATADV_TT_CLIENT_ISOLA ? 'I' : '.'),
|
BATADV_TT_CLIENT_ISOLA) ? 'I' : '.'),
|
||||||
no_purge ? 0 : last_seen_secs,
|
no_purge ? 0 : last_seen_secs,
|
||||||
no_purge ? 0 : last_seen_msecs,
|
no_purge ? 0 : last_seen_msecs,
|
||||||
vlan->tt.crc);
|
vlan->tt.crc);
|
||||||
|
@ -1528,10 +1547,10 @@ batadv_tt_global_print_entry(struct batadv_priv *bat_priv,
|
||||||
BATADV_PRINT_VID(tt_global_entry->common.vid),
|
BATADV_PRINT_VID(tt_global_entry->common.vid),
|
||||||
best_entry->ttvn, best_entry->orig_node->orig,
|
best_entry->ttvn, best_entry->orig_node->orig,
|
||||||
last_ttvn, vlan->tt.crc,
|
last_ttvn, vlan->tt.crc,
|
||||||
(flags & BATADV_TT_CLIENT_ROAM ? 'R' : '.'),
|
((flags & BATADV_TT_CLIENT_ROAM) ? 'R' : '.'),
|
||||||
(flags & BATADV_TT_CLIENT_WIFI ? 'W' : '.'),
|
((flags & BATADV_TT_CLIENT_WIFI) ? 'W' : '.'),
|
||||||
(flags & BATADV_TT_CLIENT_ISOLA ? 'I' : '.'),
|
((flags & BATADV_TT_CLIENT_ISOLA) ? 'I' : '.'),
|
||||||
(flags & BATADV_TT_CLIENT_TEMP ? 'T' : '.'));
|
((flags & BATADV_TT_CLIENT_TEMP) ? 'T' : '.'));
|
||||||
|
|
||||||
batadv_orig_node_vlan_free_ref(vlan);
|
batadv_orig_node_vlan_free_ref(vlan);
|
||||||
}
|
}
|
||||||
|
@ -1560,10 +1579,10 @@ print_list:
|
||||||
BATADV_PRINT_VID(tt_global_entry->common.vid),
|
BATADV_PRINT_VID(tt_global_entry->common.vid),
|
||||||
orig_entry->ttvn, orig_entry->orig_node->orig,
|
orig_entry->ttvn, orig_entry->orig_node->orig,
|
||||||
last_ttvn, vlan->tt.crc,
|
last_ttvn, vlan->tt.crc,
|
||||||
(flags & BATADV_TT_CLIENT_ROAM ? 'R' : '.'),
|
((flags & BATADV_TT_CLIENT_ROAM) ? 'R' : '.'),
|
||||||
(flags & BATADV_TT_CLIENT_WIFI ? 'W' : '.'),
|
((flags & BATADV_TT_CLIENT_WIFI) ? 'W' : '.'),
|
||||||
(flags & BATADV_TT_CLIENT_ISOLA ? 'I' : '.'),
|
((flags & BATADV_TT_CLIENT_ISOLA) ? 'I' : '.'),
|
||||||
(flags & BATADV_TT_CLIENT_TEMP ? 'T' : '.'));
|
((flags & BATADV_TT_CLIENT_TEMP) ? 'T' : '.'));
|
||||||
|
|
||||||
batadv_orig_node_vlan_free_ref(vlan);
|
batadv_orig_node_vlan_free_ref(vlan);
|
||||||
}
|
}
|
||||||
|
@ -2529,7 +2548,7 @@ static bool batadv_send_other_tt_response(struct batadv_priv *bat_priv,
|
||||||
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
||||||
"Received TT_REQUEST from %pM for ttvn: %u (%pM) [%c]\n",
|
"Received TT_REQUEST from %pM for ttvn: %u (%pM) [%c]\n",
|
||||||
req_src, tt_data->ttvn, req_dst,
|
req_src, tt_data->ttvn, req_dst,
|
||||||
(tt_data->flags & BATADV_TT_FULL_TABLE ? 'F' : '.'));
|
((tt_data->flags & BATADV_TT_FULL_TABLE) ? 'F' : '.'));
|
||||||
|
|
||||||
/* Let's get the orig node of the REAL destination */
|
/* Let's get the orig node of the REAL destination */
|
||||||
req_dst_orig_node = batadv_orig_hash_find(bat_priv, req_dst);
|
req_dst_orig_node = batadv_orig_hash_find(bat_priv, req_dst);
|
||||||
|
@ -2660,7 +2679,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv,
|
||||||
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
||||||
"Received TT_REQUEST from %pM for ttvn: %u (me) [%c]\n",
|
"Received TT_REQUEST from %pM for ttvn: %u (me) [%c]\n",
|
||||||
req_src, tt_data->ttvn,
|
req_src, tt_data->ttvn,
|
||||||
(tt_data->flags & BATADV_TT_FULL_TABLE ? 'F' : '.'));
|
((tt_data->flags & BATADV_TT_FULL_TABLE) ? 'F' : '.'));
|
||||||
|
|
||||||
spin_lock_bh(&bat_priv->tt.commit_lock);
|
spin_lock_bh(&bat_priv->tt.commit_lock);
|
||||||
|
|
||||||
|
@ -2899,7 +2918,7 @@ static void batadv_handle_tt_response(struct batadv_priv *bat_priv,
|
||||||
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
||||||
"Received TT_RESPONSE from %pM for ttvn %d t_size: %d [%c]\n",
|
"Received TT_RESPONSE from %pM for ttvn %d t_size: %d [%c]\n",
|
||||||
resp_src, tt_data->ttvn, num_entries,
|
resp_src, tt_data->ttvn, num_entries,
|
||||||
(tt_data->flags & BATADV_TT_FULL_TABLE ? 'F' : '.'));
|
((tt_data->flags & BATADV_TT_FULL_TABLE) ? 'F' : '.'));
|
||||||
|
|
||||||
orig_node = batadv_orig_hash_find(bat_priv, resp_src);
|
orig_node = batadv_orig_hash_find(bat_priv, resp_src);
|
||||||
if (!orig_node)
|
if (!orig_node)
|
||||||
|
|
|
@ -18,6 +18,15 @@
|
||||||
#ifndef _NET_BATMAN_ADV_TRANSLATION_TABLE_H_
|
#ifndef _NET_BATMAN_ADV_TRANSLATION_TABLE_H_
|
||||||
#define _NET_BATMAN_ADV_TRANSLATION_TABLE_H_
|
#define _NET_BATMAN_ADV_TRANSLATION_TABLE_H_
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
struct batadv_orig_node;
|
||||||
|
struct batadv_priv;
|
||||||
|
struct net_device;
|
||||||
|
struct seq_file;
|
||||||
|
|
||||||
int batadv_tt_init(struct batadv_priv *bat_priv);
|
int batadv_tt_init(struct batadv_priv *bat_priv);
|
||||||
bool batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
|
bool batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr,
|
||||||
unsigned short vid, int ifindex, uint32_t mark);
|
unsigned short vid, int ifindex, uint32_t mark);
|
||||||
|
|
|
@ -18,9 +18,23 @@
|
||||||
#ifndef _NET_BATMAN_ADV_TYPES_H_
|
#ifndef _NET_BATMAN_ADV_TYPES_H_
|
||||||
#define _NET_BATMAN_ADV_TYPES_H_
|
#define _NET_BATMAN_ADV_TYPES_H_
|
||||||
|
|
||||||
|
#ifndef _NET_BATMAN_ADV_MAIN_H_
|
||||||
|
#error only "main.h" can be included directly
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <linux/bitops.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/netdevice.h>
|
||||||
|
#include <linux/sched.h> /* for linux/wait.h */
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/wait.h>
|
||||||
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "bitarray.h"
|
|
||||||
#include <linux/kernel.h>
|
struct seq_file;
|
||||||
|
|
||||||
#ifdef CONFIG_BATMAN_ADV_DAT
|
#ifdef CONFIG_BATMAN_ADV_DAT
|
||||||
|
|
||||||
|
@ -1121,6 +1135,8 @@ struct batadv_forw_packet {
|
||||||
* @bat_neigh_is_equiv_or_better: check if neigh1 is equally good or better
|
* @bat_neigh_is_equiv_or_better: check if neigh1 is equally good or better
|
||||||
* than neigh2 for their respective outgoing interface from the metric
|
* than neigh2 for their respective outgoing interface from the metric
|
||||||
* prospective
|
* prospective
|
||||||
|
* @bat_neigh_free: free the resources allocated by the routing algorithm for a
|
||||||
|
* neigh_node object
|
||||||
* @bat_orig_print: print the originator table (optional)
|
* @bat_orig_print: print the originator table (optional)
|
||||||
* @bat_orig_free: free the resources allocated by the routing algorithm for an
|
* @bat_orig_free: free the resources allocated by the routing algorithm for an
|
||||||
* orig_node object
|
* orig_node object
|
||||||
|
@ -1138,6 +1154,7 @@ struct batadv_algo_ops {
|
||||||
void (*bat_primary_iface_set)(struct batadv_hard_iface *hard_iface);
|
void (*bat_primary_iface_set)(struct batadv_hard_iface *hard_iface);
|
||||||
void (*bat_ogm_schedule)(struct batadv_hard_iface *hard_iface);
|
void (*bat_ogm_schedule)(struct batadv_hard_iface *hard_iface);
|
||||||
void (*bat_ogm_emit)(struct batadv_forw_packet *forw_packet);
|
void (*bat_ogm_emit)(struct batadv_forw_packet *forw_packet);
|
||||||
|
/* neigh_node handling API */
|
||||||
int (*bat_neigh_cmp)(struct batadv_neigh_node *neigh1,
|
int (*bat_neigh_cmp)(struct batadv_neigh_node *neigh1,
|
||||||
struct batadv_hard_iface *if_outgoing1,
|
struct batadv_hard_iface *if_outgoing1,
|
||||||
struct batadv_neigh_node *neigh2,
|
struct batadv_neigh_node *neigh2,
|
||||||
|
@ -1147,6 +1164,7 @@ struct batadv_algo_ops {
|
||||||
struct batadv_hard_iface *if_outgoing1,
|
struct batadv_hard_iface *if_outgoing1,
|
||||||
struct batadv_neigh_node *neigh2,
|
struct batadv_neigh_node *neigh2,
|
||||||
struct batadv_hard_iface *if_outgoing2);
|
struct batadv_hard_iface *if_outgoing2);
|
||||||
|
void (*bat_neigh_free)(struct batadv_neigh_node *neigh);
|
||||||
/* orig_node handling API */
|
/* orig_node handling API */
|
||||||
void (*bat_orig_print)(struct batadv_priv *priv, struct seq_file *seq,
|
void (*bat_orig_print)(struct batadv_priv *priv, struct seq_file *seq,
|
||||||
struct batadv_hard_iface *hard_iface);
|
struct batadv_hard_iface *hard_iface);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче