Included changes:
- checkpatch fixes - code cleanup - debugfs component is now compiled only if DEBUG_FS is selected - update copyright years - disable by default not-so-user-safe features -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJVaCjMAAoJEOb/4TMchkvfQS0QANDW/0eOT8azlbik5+MZTC5i d+K1Xbc7Qn7ebo5F27eRGNrgV5a8Wwx1JUCANXhAfjSURItj3KoHbjLYN2lJLn5L mBoU7IWwqUzX2garm7xKm94TTaN3Q6t/NGYVeQqJXNcWBDJQcNAr7ECg8tpV16Ec +o6FPsuZBX1dKNijvcy77VNGAaauhAbfMuAYRJDx6CtCIyWg+f/vcAeTR2PCmbMD FP2qD2zHBnR5feQF9YtrCOUHX3SzKlnCBQ1DyUzWbC40eGJWQPZiml+CC0r7fNrI buOlk2yDI1Pc0/TIDrm3B3f0LqoQhmC4h0EDP/tazoiHAe/Vh06D4dmsC81XBM+H 9wEzU+C20DUjDVIyTzboIDjcSNwTN5TxK0dG72vc+yDfSSAmJVtLQ8dqQevRp6cd NPVebjCyJKXoBZWd1o7KO0s41dTbFBVHrA5ZLaEu5TcCMpKHzicJJyMr+OLgqTQE tqLMzqR+7VPmJfIwXuHX+wqHlsJCkrU1zyiuOyBn6uQ4rvbg503eadJffOAaLeCH FpOtKkQ34HNDUchgmiFVWWV1w6r3Si3/a7WRJN55B49sIZqJxxQfB2Evlk8vYNzT sVDFsNk8QnbaL2yCwxJEXj/Kgyfxj/PLAoxDnkt+cHWOF6nbGPHyIdDJQGSAHFrp NcZisqImn5iJS+2QV68a =2UBm -----END PGP SIGNATURE----- Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge Antonio Quartulli says: ==================== Included changes: - checkpatch fixes - code cleanup - debugfs component is now compiled only if DEBUG_FS is selected - update copyright years - disable by default not-so-user-safe features ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
a9ab2184f4
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
# Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
#
|
#
|
||||||
# Marek Lindner, Simon Wunderlich
|
# Marek Lindner, Simon Wunderlich
|
||||||
#
|
#
|
||||||
@ -20,7 +20,7 @@ obj-$(CONFIG_BATMAN_ADV) += batman-adv.o
|
|||||||
batman-adv-y += bat_iv_ogm.o
|
batman-adv-y += bat_iv_ogm.o
|
||||||
batman-adv-y += bitarray.o
|
batman-adv-y += bitarray.o
|
||||||
batman-adv-$(CONFIG_BATMAN_ADV_BLA) += bridge_loop_avoidance.o
|
batman-adv-$(CONFIG_BATMAN_ADV_BLA) += bridge_loop_avoidance.o
|
||||||
batman-adv-y += debugfs.o
|
batman-adv-$(CONFIG_DEBUG_FS) += debugfs.o
|
||||||
batman-adv-$(CONFIG_BATMAN_ADV_DAT) += distributed-arp-table.o
|
batman-adv-$(CONFIG_BATMAN_ADV_DAT) += distributed-arp-table.o
|
||||||
batman-adv-y += fragmentation.o
|
batman-adv-y += fragmentation.o
|
||||||
batman-adv-y += gateway_client.o
|
batman-adv-y += gateway_client.o
|
||||||
@ -29,6 +29,7 @@ batman-adv-y += hard-interface.o
|
|||||||
batman-adv-y += hash.o
|
batman-adv-y += hash.o
|
||||||
batman-adv-y += icmp_socket.o
|
batman-adv-y += icmp_socket.o
|
||||||
batman-adv-y += main.o
|
batman-adv-y += main.o
|
||||||
|
batman-adv-$(CONFIG_BATMAN_ADV_MCAST) += multicast.o
|
||||||
batman-adv-$(CONFIG_BATMAN_ADV_NC) += network-coding.o
|
batman-adv-$(CONFIG_BATMAN_ADV_NC) += network-coding.o
|
||||||
batman-adv-y += originator.o
|
batman-adv-y += originator.o
|
||||||
batman-adv-y += routing.o
|
batman-adv-y += routing.o
|
||||||
@ -36,4 +37,3 @@ batman-adv-y += send.o
|
|||||||
batman-adv-y += soft-interface.o
|
batman-adv-y += soft-interface.o
|
||||||
batman-adv-y += sysfs.o
|
batman-adv-y += sysfs.o
|
||||||
batman-adv-y += translation-table.o
|
batman-adv-y += translation-table.o
|
||||||
batman-adv-$(CONFIG_BATMAN_ADV_MCAST) += multicast.o
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2011-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2011-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
@ -308,7 +308,6 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
|
|||||||
struct batadv_ogm_packet *batadv_ogm_packet;
|
struct batadv_ogm_packet *batadv_ogm_packet;
|
||||||
unsigned char *ogm_buff;
|
unsigned char *ogm_buff;
|
||||||
uint32_t random_seqno;
|
uint32_t random_seqno;
|
||||||
int res = -ENOMEM;
|
|
||||||
|
|
||||||
/* randomize initial seqno to avoid collision */
|
/* randomize initial seqno to avoid collision */
|
||||||
get_random_bytes(&random_seqno, sizeof(random_seqno));
|
get_random_bytes(&random_seqno, sizeof(random_seqno));
|
||||||
@ -317,7 +316,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
|
|||||||
hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN;
|
hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN;
|
||||||
ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC);
|
ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC);
|
||||||
if (!ogm_buff)
|
if (!ogm_buff)
|
||||||
goto out;
|
return -ENOMEM;
|
||||||
|
|
||||||
hard_iface->bat_iv.ogm_buff = ogm_buff;
|
hard_iface->bat_iv.ogm_buff = ogm_buff;
|
||||||
|
|
||||||
@ -329,10 +328,7 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)
|
|||||||
batadv_ogm_packet->reserved = 0;
|
batadv_ogm_packet->reserved = 0;
|
||||||
batadv_ogm_packet->tq = BATADV_TQ_MAX_VALUE;
|
batadv_ogm_packet->tq = BATADV_TQ_MAX_VALUE;
|
||||||
|
|
||||||
res = 0;
|
return 0;
|
||||||
|
|
||||||
out:
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void batadv_iv_ogm_iface_disable(struct batadv_hard_iface *hard_iface)
|
static void batadv_iv_ogm_iface_disable(struct batadv_hard_iface *hard_iface)
|
||||||
@ -396,8 +392,8 @@ static uint8_t batadv_hop_penalty(uint8_t tq,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* is there another aggregated packet here? */
|
/* is there another aggregated packet here? */
|
||||||
static int batadv_iv_ogm_aggr_packet(int buff_pos, int packet_len,
|
static bool batadv_iv_ogm_aggr_packet(int buff_pos, int packet_len,
|
||||||
__be16 tvlv_len)
|
__be16 tvlv_len)
|
||||||
{
|
{
|
||||||
int next_buff_pos = 0;
|
int next_buff_pos = 0;
|
||||||
|
|
||||||
@ -413,7 +409,7 @@ static void batadv_iv_ogm_send_to_if(struct batadv_forw_packet *forw_packet,
|
|||||||
struct batadv_hard_iface *hard_iface)
|
struct batadv_hard_iface *hard_iface)
|
||||||
{
|
{
|
||||||
struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
|
struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
|
||||||
char *fwd_str;
|
const char *fwd_str;
|
||||||
uint8_t packet_num;
|
uint8_t packet_num;
|
||||||
int16_t buff_pos;
|
int16_t buff_pos;
|
||||||
struct batadv_ogm_packet *batadv_ogm_packet;
|
struct batadv_ogm_packet *batadv_ogm_packet;
|
||||||
@ -548,58 +544,62 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet,
|
|||||||
* - the send time is within our MAX_AGGREGATION_MS time
|
* - the send time is within our MAX_AGGREGATION_MS time
|
||||||
* - the resulting packet wont be bigger than
|
* - the resulting packet wont be bigger than
|
||||||
* MAX_AGGREGATION_BYTES
|
* MAX_AGGREGATION_BYTES
|
||||||
|
* otherwise aggregation is not possible
|
||||||
*/
|
*/
|
||||||
if (time_before(send_time, forw_packet->send_time) &&
|
if (!time_before(send_time, forw_packet->send_time) ||
|
||||||
time_after_eq(aggregation_end_time, forw_packet->send_time) &&
|
!time_after_eq(aggregation_end_time, forw_packet->send_time))
|
||||||
(aggregated_bytes <= BATADV_MAX_AGGREGATION_BYTES)) {
|
return false;
|
||||||
/* check aggregation compatibility
|
|
||||||
* -> direct link packets are broadcasted on
|
|
||||||
* their interface only
|
|
||||||
* -> aggregate packet if the current packet is
|
|
||||||
* a "global" packet as well as the base
|
|
||||||
* packet
|
|
||||||
*/
|
|
||||||
primary_if = batadv_primary_if_get_selected(bat_priv);
|
|
||||||
if (!primary_if)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
/* packet is not leaving on the same interface. */
|
if (aggregated_bytes > BATADV_MAX_AGGREGATION_BYTES)
|
||||||
if (forw_packet->if_outgoing != if_outgoing)
|
return false;
|
||||||
goto out;
|
|
||||||
|
|
||||||
/* packets without direct link flag and high TTL
|
/* packet is not leaving on the same interface. */
|
||||||
* are flooded through the net
|
if (forw_packet->if_outgoing != if_outgoing)
|
||||||
*/
|
return false;
|
||||||
if ((!directlink) &&
|
|
||||||
(!(batadv_ogm_packet->flags & BATADV_DIRECTLINK)) &&
|
|
||||||
(batadv_ogm_packet->ttl != 1) &&
|
|
||||||
|
|
||||||
/* own packets originating non-primary
|
/* check aggregation compatibility
|
||||||
* interfaces leave only that interface
|
* -> direct link packets are broadcasted on
|
||||||
*/
|
* their interface only
|
||||||
((!forw_packet->own) ||
|
* -> aggregate packet if the current packet is
|
||||||
(forw_packet->if_incoming == primary_if))) {
|
* a "global" packet as well as the base
|
||||||
res = true;
|
* packet
|
||||||
goto out;
|
*/
|
||||||
}
|
primary_if = batadv_primary_if_get_selected(bat_priv);
|
||||||
|
if (!primary_if)
|
||||||
|
return false;
|
||||||
|
|
||||||
/* if the incoming packet is sent via this one
|
/* packets without direct link flag and high TTL
|
||||||
* interface only - we still can aggregate
|
* are flooded through the net
|
||||||
*/
|
*/
|
||||||
if ((directlink) &&
|
if (!directlink &&
|
||||||
(new_bat_ogm_packet->ttl == 1) &&
|
!(batadv_ogm_packet->flags & BATADV_DIRECTLINK) &&
|
||||||
(forw_packet->if_incoming == if_incoming) &&
|
batadv_ogm_packet->ttl != 1 &&
|
||||||
|
|
||||||
/* packets from direct neighbors or
|
/* own packets originating non-primary
|
||||||
* own secondary interface packets
|
* interfaces leave only that interface
|
||||||
* (= secondary interface packets in general)
|
*/
|
||||||
*/
|
(!forw_packet->own ||
|
||||||
(batadv_ogm_packet->flags & BATADV_DIRECTLINK ||
|
forw_packet->if_incoming == primary_if)) {
|
||||||
(forw_packet->own &&
|
res = true;
|
||||||
forw_packet->if_incoming != primary_if))) {
|
goto out;
|
||||||
res = true;
|
}
|
||||||
goto out;
|
|
||||||
}
|
/* if the incoming packet is sent via this one
|
||||||
|
* interface only - we still can aggregate
|
||||||
|
*/
|
||||||
|
if (directlink &&
|
||||||
|
new_bat_ogm_packet->ttl == 1 &&
|
||||||
|
forw_packet->if_incoming == if_incoming &&
|
||||||
|
|
||||||
|
/* packets from direct neighbors or
|
||||||
|
* own secondary interface packets
|
||||||
|
* (= secondary interface packets in general)
|
||||||
|
*/
|
||||||
|
(batadv_ogm_packet->flags & BATADV_DIRECTLINK ||
|
||||||
|
(forw_packet->own &&
|
||||||
|
forw_packet->if_incoming != primary_if))) {
|
||||||
|
res = true;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
@ -1081,7 +1081,7 @@ batadv_iv_ogm_orig_update(struct batadv_priv *bat_priv,
|
|||||||
* won't consider it either
|
* won't consider it either
|
||||||
*/
|
*/
|
||||||
if (router_ifinfo &&
|
if (router_ifinfo &&
|
||||||
(neigh_ifinfo->bat_iv.tq_avg == router_ifinfo->bat_iv.tq_avg)) {
|
neigh_ifinfo->bat_iv.tq_avg == router_ifinfo->bat_iv.tq_avg) {
|
||||||
orig_node_tmp = router->orig_node;
|
orig_node_tmp = router->orig_node;
|
||||||
spin_lock_bh(&orig_node_tmp->bat_iv.ogm_cnt_lock);
|
spin_lock_bh(&orig_node_tmp->bat_iv.ogm_cnt_lock);
|
||||||
if_num = router->if_incoming->if_num;
|
if_num = router->if_incoming->if_num;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2006-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2006-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Simon Wunderlich, Marek Lindner
|
* Simon Wunderlich, Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2006-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2006-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Simon Wunderlich, Marek Lindner
|
* Simon Wunderlich, Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2011-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2011-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Simon Wunderlich
|
* Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2011-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2011-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Simon Wunderlich
|
* Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2010-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2010-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
@ -482,11 +482,7 @@ rem_attr:
|
|||||||
debugfs_remove_recursive(hard_iface->debug_dir);
|
debugfs_remove_recursive(hard_iface->debug_dir);
|
||||||
hard_iface->debug_dir = NULL;
|
hard_iface->debug_dir = NULL;
|
||||||
out:
|
out:
|
||||||
#ifdef CONFIG_DEBUG_FS
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif /* CONFIG_DEBUG_FS */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -541,11 +537,7 @@ rem_attr:
|
|||||||
debugfs_remove_recursive(bat_priv->debug_dir);
|
debugfs_remove_recursive(bat_priv->debug_dir);
|
||||||
bat_priv->debug_dir = NULL;
|
bat_priv->debug_dir = NULL;
|
||||||
out:
|
out:
|
||||||
#ifdef CONFIG_DEBUG_FS
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif /* CONFIG_DEBUG_FS */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void batadv_debugfs_del_meshif(struct net_device *dev)
|
void batadv_debugfs_del_meshif(struct net_device *dev)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2010-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2010-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#define BATADV_DEBUGFS_SUBDIR "batman_adv"
|
#define BATADV_DEBUGFS_SUBDIR "batman_adv"
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_DEBUG_FS)
|
||||||
|
|
||||||
void batadv_debugfs_init(void);
|
void batadv_debugfs_init(void);
|
||||||
void batadv_debugfs_destroy(void);
|
void batadv_debugfs_destroy(void);
|
||||||
int batadv_debugfs_add_meshif(struct net_device *dev);
|
int batadv_debugfs_add_meshif(struct net_device *dev);
|
||||||
@ -27,4 +29,36 @@ void batadv_debugfs_del_meshif(struct net_device *dev);
|
|||||||
int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface);
|
int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface);
|
||||||
void batadv_debugfs_del_hardif(struct batadv_hard_iface *hard_iface);
|
void batadv_debugfs_del_hardif(struct batadv_hard_iface *hard_iface);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline void batadv_debugfs_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void batadv_debugfs_destroy(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int batadv_debugfs_add_meshif(struct net_device *dev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void batadv_debugfs_del_meshif(struct net_device *dev)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void batadv_debugfs_del_hardif(struct batadv_hard_iface *hard_iface)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _NET_BATMAN_ADV_DEBUGFS_H_ */
|
#endif /* _NET_BATMAN_ADV_DEBUGFS_H_ */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2011-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2011-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Antonio Quartulli
|
* Antonio Quartulli
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2011-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2011-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Antonio Quartulli
|
* Antonio Quartulli
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2013-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2013-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Martin Hundebøll <martin@hundeboll.net>
|
* Martin Hundebøll <martin@hundeboll.net>
|
||||||
*
|
*
|
||||||
@ -161,6 +161,7 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node,
|
|||||||
hlist_add_head(&frag_entry_new->list, &chain->head);
|
hlist_add_head(&frag_entry_new->list, &chain->head);
|
||||||
chain->size = skb->len - hdr_size;
|
chain->size = skb->len - hdr_size;
|
||||||
chain->timestamp = jiffies;
|
chain->timestamp = jiffies;
|
||||||
|
chain->total_size = ntohs(frag_packet->total_size);
|
||||||
ret = true;
|
ret = true;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -195,9 +196,11 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node,
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
if (chain->size > batadv_frag_size_limit() ||
|
if (chain->size > batadv_frag_size_limit() ||
|
||||||
ntohs(frag_packet->total_size) > batadv_frag_size_limit()) {
|
chain->total_size != ntohs(frag_packet->total_size) ||
|
||||||
|
chain->total_size > batadv_frag_size_limit()) {
|
||||||
/* Clear chain if total size of either the list or the packet
|
/* Clear chain if total size of either the list or the packet
|
||||||
* exceeds the maximum size of one merged packet.
|
* exceeds the maximum size of one merged packet. Don't allow
|
||||||
|
* packets to have different total_size.
|
||||||
*/
|
*/
|
||||||
batadv_frag_clear_chain(&chain->head);
|
batadv_frag_clear_chain(&chain->head);
|
||||||
chain->size = 0;
|
chain->size = 0;
|
||||||
@ -228,19 +231,13 @@ err:
|
|||||||
* Returns the merged skb or NULL on error.
|
* Returns the merged skb or NULL on error.
|
||||||
*/
|
*/
|
||||||
static struct sk_buff *
|
static struct sk_buff *
|
||||||
batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
|
batadv_frag_merge_packets(struct hlist_head *chain)
|
||||||
{
|
{
|
||||||
struct batadv_frag_packet *packet;
|
struct batadv_frag_packet *packet;
|
||||||
struct batadv_frag_list_entry *entry;
|
struct batadv_frag_list_entry *entry;
|
||||||
struct sk_buff *skb_out = NULL;
|
struct sk_buff *skb_out = NULL;
|
||||||
int size, hdr_size = sizeof(struct batadv_frag_packet);
|
int size, hdr_size = sizeof(struct batadv_frag_packet);
|
||||||
|
|
||||||
/* Make sure incoming skb has non-bogus data. */
|
|
||||||
packet = (struct batadv_frag_packet *)skb->data;
|
|
||||||
size = ntohs(packet->total_size);
|
|
||||||
if (size > batadv_frag_size_limit())
|
|
||||||
goto free;
|
|
||||||
|
|
||||||
/* Remove first entry, as this is the destination for the rest of the
|
/* Remove first entry, as this is the destination for the rest of the
|
||||||
* fragments.
|
* fragments.
|
||||||
*/
|
*/
|
||||||
@ -249,6 +246,9 @@ batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
|
|||||||
skb_out = entry->skb;
|
skb_out = entry->skb;
|
||||||
kfree(entry);
|
kfree(entry);
|
||||||
|
|
||||||
|
packet = (struct batadv_frag_packet *)skb_out->data;
|
||||||
|
size = ntohs(packet->total_size);
|
||||||
|
|
||||||
/* Make room for the rest of the fragments. */
|
/* Make room for the rest of the fragments. */
|
||||||
if (pskb_expand_head(skb_out, 0, size - skb_out->len, GFP_ATOMIC) < 0) {
|
if (pskb_expand_head(skb_out, 0, size - skb_out->len, GFP_ATOMIC) < 0) {
|
||||||
kfree_skb(skb_out);
|
kfree_skb(skb_out);
|
||||||
@ -304,7 +304,7 @@ bool batadv_frag_skb_buffer(struct sk_buff **skb,
|
|||||||
if (hlist_empty(&head))
|
if (hlist_empty(&head))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
skb_out = batadv_frag_merge_packets(&head, *skb);
|
skb_out = batadv_frag_merge_packets(&head);
|
||||||
if (!skb_out)
|
if (!skb_out)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2013-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2013-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Martin Hundebøll <martin@hundeboll.net>
|
* Martin Hundebøll <martin@hundeboll.net>
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2009-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2009-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2009-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2009-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2009-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2009-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2009-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2009-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2006-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2006-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Simon Wunderlich, Marek Lindner
|
* Simon Wunderlich, Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2006-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2006-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Simon Wunderlich, Marek Lindner
|
* Simon Wunderlich, Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
@ -819,15 +819,15 @@ static bool batadv_tvlv_realloc_packet_buff(unsigned char **packet_buff,
|
|||||||
new_buff = kmalloc(min_packet_len + additional_packet_len, GFP_ATOMIC);
|
new_buff = kmalloc(min_packet_len + additional_packet_len, GFP_ATOMIC);
|
||||||
|
|
||||||
/* keep old buffer if kmalloc should fail */
|
/* keep old buffer if kmalloc should fail */
|
||||||
if (new_buff) {
|
if (!new_buff)
|
||||||
memcpy(new_buff, *packet_buff, min_packet_len);
|
return false;
|
||||||
kfree(*packet_buff);
|
|
||||||
*packet_buff = new_buff;
|
|
||||||
*packet_buff_len = min_packet_len + additional_packet_len;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
memcpy(new_buff, *packet_buff, min_packet_len);
|
||||||
|
kfree(*packet_buff);
|
||||||
|
*packet_buff = new_buff;
|
||||||
|
*packet_buff_len = min_packet_len + additional_packet_len;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
@ -24,7 +24,7 @@
|
|||||||
#define BATADV_DRIVER_DEVICE "batman-adv"
|
#define BATADV_DRIVER_DEVICE "batman-adv"
|
||||||
|
|
||||||
#ifndef BATADV_SOURCE_VERSION
|
#ifndef BATADV_SOURCE_VERSION
|
||||||
#define BATADV_SOURCE_VERSION "2015.0"
|
#define BATADV_SOURCE_VERSION "2015.1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* B.A.T.M.A.N. parameters */
|
/* B.A.T.M.A.N. parameters */
|
||||||
@ -44,7 +44,7 @@
|
|||||||
#define BATADV_TT_CLIENT_TEMP_TIMEOUT 600000 /* in milliseconds */
|
#define BATADV_TT_CLIENT_TEMP_TIMEOUT 600000 /* in milliseconds */
|
||||||
#define BATADV_TT_WORK_PERIOD 5000 /* 5 seconds */
|
#define BATADV_TT_WORK_PERIOD 5000 /* 5 seconds */
|
||||||
#define BATADV_ORIG_WORK_PERIOD 1000 /* 1 second */
|
#define BATADV_ORIG_WORK_PERIOD 1000 /* 1 second */
|
||||||
#define BATADV_DAT_ENTRY_TIMEOUT (5*60000) /* 5 mins in milliseconds */
|
#define BATADV_DAT_ENTRY_TIMEOUT (5 * 60000) /* 5 mins in milliseconds */
|
||||||
/* sliding packet range of received originator messages in sequence numbers
|
/* sliding packet range of received originator messages in sequence numbers
|
||||||
* (should be a multiple of our word size)
|
* (should be a multiple of our word size)
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2014-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Linus Lüssing
|
* Linus Lüssing
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2014-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Linus Lüssing
|
* Linus Lüssing
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2012-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2012-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Martin Hundebøll, Jeppe Ledet-Pedersen
|
* Martin Hundebøll, Jeppe Ledet-Pedersen
|
||||||
*
|
*
|
||||||
@ -155,7 +155,7 @@ err:
|
|||||||
*/
|
*/
|
||||||
void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv)
|
void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv)
|
||||||
{
|
{
|
||||||
atomic_set(&bat_priv->network_coding, 1);
|
atomic_set(&bat_priv->network_coding, 0);
|
||||||
bat_priv->nc.min_tq = 200;
|
bat_priv->nc.min_tq = 200;
|
||||||
bat_priv->nc.max_fwd_delay = 10;
|
bat_priv->nc.max_fwd_delay = 10;
|
||||||
bat_priv->nc.max_buffer_time = 200;
|
bat_priv->nc.max_buffer_time = 200;
|
||||||
@ -275,7 +275,7 @@ static bool batadv_nc_to_purge_nc_path_decoding(struct batadv_priv *bat_priv,
|
|||||||
* max_buffer time
|
* max_buffer time
|
||||||
*/
|
*/
|
||||||
return batadv_has_timed_out(nc_path->last_valid,
|
return batadv_has_timed_out(nc_path->last_valid,
|
||||||
bat_priv->nc.max_buffer_time*10);
|
bat_priv->nc.max_buffer_time * 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2012-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2012-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Martin Hundebøll, Jeppe Ledet-Pedersen
|
* Martin Hundebøll, Jeppe Ledet-Pedersen
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2009-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2009-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
@ -255,8 +255,8 @@ int batadv_send_skb_unicast(struct batadv_priv *bat_priv,
|
|||||||
struct batadv_orig_node *orig_node,
|
struct batadv_orig_node *orig_node,
|
||||||
unsigned short vid)
|
unsigned short vid)
|
||||||
{
|
{
|
||||||
struct ethhdr *ethhdr;
|
|
||||||
struct batadv_unicast_packet *unicast_packet;
|
struct batadv_unicast_packet *unicast_packet;
|
||||||
|
struct ethhdr *ethhdr;
|
||||||
int ret = NET_XMIT_DROP;
|
int ret = NET_XMIT_DROP;
|
||||||
|
|
||||||
if (!orig_node)
|
if (!orig_node)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
@ -732,7 +732,7 @@ static int batadv_softif_init_late(struct net_device *dev)
|
|||||||
atomic_set(&bat_priv->aggregated_ogms, 1);
|
atomic_set(&bat_priv->aggregated_ogms, 1);
|
||||||
atomic_set(&bat_priv->bonding, 0);
|
atomic_set(&bat_priv->bonding, 0);
|
||||||
#ifdef CONFIG_BATMAN_ADV_BLA
|
#ifdef CONFIG_BATMAN_ADV_BLA
|
||||||
atomic_set(&bat_priv->bridge_loop_avoidance, 0);
|
atomic_set(&bat_priv->bridge_loop_avoidance, 1);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BATMAN_ADV_DAT
|
#ifdef CONFIG_BATMAN_ADV_DAT
|
||||||
atomic_set(&bat_priv->distributed_arp_table, 1);
|
atomic_set(&bat_priv->distributed_arp_table, 1);
|
||||||
@ -818,7 +818,7 @@ static int batadv_softif_slave_add(struct net_device *dev,
|
|||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
|
|
||||||
hard_iface = batadv_hardif_get_by_netdev(slave_dev);
|
hard_iface = batadv_hardif_get_by_netdev(slave_dev);
|
||||||
if (!hard_iface || hard_iface->soft_iface != NULL)
|
if (!hard_iface || hard_iface->soft_iface)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
ret = batadv_hardif_enable_interface(hard_iface, dev->name);
|
ret = batadv_hardif_enable_interface(hard_iface, dev->name);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2010-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2010-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2010-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2010-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner
|
* Marek Lindner
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
||||||
*
|
*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2007-2014 B.A.T.M.A.N. contributors:
|
/* Copyright (C) 2007-2015 B.A.T.M.A.N. contributors:
|
||||||
*
|
*
|
||||||
* Marek Lindner, Simon Wunderlich
|
* Marek Lindner, Simon Wunderlich
|
||||||
*
|
*
|
||||||
@ -132,6 +132,7 @@ struct batadv_orig_ifinfo {
|
|||||||
* @timestamp: time (jiffie) of last received fragment
|
* @timestamp: time (jiffie) of last received fragment
|
||||||
* @seqno: sequence number of the fragments in the list
|
* @seqno: sequence number of the fragments in the list
|
||||||
* @size: accumulated size of packets in list
|
* @size: accumulated size of packets in list
|
||||||
|
* @total_size: expected size of the assembled packet
|
||||||
*/
|
*/
|
||||||
struct batadv_frag_table_entry {
|
struct batadv_frag_table_entry {
|
||||||
struct hlist_head head;
|
struct hlist_head head;
|
||||||
@ -139,6 +140,7 @@ struct batadv_frag_table_entry {
|
|||||||
unsigned long timestamp;
|
unsigned long timestamp;
|
||||||
uint16_t seqno;
|
uint16_t seqno;
|
||||||
uint16_t size;
|
uint16_t size;
|
||||||
|
uint16_t total_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user