batman-adv: Check size information when reassembling fragments

Message ID 1417354504.8367.14.camel@katze (mailing list archive)
State Rejected, archived
Headers

Commit Message

Philipp Psurek Nov. 30, 2014, 1:35 p.m. UTC
  Thanks Martin, hi all

There has been a crash with fragmentation disabled (I save us the
trace-back) so I did like you told me plus more:

# git clone git://git.open-mesh.org/batman-adv.git
# cd batman-adv/
# patch < ../2-frag_debug_size.patch 
patching file fragmentation.c
Hunk #1 succeeded at 217 (offset -3 lines).
Hunk #2 succeeded at 243 (offset -3 lines).
Hunk #3 succeeded at 260 with fuzz 2 (offset -3 lines).
Hunk #4 succeeded at 288 (offset -3 lines).
patch unexpectedly ends in middle of line
Hunk #5 succeeded at 301 with fuzz 1 (offset -3 lines).
# make
[ … ]
make: *** [all] Error 2
# LANG=C make
/usr/src/batman-adv/gen-compat-autoconf.sh /usr/src/batman-adv/compat-autoconf.h
make -C /lib/modules/3.17.4-gentoo/build M=/usr/src/batman-adv PWD=/usr/src/batman-adv modules
make[1]: Entering directory '/usr/src/linux-3.17.4-gentoo'
  CC [M]  /usr/src/batman-adv/fragmentation.o
/usr/src/batman-adv/fragmentation.c: In function 'batadv_frag_merge_packets':
/usr/src/batman-adv/fragmentation.c:309:20: error: 'struct batadv_frag_table_entry' has no member named 'total_size'
scripts/Makefile.build:257: recipe for target '/usr/src/batman-adv/fragmentation.o' failed
make[2]: *** [/usr/src/batman-adv/fragmentation.o] Error 1
Makefile:1373: recipe for target '_module_/usr/src/batman-adv' failed
make[1]: *** [_module_/usr/src/batman-adv] Error 2
make[1]: Leaving directory '/usr/src/linux-3.17.4-gentoo'
Makefile:53: recipe for target 'all' failed
make: *** [all] Error 2

I learned something here so I also applied this:
--
# LANG=C make
# make install
# rmmod batman_adv
# modprobe batman_adv
# batctl -v
batctl 2014.3.0 [batman-adv: 2014.3.0-44-g650251a-dirty]

# batctl if
fastd0: active
# batctl it
5000
# batctl ap
disabled
# batctl bl
enabled
# batctl dat
enabled
# batctl ag
enabled
# batctl b
disabled
# batctl f
enabled
# batctl nc
Error - can't open file '/sys/class/net/bat0/mesh/network_coding': No such file or directory
The option you called seems not to be compiled into your batman-adv kernel module.
Consult the README if you wish to learn more about compiling options into batman-adv.
# batctl mark
0x00000000/0x00000000
# batctl mm
enabled
# batctl ll
Error - can't open file '/sys/class/net/bat0/mesh/log_level': No such file or directory
The option you called seems not to be compiled into your batman-adv kernel module.
Consult the README if you wish to learn more about compiling options into batman-adv.
# batctl l
Error - can't open file '/sys/kernel/debug//batman_adv/bat0/log': No such file or directory
The option you called seems not to be compiled into your batman-adv kernel module.
Consult the README if you wish to learn more about compiling options into batman-adv.
# batctl gw
server (announced bw: 90.0/90.0 MBit)

please tell me if it’s OK that nc and l are not compiled into the
module. I’ll report, if I see something.

Best regards

Philipp
  

Comments

Martin Hundebøll Nov. 30, 2014, 1:40 p.m. UTC | #1
Hi Philipp,

On 2014-11-30 14:35, Philipp Psurek wrote:
> Thanks Martin, hi all
>
> There has been a crash with fragmentation disabled (I save us the
> trace-back) so I did like you told me plus more:
>
> # git clone git://git.open-mesh.org/batman-adv.git
> # cd batman-adv/
> # patch < ../2-frag_debug_size.patch
> patching file fragmentation.c
> Hunk #1 succeeded at 217 (offset -3 lines).
> Hunk #2 succeeded at 243 (offset -3 lines).
> Hunk #3 succeeded at 260 with fuzz 2 (offset -3 lines).
> Hunk #4 succeeded at 288 (offset -3 lines).
> patch unexpectedly ends in middle of line
> Hunk #5 succeeded at 301 with fuzz 1 (offset -3 lines).
> # make
> [ … ]
> make: *** [all] Error 2
> # LANG=C make
> /usr/src/batman-adv/gen-compat-autoconf.sh /usr/src/batman-adv/compat-autoconf.h
> make -C /lib/modules/3.17.4-gentoo/build M=/usr/src/batman-adv PWD=/usr/src/batman-adv modules
> make[1]: Entering directory '/usr/src/linux-3.17.4-gentoo'
>    CC [M]  /usr/src/batman-adv/fragmentation.o
> /usr/src/batman-adv/fragmentation.c: In function 'batadv_frag_merge_packets':
> /usr/src/batman-adv/fragmentation.c:309:20: error: 'struct batadv_frag_table_entry' has no member named 'total_size'
> scripts/Makefile.build:257: recipe for target '/usr/src/batman-adv/fragmentation.o' failed
> make[2]: *** [/usr/src/batman-adv/fragmentation.o] Error 1
> Makefile:1373: recipe for target '_module_/usr/src/batman-adv' failed
> make[1]: *** [_module_/usr/src/batman-adv] Error 2
> make[1]: Leaving directory '/usr/src/linux-3.17.4-gentoo'
> Makefile:53: recipe for target 'all' failed
> make: *** [all] Error 2
>
> I learned something here so I also applied this:
> diff --git a/types.h b/types.h
> index 462a70c..c4d7d24 100644
> --- a/types.h
> +++ b/types.h
> @@ -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;
>   };
>
>   /**
> --

Ah, yes. Forgot about Sven's patch in my tree. Thx for solving it. 
Without NC and l is ok.

Thanks!
  

Patch

diff --git a/types.h b/types.h
index 462a70c..c4d7d24 100644
--- a/types.h
+++ b/types.h
@@ -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;
 };
 
 /**