pull request: batman-adv 2015-05-29
Subsystems (3)
Hello David,
after quite some time of silence (mostly due to me being rather busy and not because we did not have any active development) here you have my first batch intended for net-next/linux-4.1.
In this patchset you have quite some code cleanup and style fixes. A big chunk of the cleanup work has been performed by Markus Pargmann, followed by a couple of checkpatch fixes brought by Marek Lindner.
Then we have a patch by Sven Eckelmann that disables some of the features we had enabled by default, because not all the users having them enabled at compile time are aware of those.
For example distributions like debian enables any compile-time option without asking the user, thus having him using all these features without his explicit consent with potentially unexpected behaviours. Therefore the decision to disable by default not-so-user-safe options.
This is all for now.
Please pull or let me know of any problem!
Thanks a lot!
The following changes since commit a74eab639ec502eb744528ef7c271576d670aa7a:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next (2015-05-28 20:23:01 -0700)
are available in the git repository at:
git://git.open-mesh.org/linux-merge.git tags/batman-adv-for-davem
for you to fetch changes up to 8ea64e27080eb66dc26f64f28485c0bc9fc06b36:
batman-adv: Use common declaration order in *_send_skb_(packet|unicast) (2015-05-29 10:13:37 +0200)
----------------------------------------------------------------
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
----------------------------------------------------------------
Antonio Quartulli (1):
batman-adv: Use common declaration order in *_send_skb_(packet|unicast)
Marek Lindner (2):
batman-adv: checkpatch - comparison to NULL could be rewritten
batman-adv: checkpatch - spaces preferred around that '*'
Markus Pargmann (8):
batman-adv: debugfs, avoid compiling for !DEBUG_FS
batman-adv: tvlv realloc, move error handling into if block
batman-adv: Makefile, Sort alphabetically
batman-adv: iv_ogm_iface_enable, direct return values
batman-adv: iv_ogm_aggr_packet, bool return value
batman-adv: iv_ogm_send_to_if, declare char* as const
batman-adv: iv_ogm_can_aggregate, code readability
batman-adv: iv_ogm_orig_update, remove unnecessary brackets
Simon Wunderlich (1):
batman-adv: Start new development cycle
Sven Eckelmann (4):
batman-adv: update copyright years for 2015
batman-adv: Check total_size when queueing fragments
batman-adv: Use only queued fragments when merging
batman-adv: Use safer default config for optional features
net/batman-adv/Makefile | 6 +- net/batman-adv/bat_algo.h | 2 +- net/batman-adv/bat_iv_ogm.c | 120 ++++++++++++++++----------------- net/batman-adv/bitarray.c | 2 +- net/batman-adv/bitarray.h | 2 +- net/batman-adv/bridge_loop_avoidance.c | 2 +- net/batman-adv/bridge_loop_avoidance.h | 2 +- net/batman-adv/debugfs.c | 10 +-- net/batman-adv/debugfs.h | 36 +++++++++- net/batman-adv/distributed-arp-table.c | 2 +- net/batman-adv/distributed-arp-table.h | 2 +- net/batman-adv/fragmentation.c | 22 +++--- net/batman-adv/fragmentation.h | 2 +- net/batman-adv/gateway_client.c | 2 +- net/batman-adv/gateway_client.h | 2 +- net/batman-adv/gateway_common.c | 2 +- net/batman-adv/gateway_common.h | 2 +- net/batman-adv/hard-interface.c | 2 +- net/batman-adv/hard-interface.h | 2 +- net/batman-adv/hash.c | 2 +- net/batman-adv/hash.h | 2 +- net/batman-adv/icmp_socket.c | 2 +- net/batman-adv/icmp_socket.h | 2 +- net/batman-adv/main.c | 18 ++--- net/batman-adv/main.h | 6 +- net/batman-adv/multicast.c | 2 +- net/batman-adv/multicast.h | 2 +- net/batman-adv/network-coding.c | 6 +- net/batman-adv/network-coding.h | 2 +- net/batman-adv/originator.c | 2 +- net/batman-adv/originator.h | 2 +- net/batman-adv/packet.h | 2 +- net/batman-adv/routing.c | 2 +- net/batman-adv/routing.h | 2 +- net/batman-adv/send.c | 4 +- net/batman-adv/send.h | 2 +- net/batman-adv/soft-interface.c | 6 +- net/batman-adv/soft-interface.h | 2 +- net/batman-adv/sysfs.c | 2 +- net/batman-adv/sysfs.h | 2 +- net/batman-adv/translation-table.c | 2 +- net/batman-adv/translation-table.h | 2 +- net/batman-adv/types.h | 4 +- 43 files changed, 165 insertions(+), 137 deletions(-)
PATCH 1/16 batman-adv: Start new development cycle
From: Simon Wunderlich <[email protected]>
--- net/batman-adv/main.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/main.h +1 -1
@@ -24,7 +24,7 @@#define BATADV_DRIVER_DEVICE "batman-adv"#ifndef BATADV_SOURCE_VERSION -#define BATADV_SOURCE_VERSION "2015.0" +#define BATADV_SOURCE_VERSION "2015.1"#endif /* B.A.T.M.A.N. parameters */
Signature · 1 line
2.4.2
PATCH 2/16 batman-adv: update copyright years for 2015
In reply to Antonio QuartulliFrom: Sven Eckelmann <[email protected]>
--- net/batman-adv/Makefile | 2 +- net/batman-adv/bat_algo.h | 2 +- net/batman-adv/bat_iv_ogm.c | 2 +- net/batman-adv/bitarray.c | 2 +- net/batman-adv/bitarray.h | 2 +- net/batman-adv/bridge_loop_avoidance.c | 2 +- net/batman-adv/bridge_loop_avoidance.h | 2 +- net/batman-adv/debugfs.c | 2 +- net/batman-adv/debugfs.h | 2 +- net/batman-adv/distributed-arp-table.c | 2 +- net/batman-adv/distributed-arp-table.h | 2 +- net/batman-adv/fragmentation.c | 2 +- net/batman-adv/fragmentation.h | 2 +- net/batman-adv/gateway_client.c | 2 +- net/batman-adv/gateway_client.h | 2 +- net/batman-adv/gateway_common.c | 2 +- net/batman-adv/gateway_common.h | 2 +- net/batman-adv/hard-interface.c | 2 +- net/batman-adv/hard-interface.h | 2 +- net/batman-adv/hash.c | 2 +- net/batman-adv/hash.h | 2 +- net/batman-adv/icmp_socket.c | 2 +- net/batman-adv/icmp_socket.h | 2 +- net/batman-adv/main.c | 2 +- net/batman-adv/main.h | 2 +- net/batman-adv/multicast.c | 2 +- net/batman-adv/multicast.h | 2 +- net/batman-adv/network-coding.c | 2 +- net/batman-adv/network-coding.h | 2 +- net/batman-adv/originator.c | 2 +- net/batman-adv/originator.h | 2 +- net/batman-adv/packet.h | 2 +- net/batman-adv/routing.c | 2 +- net/batman-adv/routing.h | 2 +- net/batman-adv/send.c | 2 +- net/batman-adv/send.h | 2 +- net/batman-adv/soft-interface.c | 2 +- net/batman-adv/soft-interface.h | 2 +- net/batman-adv/sysfs.c | 2 +- net/batman-adv/sysfs.h | 2 +- net/batman-adv/translation-table.c | 2 +- net/batman-adv/translation-table.h | 2 +- net/batman-adv/types.h | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-)
net/batman-adv/Makefile +1 -1
@@ -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 #
net/batman-adv/bat_algo.h +1 -1
@@ -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 *
net/batman-adv/bat_iv_ogm.c +1 -1
@@ -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 *
net/batman-adv/bitarray.c +1 -1
@@ -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 *
net/batman-adv/bitarray.h +1 -1
@@ -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 *
net/batman-adv/bridge_loop_avoidance.c +1 -1
@@ -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 *
net/batman-adv/bridge_loop_avoidance.h +1 -1
@@ -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 *
net/batman-adv/debugfs.c +1 -1
@@ -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 *
net/batman-adv/debugfs.h +1 -1
@@ -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 *
net/batman-adv/distributed-arp-table.c +1 -1
@@ -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 *
net/batman-adv/distributed-arp-table.h +1 -1
@@ -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 *
net/batman-adv/fragmentation.c +1 -1
@@ -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 <[email protected]> *
net/batman-adv/fragmentation.h +1 -1
@@ -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 <[email protected]> *
net/batman-adv/gateway_client.c +1 -1
@@ -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 *
net/batman-adv/gateway_client.h +1 -1
@@ -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 *
net/batman-adv/gateway_common.c +1 -1
@@ -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 *
net/batman-adv/gateway_common.h +1 -1
@@ -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 *
net/batman-adv/hard-interface.c +1 -1
@@ -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 *
net/batman-adv/hard-interface.h +1 -1
@@ -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 *
net/batman-adv/hash.c +1 -1
@@ -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 *
net/batman-adv/hash.h +1 -1
@@ -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 *
net/batman-adv/icmp_socket.c +1 -1
@@ -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 *
net/batman-adv/icmp_socket.h +1 -1
@@ -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 *
net/batman-adv/main.c +1 -1
@@ -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 *
net/batman-adv/main.h +1 -1
@@ -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 *
net/batman-adv/multicast.c +1 -1
@@ -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 *
net/batman-adv/multicast.h +1 -1
@@ -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 *
net/batman-adv/network-coding.c +1 -1
@@ -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 *
net/batman-adv/network-coding.h +1 -1
@@ -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 *
net/batman-adv/originator.c +1 -1
@@ -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 *
net/batman-adv/originator.h +1 -1
@@ -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 *
net/batman-adv/packet.h +1 -1
@@ -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 *
net/batman-adv/routing.c +1 -1
@@ -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 *
net/batman-adv/routing.h +1 -1
@@ -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 *
net/batman-adv/send.c +1 -1
@@ -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 *
net/batman-adv/send.h +1 -1
@@ -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 *
net/batman-adv/soft-interface.c +1 -1
@@ -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 *
net/batman-adv/soft-interface.h +1 -1
@@ -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 *
net/batman-adv/sysfs.c +1 -1
@@ -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 *
net/batman-adv/sysfs.h +1 -1
@@ -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 *
net/batman-adv/translation-table.c +1 -1
@@ -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 *
net/batman-adv/translation-table.h +1 -1
@@ -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 *
net/batman-adv/types.h +1 -1
@@ -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 *
Signature · 1 line
2.4.2
PATCH 3/16 batman-adv: Check total_size when queueing fragments
In reply to Antonio QuartulliFrom: Sven Eckelmann <[email protected]>
The fragmentation code was replaced in 610bfc6bc99bc83680d190ebc69359a05fc7f605 ("batman-adv: Receive fragmented packets and merge") by an implementation which handles the queueing+merging of fragments based on their size and the total_size of the non-fragmented packet. This total_size is announced by each fragment. The new implementation doesn't check if the the total_size information of the packets inside one chain is consistent.
This is consistency check is recommended to allow using any of the packets in the queue to decide whether all fragments of a packet are received or not.
--- net/batman-adv/fragmentation.c | 7 +++++-- net/batman-adv/types.h | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-)
net/batman-adv/fragmentation.c +5 -2
@@ -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); chain->size = skb->len - hdr_size; chain->timestamp = jiffies; + chain->total_size =ntohs (frag_packet->total_size); ret = true; goto out; }
@@ -195,9 +196,11 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node, out: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 -* 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); chain->size =0 ;
net/batman-adv/types.h +2 -0
@@ -132,6 +132,7 @@ struct batadv_orig_ifinfo {* @timestamp: time (jiffie) of last received fragment * @seqno: sequence number of the fragments in the list * @size: accumulated size of packets in list +* @total_size: expected size of the assembled packet */ struct batadv_frag_table_entry {struct hlist_head head;
@@ -139,6 +140,7 @@ struct batadv_frag_table_entry {unsigned long timestamp;uint16_t seqno;uint16_t size; +uint16_t total_size; };/**
Signature · 1 line
2.4.2
PATCH 4/16 batman-adv: Use only queued fragments when merging
In reply to Antonio QuartulliFrom: Sven Eckelmann <[email protected]>
The fragment queueing code now validates the total_size of each fragment, checks when enough fragments are queued to allow to merge them into a single packet and if the fragments have the correct size. Therefore, it is not required to have any other parameter for the merging function than a list of queued fragments.
This change should avoid problems like in the past when the different skb from the list and the function parameter were mixed incorrectly.
--- net/batman-adv/fragmentation.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
net/batman-adv/fragmentation.c +5 -8
@@ -231,19 +231,13 @@ err:* Returns the merged skb or NULL on error. */ 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_list_entry *entry;struct sk_buff *skb_out =NULL ;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 * fragments. */
@@ -252,6 +246,9 @@ batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb) skb_out = entry->skb;kfree (entry); + packet = (struct batadv_frag_packet *)skb_out->data; + size =ntohs (packet->total_size); +/* Make room for the rest of the fragments. */ if (pskb_expand_head (skb_out,0 , size - skb_out->len,GFP_ATOMIC ) <0 ) {kfree_skb (skb_out);
@@ -307,7 +304,7 @@ bool batadv_frag_skb_buffer(struct sk_buff **skb,if (hlist_empty (&head)) goto out; - skb_out =batadv_frag_merge_packets (&head, *skb); + skb_out =batadv_frag_merge_packets (&head);if (!skb_out) goto out_err;
Signature · 1 line
2.4.2
PATCH 5/16 batman-adv: debugfs, avoid compiling for !DEBUG_FS
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
Normally the debugfs framework will return error pointer with -ENODEV for function calls when DEBUG_FS is not set.
batman does not notice this error code and continues trying to create debugfs files and executes more code. We can avoid this code execution by disabling compiling debugfs.c when DEBUG_FS is not set.
--- net/batman-adv/Makefile | 2 +- net/batman-adv/debugfs.c | 8 -------- net/batman-adv/debugfs.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 9 deletions(-)
net/batman-adv/Makefile +1 -1
@@ -20,7 +20,7 @@ obj-$(CONFIG_BATMAN_ADV) += batman-adv.o batman-adv-y += bat_iv_ogm.o batman-adv-y += bitarray.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-y += fragmentation.o batman-adv-y += gateway_client.o
net/batman-adv/debugfs.c +0 -8
@@ -482,11 +482,7 @@ rem_attr:debugfs_remove_recursive (hard_iface->debug_dir); hard_iface->debug_dir =NULL ; out: -#ifdef CONFIG_DEBUG_FS return -ENOMEM ; -#else -return 0 ; -#endif /* CONFIG_DEBUG_FS */ }/**
@@ -541,11 +537,7 @@ rem_attr:debugfs_remove_recursive (bat_priv->debug_dir); bat_priv->debug_dir =NULL ; out: -#ifdef CONFIG_DEBUG_FS return -ENOMEM ; -#else -return 0 ; -#endif /* CONFIG_DEBUG_FS */ }void batadv_debugfs_del_meshif (struct net_device *dev)
net/batman-adv/debugfs.h +34 -0
@@ -20,6 +20,8 @@#define BATADV_DEBUGFS_SUBDIR "batman_adv" +#if IS_ENABLED (CONFIG_DEBUG_FS ) +void batadv_debugfs_init (void );void batadv_debugfs_destroy (void );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);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_ */
Signature · 1 line
2.4.2
PATCH 6/16 batman-adv: tvlv realloc, move error handling into if block
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
Instead of hiding the normal function flow inside an if block, we should just put the error handling into the if block.
--- net/batman-adv/main.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
net/batman-adv/main.c +8 -8
@@ -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 );/* keep old buffer if kmalloc should fail */ -if (new_buff) { -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; - } +if (!new_buff) +return false; -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; }/**
Signature · 1 line
2.4.2
PATCH 7/16 batman-adv: Makefile, Sort alphabetically
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
The whole Makefile is sorted, just the multicast rule is not at the right position.
--- net/batman-adv/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/Makefile +1 -1
@@ -29,6 +29,7 @@ batman-adv-y += hard-interface.o batman-adv-y += hash.o batman-adv-y += icmp_socket.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-y += originator.o batman-adv-y += routing.o
@@ -36,4 +37,3 @@ batman-adv-y += send.o batman-adv-y += soft-interface.o batman-adv-y += sysfs.o batman-adv-y += translation-table.o -batman-adv-$(CONFIG_BATMAN_ADV_MCAST) += multicast.o
Signature · 1 line
2.4.2
PATCH 8/16 batman-adv: iv_ogm_iface_enable, direct return values
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
Directly return error values. No need to use a return variable.
--- net/batman-adv/bat_iv_ogm.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
net/batman-adv/bat_iv_ogm.c +2 -6
@@ -308,7 +308,6 @@ static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface)struct batadv_ogm_packet *batadv_ogm_packet;unsigned char *ogm_buff;uint32_t random_seqno; -int res = -ENOMEM ;/* randomize initial seqno to avoid collision */ 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 ; ogm_buff =kmalloc (hard_iface->bat_iv.ogm_buff_len,GFP_ATOMIC );if (!ogm_buff) - goto out; +return -ENOMEM ; 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->tq =BATADV_TQ_MAX_VALUE ; - res =0 ; - -out: -return res; +return 0 ; }static void batadv_iv_ogm_iface_disable (struct batadv_hard_iface *hard_iface)
Signature · 1 line
2.4.2
PATCH 9/16 batman-adv: iv_ogm_aggr_packet, bool return value
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
This function returns bool values, so it should be defined to return them instead of the whole int range.
--- net/batman-adv/bat_iv_ogm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/batman-adv/bat_iv_ogm.c +2 -2
@@ -392,8 +392,8 @@ static uint8_t batadv_hop_penalty(uint8_t tq, }/* is there another aggregated packet here? */ -static int batadv_iv_ogm_aggr_packet (int buff_pos,int packet_len, -__be16 tvlv_len) +static bool batadv_iv_ogm_aggr_packet (int buff_pos,int packet_len, +__be16 tvlv_len) {int next_buff_pos =0 ;
Signature · 1 line
2.4.2
PATCH 10/16 batman-adv: iv_ogm_send_to_if, declare char* as const
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
This string pointer is later assigned to a constant string, so it should be defined constant at the beginning.
--- net/batman-adv/bat_iv_ogm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/bat_iv_ogm.c +1 -1
@@ -409,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_priv *bat_priv =netdev_priv (hard_iface->soft_iface); -char *fwd_str; +const char *fwd_str;uint8_t packet_num;int16_t buff_pos;struct batadv_ogm_packet *batadv_ogm_packet;
Signature · 1 line
2.4.2
PATCH 11/16 batman-adv: Use safer default config for optional features
In reply to Antonio QuartulliFrom: Sven Eckelmann <[email protected]>
The current default settings for optional features in batman-adv seems to be based around the idea that the user only compiles what he requires. They will automatically enabled when they are compiled in. For example the network coding part of batman-adv is by default disabled in the out-of-tree module but will be enabled when the code is compiled during the module build.
But distributions like Debian just enable all features of the batman-adv kernel module and hope that more experimental features or features with possible negative effects have to be enabled using some runtime configuration interface.
The network_coding feature can help in specific setups but also has drawbacks and is not disabled by default in the out-of-tree module. Disabling by default in the runtime config seems to be also quite sane.
The bridge_loop_avoidance is the only feature which is disabled by default but may be necessary even in simple setups. Packet loops may even be created during the initial node setup when this is not enabled. This is different than STP on bridges because mesh is usually used on Adhoc WiFi. Having two nodes (by accident) in the same LAN segment and in the same mesh network is rather common in this situation.
--- net/batman-adv/network-coding.c | 2 +- net/batman-adv/soft-interface.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
net/batman-adv/network-coding.c +1 -1
@@ -155,7 +155,7 @@ err:*/ 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.max_fwd_delay =10 ; bat_priv->nc.max_buffer_time =200 ;
net/batman-adv/soft-interface.c +1 -1
@@ -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->bonding,0 );#ifdef CONFIG_BATMAN_ADV_BLA -atomic_set (&bat_priv->bridge_loop_avoidance,0 ); +atomic_set (&bat_priv->bridge_loop_avoidance,1 );#endif #ifdef CONFIG_BATMAN_ADV_DAT atomic_set (&bat_priv->distributed_arp_table,1 );
Signature · 1 line
2.4.2
PATCH 12/16 batman-adv: checkpatch - comparison to NULL could be rewritten
In reply to Antonio QuartulliFrom: Marek Lindner <[email protected]>
--- net/batman-adv/soft-interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/soft-interface.c +1 -1
@@ -818,7 +818,7 @@ static int batadv_softif_slave_add(struct net_device *dev,int ret = -EINVAL ; 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; ret =batadv_hardif_enable_interface (hard_iface, dev->name);
Signature · 1 line
2.4.2
PATCH 13/16 batman-adv: checkpatch - spaces preferred around that '*'
In reply to Antonio QuartulliFrom: Marek Lindner <[email protected]>
--- net/batman-adv/main.h | 2 +- net/batman-adv/network-coding.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
net/batman-adv/main.h +1 -1
@@ -44,7 +44,7 @@#define BATADV_TT_CLIENT_TEMP_TIMEOUT 600000/* in milliseconds */ #define BATADV_TT_WORK_PERIOD 5000/* 5 seconds */ #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 * (should be a multiple of our word size) */
net/batman-adv/network-coding.c +1 -1
@@ -275,7 +275,7 @@ static bool batadv_nc_to_purge_nc_path_decoding(struct batadv_priv *bat_priv,* max_buffer time */ return batadv_has_timed_out (nc_path->last_valid, - bat_priv->nc.max_buffer_time*10 ); + bat_priv->nc.max_buffer_time *10 ); }/**
Signature · 1 line
2.4.2
PATCH 14/16 batman-adv: iv_ogm_can_aggregate, code readability
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
This patch tries to increase code readability by negating the first if block and rearranging some of the other conditional blocks. This way we save an indentation level, we also save some allocation that is not necessary for one of the conditions.
--- net/batman-adv/bat_iv_ogm.c | 96 +++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 46 deletions(-)
net/batman-adv/bat_iv_ogm.c +50 -46
@@ -544,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 resulting packet wont be bigger than * MAX_AGGREGATION_BYTES +* otherwise aggregation is not possible */ -if (time_before (send_time, forw_packet->send_time) && -time_after_eq (aggregation_end_time, forw_packet->send_time) && - (aggregated_bytes <=BATADV_MAX_AGGREGATION_BYTES )) { -/* 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; +if (!time_before (send_time, forw_packet->send_time) || + !time_after_eq (aggregation_end_time, forw_packet->send_time)) +return false; -/* packet is not leaving on the same interface. */ -if (forw_packet->if_outgoing != if_outgoing) - goto out; +if (aggregated_bytes >BATADV_MAX_AGGREGATION_BYTES ) +return false; -/* packets without direct link flag and high TTL -* are flooded through the net -*/ -if ((!directlink) && - (!(batadv_ogm_packet->flags &BATADV_DIRECTLINK )) && - (batadv_ogm_packet->ttl !=1 ) && +/* packet is not leaving on the same interface. */ +if (forw_packet->if_outgoing != if_outgoing) +return false; -/* own packets originating non-primary -* interfaces leave only that interface -*/ - ((!forw_packet->own) || - (forw_packet->if_incoming == primary_if))) { - res = true; - goto out; - } +/* 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) +return false; -/* 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 without direct link flag and high TTL +* are flooded through the net +*/ +if (!directlink && + !(batadv_ogm_packet->flags &BATADV_DIRECTLINK ) && + batadv_ogm_packet->ttl !=1 && -/* 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; - } +/* own packets originating non-primary +* interfaces leave only that interface +*/ + (!forw_packet->own || + forw_packet->if_incoming == primary_if)) { + 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:
Signature · 1 line
2.4.2
PATCH 15/16 batman-adv: iv_ogm_orig_update, remove unnecessary brackets
In reply to Antonio QuartulliFrom: Markus Pargmann <[email protected]>
Remove these unnecessary brackets inside a condition.
--- net/batman-adv/bat_iv_ogm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/bat_iv_ogm.c +1 -1
@@ -1081,7 +1081,7 @@ batadv_iv_ogm_orig_update(struct batadv_priv *bat_priv,* won't consider it either */ 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;spin_lock_bh (&orig_node_tmp->bat_iv.ogm_cnt_lock); if_num = router->if_incoming->if_num;
Signature · 1 line
2.4.2
PATCH 16/16 batman-adv: Use common declaration order in *_send_skb_(packet|unicast)
In reply to Antonio QuartulliFrom: Antonio Quartulli <[email protected]>
--- net/batman-adv/send.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/send.c +1 -1
@@ -255,8 +255,8 @@ int batadv_send_skb_unicast(struct batadv_priv *bat_priv, struct batadv_orig_node *orig_node, unsigned short vid) { -struct ethhdr *ethhdr;struct batadv_unicast_packet *unicast_packet; +struct ethhdr *ethhdr;int ret =NET_XMIT_DROP ;if (!orig_node)
Signature · 1 line
2.4.2
David Miller
maintainerFrom: Antonio Quartulli <[email protected]>
Date: Fri, 29 May 2015 11:05:12 +0200
Quoted 8 lines
after quite some time of silence (mostly due to me being rather busy and not because we did not have any active development) here you have my first batch intended for net-next/linux-4.1.
In this patchset you have quite some code cleanup and style fixes. A big chunk of the cleanup work has been performed by Markus Pargmann, followed by a couple of checkpatch fixes brought by Marek Lindner.
Quoted 7 lines
Then we have a patch by Sven Eckelmann that disables some of the features we had enabled by default, because not all the users having them enabled at compile time are aware of those.
For example distributions like debian enables any compile-time option without asking the user, thus having him using all these features without his explicit consent with potentially unexpected behaviours. Therefore the decision to disable by default not-so-user-safe options.
Pulled, thanks Antonio.