public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: "Linus Lüssing" <linus.luessing@c0d3.blue>
To: The list for a Better Approach To Mobile Ad-hoc Networking
	<b.a.t.m.a.n@lists.open-mesh.org>
Subject: Re: [B.A.T.M.A.N.] [PATCH v7] batman-adv: Snoop DHCPACKs for DAT
Date: Sun, 30 Dec 2018 15:51:33 +0100	[thread overview]
Message-ID: <20181230145133.GA4150@otheros> (raw)
In-Reply-To: <1976755.cJCZaRukfj@sven-edge>

On Sun, Dec 30, 2018 at 02:51:12PM +0100, Sven Eckelmann wrote:
> On Saturday, 29 December 2018 04.10.40 CET Linus Lüssing wrote:
> > +#define BATADV_DHCP_YIADDR_LEN sizeof(((struct batadv_dhcp_packet *)0)->chaddr)
> > +#define BATADV_DHCP_CHADDR_LEN sizeof(((struct batadv_dhcp_packet *)0)->chaddr)
> 
> Why do you use chaddr to calculate the size of yiaddr? yiaddr is only 4 byte 
> and chaddr is 16 byte. Looks to me like you have a potential stack overflow in 
> batadv_dat_dhcp_get_yiaddr because of that.

Urgh... three memory issues fixed, one new one introduced, yaiy...
thanks!

> And you have a lot of code which calls skb_header_pointer again and again + a 
> lot of offset calculations. So it has to potentially traverse all the 
> fragments again and again. I have seen:
> 
> * op
> * htype
> * hlen
> * magic
> * TLV options parts
> * yiaddr
> * chaddr
> 
> Do you see any potential in combining some of them in batadv_dat_check_dhcp 
> (e.g. op, htype, hlen)?

Good question. The advantage of the current approach is that the
extra buffers _op, _htype and _hlen actually would not be used because a
single byte itself has no fragmentation or alignment issues. So no
copying needed, we should always get a pointer right into the
skb data/fragments.

On the other hand, a few copying instructions is probably less
overhead than traversing fragments multiple times. I'll change that.

[...]
> There seems to be a missing "*" in the line before the line "Caller needs to 
> ensure that the skb network header"

ok

> 
> 
> Missing header in distributed-arp-table.c:
> 
> * asm/unaligned.h

ok

> 
> > --- a/net/batman-adv/distributed-arp-table.c
> > +++ b/net/batman-adv/distributed-arp-table.c
> [...]
> > @@ -42,9 +43,11 @@
> >  #include <linux/spinlock.h>
> >  #include <linux/stddef.h>
> >  #include <linux/string.h>
> > +#include <linux/udp.h>
> >  #include <linux/workqueue.h>
> >  #include <net/arp.h>
> >  #include <net/genetlink.h>
> > +#include <net/ip.h>
> >  #include <net/netlink.h>
> >  #include <net/sock.h>
> >  #include <uapi/linux/batman_adv.h>
> 
> And "net/ip.h" also doesn't seem to be used in distributed-arp-table.c

Right, not needed anymore after replacing ip_hdrlen(skb) with
iphdr->ihl * 4 in v7.

> 
> 
> 
> But the biggest problem is that it doesn't build:
> 
>     /usr/bin/make -C /home/build_test/build_env/linux-build/linux-4.9.148 M=/home/build_test/build_env/tmp.9CjwRXIj4f PWD=/home/build_test/build_env/tmp.9CjwRXIj4f REVISION= CONFIG_BATMAN_ADV=m CONFIG_BATMAN_ADV_DEBUG=n CONFIG_BATMAN_ADV_DEBUGFS=y CONFIG_BATMAN_ADV_BLA=n CONFIG_BATMAN_ADV_DAT=n CONFIG_BATMAN_ADV_NC=y CONFIG_BATMAN_ADV_MCAST=y CONFIG_BATMAN_ADV_TRACING=y CONFIG_BATMAN_ADV_BATMAN_V=y INSTALL_MOD_DIR=updates/  modules
>     [...]
>     /home/build_test/build_env/tmp.9CjwRXIj4f/net/batman-adv/routing.c:1046:17: error: undefined identifier 'batadv_dat_snoop_incoming_dhcp_ack'
>     /home/build_test/build_env/tmp.9CjwRXIj4f/net/batman-adv/routing.c:1283:9: error: undefined identifier 'batadv_dat_snoop_incoming_dhcp_ack'
>     /home/build_test/build_env/tmp.9CjwRXIj4f/net/batman-adv/routing.c: In function ‘batadv_recv_unicast_packet’:
>     /home/build_test/build_env/tmp.9CjwRXIj4f/net/batman-adv/routing.c:1046:3: error: implicit declaration of function ‘batadv_dat_snoop_incoming_dhcp_ack’ [-Werror=implicit-function-declaration]
>        batadv_dat_snoop_incoming_dhcp_ack(bat_priv, skb, hdr_size);
> 
> Looks like distributed-arp-table.h is missing a stub function for 
> batadv_dat_snoop_incoming_dhcp_ack when CONFIG_BATMAN_ADV_DAT is not set.

ok

      reply	other threads:[~2018-12-30 14:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-29  3:10 [B.A.T.M.A.N.] [PATCH v7] batman-adv: Snoop DHCPACKs for DAT Linus Lüssing
2018-12-30 13:51 ` Sven Eckelmann
2018-12-30 14:51   ` Linus Lüssing [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181230145133.GA4150@otheros \
    --to=linus.luessing@c0d3.blue \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox