Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

batman-adv: Return reason for failure in batadv_check_unicast_packet()

batadv_check_unicast_packet() is changed to return a value based on the
reason to drop the packet, which will be useful information for
future users of batadv_check_unicast_packet().

Signed-off-by: Martin Hundebøll <martin@hundeboll.net>
Acked-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>

authored by

Martin Hundebøll and committed by
Antonio Quartulli
f86ce0ad 736292c2

+14 -4
+14 -4
net/batman-adv/routing.c
··· 548 548 return router; 549 549 } 550 550 551 + /** 552 + * batadv_check_unicast_packet - Check for malformed unicast packets 553 + * @skb: packet to check 554 + * @hdr_size: size of header to pull 555 + * 556 + * Check for short header and bad addresses in given packet. Returns negative 557 + * value when check fails and 0 otherwise. The negative value depends on the 558 + * reason: -ENODATA for bad header, -EBADR for broadcast destination or source, 559 + * and -EREMOTE for non-local (other host) destination. 560 + */ 551 561 static int batadv_check_unicast_packet(struct sk_buff *skb, int hdr_size) 552 562 { 553 563 struct ethhdr *ethhdr; 554 564 555 565 /* drop packet if it has not necessary minimum size */ 556 566 if (unlikely(!pskb_may_pull(skb, hdr_size))) 557 - return -1; 567 + return -ENODATA; 558 568 559 569 ethhdr = (struct ethhdr *)skb_mac_header(skb); 560 570 561 571 /* packet with unicast indication but broadcast recipient */ 562 572 if (is_broadcast_ether_addr(ethhdr->h_dest)) 563 - return -1; 573 + return -EBADR; 564 574 565 575 /* packet with broadcast sender address */ 566 576 if (is_broadcast_ether_addr(ethhdr->h_source)) 567 - return -1; 577 + return -EBADR; 568 578 569 579 /* not for me */ 570 580 if (!batadv_is_my_mac(ethhdr->h_dest)) 571 - return -1; 581 + return -EREMOTE; 572 582 573 583 return 0; 574 584 }