Commit a9ab2184 authored by David S. Miller's avatar David S. Miller

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: default avatarDavid S. Miller <davem@davemloft.net>
parents abf2e7d6 8ea64e27
# #
# 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 ...@@ -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 ...@@ -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 ...@@ -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
/* 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
* *
......
/* 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) ...@@ -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) ...@@ -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) ...@@ -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,7 +392,7 @@ static uint8_t batadv_hop_penalty(uint8_t tq, ...@@ -396,7 +392,7 @@ 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, ...@@ -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,10 +544,19 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet, ...@@ -548,10 +544,19 @@ 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;
if (aggregated_bytes > BATADV_MAX_AGGREGATION_BYTES)
return false;
/* packet is not leaving on the same interface. */
if (forw_packet->if_outgoing != if_outgoing)
return false;
/* check aggregation compatibility /* check aggregation compatibility
* -> direct link packets are broadcasted on * -> direct link packets are broadcasted on
* their interface only * their interface only
...@@ -561,24 +566,20 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet, ...@@ -561,24 +566,20 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet,
*/ */
primary_if = batadv_primary_if_get_selected(bat_priv); primary_if = batadv_primary_if_get_selected(bat_priv);
if (!primary_if) if (!primary_if)
goto out; return false;
/* packet is not leaving on the same interface. */
if (forw_packet->if_outgoing != if_outgoing)
goto out;
/* packets without direct link flag and high TTL /* packets without direct link flag and high TTL
* are flooded through the net * are flooded through the net
*/ */
if ((!directlink) && if (!directlink &&
(!(batadv_ogm_packet->flags & BATADV_DIRECTLINK)) && !(batadv_ogm_packet->flags & BATADV_DIRECTLINK) &&
(batadv_ogm_packet->ttl != 1) && batadv_ogm_packet->ttl != 1 &&
/* own packets originating non-primary /* own packets originating non-primary
* interfaces leave only that interface * interfaces leave only that interface
*/ */
((!forw_packet->own) || (!forw_packet->own ||
(forw_packet->if_incoming == primary_if))) { forw_packet->if_incoming == primary_if)) {
res = true; res = true;
goto out; goto out;
} }
...@@ -586,9 +587,9 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet, ...@@ -586,9 +587,9 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet,
/* if the incoming packet is sent via this one /* if the incoming packet is sent via this one
* interface only - we still can aggregate * interface only - we still can aggregate
*/ */
if ((directlink) && if (directlink &&
(new_bat_ogm_packet->ttl == 1) && new_bat_ogm_packet->ttl == 1 &&
(forw_packet->if_incoming == if_incoming) && forw_packet->if_incoming == if_incoming &&
/* packets from direct neighbors or /* packets from direct neighbors or
* own secondary interface packets * own secondary interface packets
...@@ -600,7 +601,6 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet, ...@@ -600,7 +601,6 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet,
res = true; res = true;
goto out; goto out;
} }
}
out: out:
if (primary_if) if (primary_if)
...@@ -1081,7 +1081,7 @@ batadv_iv_ogm_orig_update(struct batadv_priv *bat_priv, ...@@ -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;
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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 @@ int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface) ...@@ -482,11 +482,7 @@ int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface)
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 @@ int batadv_debugfs_add_meshif(struct net_device *dev) ...@@ -541,11 +537,7 @@ int batadv_debugfs_add_meshif(struct net_device *dev)
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)
......
/* 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 @@ ...@@ -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); ...@@ -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_ */
/* 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
* *
......
/* 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
* *
......
/* 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, ...@@ -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, ...@@ -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 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node, ...@@ -228,19 +231,13 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node,
* 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) ...@@ -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, ...@@ -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;
......
/* 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>
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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, ...@@ -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)
return false;
memcpy(new_buff, *packet_buff, min_packet_len); memcpy(new_buff, *packet_buff, min_packet_len);
kfree(*packet_buff); kfree(*packet_buff);
*packet_buff = new_buff; *packet_buff = new_buff;
*packet_buff_len = min_packet_len + additional_packet_len; *packet_buff_len = min_packet_len + additional_packet_len;
return true;
}
return false; return true;
} }
/** /**
......
/* 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 @@ ...@@ -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 @@ ...@@ -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)
*/ */
......
/* 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
* *
......
/* 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
* *
......
/* 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 @@ int batadv_nc_mesh_init(struct batadv_priv *bat_priv) ...@@ -155,7 +155,7 @@ int batadv_nc_mesh_init(struct batadv_priv *bat_priv)
*/ */
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, ...@@ -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);
} }
/** /**
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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, ...@@ -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)
......
/* 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
* *
......
/* 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) ...@@ -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, ...@@ -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);
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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
* *
......
/* 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 { ...@@ -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 { ...@@ -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;
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment