mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 18:26:42 +00:00
This feature/cleanup patchset includes the following patches:
- Drop license boilerplate (obsoleted by SPDX license IDs), by Sven Eckelmann - Drop documentation for sysfs and debugfs Documentation, by Sven Eckelmann (2 patches) - Mark sysfs as optional and deprecated, by Sven Eckelmann (3 patches) - Update MAINTAINERS Tree, Chat and Bugtracker, by Sven Eckelmann (3 patches) - Rename batadv_dat_send_data, by Sven Eckelmann - update DAT entries with incoming ARP replies, by Linus Luessing - add multicast-to-unicast support for limited destinations, by Linus Luessing -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEE1ilQI7G+y+fdhnrfoSvjmEKSnqEFAlyc6uEWHHN3QHNpbW9u d3VuZGVybGljaC5kZQAKCRChK+OYQpKeoSA9D/sEpVY0qOITIwzbttcyeDU5PPSD OF4dVCf6Za6CqfnPRCdViKAGtC1FOz+X2BXtedrIxgsjSPFoRvRoi1XBdu4Bobv2 /4wx56rz3AeMoBZ1UyziUIS6Qam1x7vVYSRXk+QHqBYVc16YiIePpCqTuryrzuk4 4MMqXz+V0dqm7z7irRDe7W9/CdFRtZEDAS8o6cgw4IlL56Ul3Yz6xP6p3PRA+H6V OWtVwmwcbX2KzZnrWDgql5NBhJ1bOfn2oDp1Y4RpLRmBp0iwg1qZdNZK2+MD2TTw xxuz5lsZFhTBXNqGgeoGk87m2z0wNkvnj9UnkMPl3gb7j+FyyaAgvVY4M2s2qJv/ ++wKDPPun/aGDOuo/rJdBTdlnToH17KS3jsDwhj4TooroI8uCCLWZQaYWkgjcugD ZKsZlIqFrfH3rPAzOBwRZodoYkOPpz/+xHp3p/cg9ANifwqpxqq3PY35BoP4ZXRi xUy79QgNIFxYXwrrqTrt3UrY8AGo1/OOHmA6nFQGZT79S648ZoG5vPDKFKRzTmcj Mj2GXuBzMIkWayHgnH69Kv9vVZc7mZPi7lartsVq/aZtMCh3HbPNfKtNOYsu4QEq 6c2966jvFB+LdTibiJQWbe0s5Z96UaFQUxH5+gGdM5TS5TCIaG3udXoI1ou4YVJI q6eOdAgblbD7oaNY4w== =WB31 -----END PGP SIGNATURE----- Merge tag 'batadv-next-for-davem-20190328' of git://git.open-mesh.org/linux-merge Simon Wunderlich says: ==================== This feature/cleanup patchset includes the following patches: - Drop license boilerplate (obsoleted by SPDX license IDs), by Sven Eckelmann - Drop documentation for sysfs and debugfs Documentation, by Sven Eckelmann (2 patches) - Mark sysfs as optional and deprecated, by Sven Eckelmann (3 patches) - Update MAINTAINERS Tree, Chat and Bugtracker, by Sven Eckelmann (3 patches) - Rename batadv_dat_send_data, by Sven Eckelmann - update DAT entries with incoming ARP replies, by Linus Luessing - add multicast-to-unicast support for limited destinations, by Linus Luessing ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ede1fd1851
@ -1,3 +1,5 @@
|
||||
This ABI is deprecated and will be removed after 2021. It is
|
||||
replaced with the batadv generic netlink family.
|
||||
|
||||
What: /sys/class/net/<iface>/batman-adv/elp_interval
|
||||
Date: Feb 2014
|
@ -1,3 +1,5 @@
|
||||
This ABI is deprecated and will be removed after 2021. It is
|
||||
replaced with the batadv generic netlink family.
|
||||
|
||||
What: /sys/class/net/<mesh_iface>/mesh/aggregated_ogms
|
||||
Date: May 2010
|
@ -27,24 +27,8 @@ Load the batman-adv module into your kernel::
|
||||
$ insmod batman-adv.ko
|
||||
|
||||
The module is now waiting for activation. You must add some interfaces on which
|
||||
batman can operate. After loading the module batman advanced will scan your
|
||||
systems interfaces to search for compatible interfaces. Once found, it will
|
||||
create subfolders in the ``/sys`` directories of each supported interface,
|
||||
e.g.::
|
||||
|
||||
$ ls /sys/class/net/eth0/batman_adv/
|
||||
elp_interval iface_status mesh_iface throughput_override
|
||||
|
||||
If an interface does not have the ``batman_adv`` subfolder, it probably is not
|
||||
supported. Not supported interfaces are: loopback, non-ethernet and batman's
|
||||
own interfaces.
|
||||
|
||||
Note: After the module was loaded it will continuously watch for new
|
||||
interfaces to verify the compatibility. There is no need to reload the module
|
||||
if you plug your USB wifi adapter into your machine after batman advanced was
|
||||
initially loaded.
|
||||
|
||||
The batman-adv soft-interface can be created using the iproute2 tool ``ip``::
|
||||
batman-adv can operate. The batman-adv soft-interface can be created using the
|
||||
iproute2 tool ``ip``::
|
||||
|
||||
$ ip link add name bat0 type batadv
|
||||
|
||||
@ -52,57 +36,46 @@ To activate a given interface simply attach it to the ``bat0`` interface::
|
||||
|
||||
$ ip link set dev eth0 master bat0
|
||||
|
||||
Repeat this step for all interfaces you wish to add. Now batman starts
|
||||
Repeat this step for all interfaces you wish to add. Now batman-adv starts
|
||||
using/broadcasting on this/these interface(s).
|
||||
|
||||
By reading the "iface_status" file you can check its status::
|
||||
|
||||
$ cat /sys/class/net/eth0/batman_adv/iface_status
|
||||
active
|
||||
|
||||
To deactivate an interface you have to detach it from the "bat0" interface::
|
||||
|
||||
$ ip link set dev eth0 nomaster
|
||||
|
||||
The same can also be done using the batctl interface subcommand::
|
||||
|
||||
All mesh wide settings can be found in batman's own interface folder::
|
||||
batctl -m bat0 interface create
|
||||
batctl -m bat0 interface add -M eth0
|
||||
|
||||
$ ls /sys/class/net/bat0/mesh/
|
||||
aggregated_ogms fragmentation isolation_mark routing_algo
|
||||
ap_isolation gw_bandwidth log_level vlan0
|
||||
bonding gw_mode multicast_mode
|
||||
bridge_loop_avoidance gw_sel_class network_coding
|
||||
distributed_arp_table hop_penalty orig_interval
|
||||
To detach eth0 and destroy bat0::
|
||||
|
||||
There is a special folder for debugging information::
|
||||
batctl -m bat0 interface del -M eth0
|
||||
batctl -m bat0 interface destroy
|
||||
|
||||
$ ls /sys/kernel/debug/batman_adv/bat0/
|
||||
bla_backbone_table log neighbors transtable_local
|
||||
bla_claim_table mcast_flags originators
|
||||
dat_cache nc socket
|
||||
gateways nc_nodes transtable_global
|
||||
There are additional settings for each batadv mesh interface, vlan and hardif
|
||||
which can be modified using batctl. Detailed information about this can be found
|
||||
in its manual.
|
||||
|
||||
Some of the files contain all sort of status information regarding the mesh
|
||||
network. For example, you can view the table of originators (mesh
|
||||
participants) with::
|
||||
For instance, you can check the current originator interval (value
|
||||
in milliseconds which determines how often batman-adv sends its broadcast
|
||||
packets)::
|
||||
|
||||
$ cat /sys/kernel/debug/batman_adv/bat0/originators
|
||||
|
||||
Other files allow to change batman's behaviour to better fit your requirements.
|
||||
For instance, you can check the current originator interval (value in
|
||||
milliseconds which determines how often batman sends its broadcast packets)::
|
||||
|
||||
$ cat /sys/class/net/bat0/mesh/orig_interval
|
||||
$ batctl -M bat0 orig_interval
|
||||
1000
|
||||
|
||||
and also change its value::
|
||||
|
||||
$ echo 3000 > /sys/class/net/bat0/mesh/orig_interval
|
||||
$ batctl -M bat0 orig_interval 3000
|
||||
|
||||
In very mobile scenarios, you might want to adjust the originator interval to a
|
||||
lower value. This will make the mesh more responsive to topology changes, but
|
||||
will also increase the overhead.
|
||||
|
||||
Information about the current state can be accessed via the batadv generic
|
||||
netlink family. batctl provides human readable version via its debug tables
|
||||
subcommands.
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
@ -147,43 +120,16 @@ batman-adv module. When building batman-adv as part of kernel, use "make
|
||||
menuconfig" and enable the option ``B.A.T.M.A.N. debugging``
|
||||
(``CONFIG_BATMAN_ADV_DEBUG=y``).
|
||||
|
||||
Those additional debug messages can be accessed using a special file in
|
||||
debugfs::
|
||||
Those additional debug messages can be accessed using the perf infrastructure::
|
||||
|
||||
$ cat /sys/kernel/debug/batman_adv/bat0/log
|
||||
$ trace-cmd stream -e batadv:batadv_dbg
|
||||
|
||||
The additional debug output is by default disabled. It can be enabled during
|
||||
run time. Following log_levels are defined:
|
||||
run time::
|
||||
|
||||
.. flat-table::
|
||||
$ batctl -m bat0 loglevel routes tt
|
||||
|
||||
* - 0
|
||||
- All debug output disabled
|
||||
* - 1
|
||||
- Enable messages related to routing / flooding / broadcasting
|
||||
* - 2
|
||||
- Enable messages related to route added / changed / deleted
|
||||
* - 4
|
||||
- Enable messages related to translation table operations
|
||||
* - 8
|
||||
- Enable messages related to bridge loop avoidance
|
||||
* - 16
|
||||
- Enable messages related to DAT, ARP snooping and parsing
|
||||
* - 32
|
||||
- Enable messages related to network coding
|
||||
* - 64
|
||||
- Enable messages related to multicast
|
||||
* - 128
|
||||
- Enable messages related to throughput meter
|
||||
* - 255
|
||||
- Enable all messages
|
||||
|
||||
The debug output can be changed at runtime using the file
|
||||
``/sys/class/net/bat0/mesh/log_level``. e.g.::
|
||||
|
||||
$ echo 6 > /sys/class/net/bat0/mesh/log_level
|
||||
|
||||
will enable debug messages for when routes change.
|
||||
will enable debug messages for when routes and translation table entries change.
|
||||
|
||||
Counters for different types of packets entering and leaving the batman-adv
|
||||
module are available through ethtool::
|
||||
|
@ -2793,10 +2793,13 @@ M: Simon Wunderlich <sw@simonwunderlich.de>
|
||||
M: Antonio Quartulli <a@unstable.cc>
|
||||
L: b.a.t.m.a.n@lists.open-mesh.org (moderated for non-subscribers)
|
||||
W: https://www.open-mesh.org/
|
||||
B: https://www.open-mesh.org/projects/batman-adv/issues
|
||||
C: irc://chat.freenode.net/batman
|
||||
Q: https://patchwork.open-mesh.org/project/batman/list/
|
||||
T: git https://git.open-mesh.org/linux-merge.git
|
||||
S: Maintained
|
||||
F: Documentation/ABI/testing/sysfs-class-net-batman-adv
|
||||
F: Documentation/ABI/testing/sysfs-class-net-mesh
|
||||
F: Documentation/ABI/obsolete/sysfs-class-net-batman-adv
|
||||
F: Documentation/ABI/obsolete/sysfs-class-net-mesh
|
||||
F: Documentation/networking/batman-adv.rst
|
||||
F: include/uapi/linux/batadv_packet.h
|
||||
F: include/uapi/linux/batman_adv.h
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_BATADV_PACKET_H_
|
||||
|
@ -2,24 +2,6 @@
|
||||
/* Copyright (C) 2016-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Matthias Schiffer
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_BATMAN_ADV_H_
|
||||
@ -491,6 +473,13 @@ enum batadv_nl_attrs {
|
||||
*/
|
||||
BATADV_ATTR_THROUGHPUT_OVERRIDE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet
|
||||
* copies that may be generated for a multicast-to-unicast conversion.
|
||||
* Once this limit is exceeded distribution will fall back to broadcast.
|
||||
*/
|
||||
BATADV_ATTR_MULTICAST_FANOUT,
|
||||
|
||||
/* add attributes above here, update the policy in netlink.c */
|
||||
|
||||
/**
|
||||
|
@ -2,18 +2,6 @@
|
||||
# Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
#
|
||||
# Marek Lindner, Simon Wunderlich
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of version 2 of the GNU General Public
|
||||
# License as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# B.A.T.M.A.N meshing protocol
|
||||
@ -109,6 +97,18 @@ config BATMAN_ADV_DEBUG
|
||||
buffer. The output is controlled via the batadv netdev specific
|
||||
log_level setting.
|
||||
|
||||
config BATMAN_ADV_SYSFS
|
||||
bool "batman-adv sysfs entries"
|
||||
depends on BATMAN_ADV
|
||||
default y
|
||||
help
|
||||
Say Y here if you want to enable batman-adv device configuration and
|
||||
status interface through sysfs attributes. It is replaced by the
|
||||
batadv generic netlink family but still used by various userspace
|
||||
tools and scripts.
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config BATMAN_ADV_TRACING
|
||||
bool "B.A.T.M.A.N. tracing support"
|
||||
depends on BATMAN_ADV
|
||||
|
@ -2,19 +2,6 @@
|
||||
# Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
#
|
||||
# Marek Lindner, Simon Wunderlich
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of version 2 of the GNU General Public
|
||||
# License as published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_BATMAN_ADV) += batman-adv.o
|
||||
batman-adv-y += bat_algo.o
|
||||
@ -41,7 +28,7 @@ batman-adv-y += originator.o
|
||||
batman-adv-y += routing.o
|
||||
batman-adv-y += send.o
|
||||
batman-adv-y += soft-interface.o
|
||||
batman-adv-y += sysfs.o
|
||||
batman-adv-$(CONFIG_BATMAN_ADV_SYSFS) += sysfs.o
|
||||
batman-adv-$(CONFIG_BATMAN_ADV_TRACING) += trace.o
|
||||
batman-adv-y += tp_meter.o
|
||||
batman-adv-y += translation-table.o
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Linus Lüssing
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BAT_ALGO_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bat_iv_ogm.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BAT_IV_OGM_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2013-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Linus Lüssing, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bat_v.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Linus Lüssing
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BAT_V_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Linus Lüssing, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bat_v_elp.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2013-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Linus Lüssing, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BAT_V_ELP_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2013-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bat_v_ogm.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2013-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BAT_V_OGM_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2006-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Simon Wunderlich, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bitarray.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2006-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Simon Wunderlich, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BITARRAY_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "bridge_loop_avoidance.h"
|
||||
@ -59,7 +47,6 @@
|
||||
#include "netlink.h"
|
||||
#include "originator.h"
|
||||
#include "soft-interface.h"
|
||||
#include "sysfs.h"
|
||||
#include "translation-table.h"
|
||||
|
||||
static const u8 batadv_announce_mac[4] = {0x43, 0x05, 0x43, 0x05};
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_BLA_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "debugfs.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_DEBUGFS_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "distributed-arp-table.h"
|
||||
@ -667,7 +655,7 @@ batadv_dat_select_candidates(struct batadv_priv *bat_priv, __be32 ip_dst,
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_dat_send_data() - send a payload to the selected candidates
|
||||
* batadv_dat_forward_data() - copy and send payload to the selected candidates
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @skb: payload to send
|
||||
* @ip: the DHT key
|
||||
@ -680,9 +668,9 @@ batadv_dat_select_candidates(struct batadv_priv *bat_priv, __be32 ip_dst,
|
||||
* Return: true if the packet is sent to at least one candidate, false
|
||||
* otherwise.
|
||||
*/
|
||||
static bool batadv_dat_send_data(struct batadv_priv *bat_priv,
|
||||
struct sk_buff *skb, __be32 ip,
|
||||
unsigned short vid, int packet_subtype)
|
||||
static bool batadv_dat_forward_data(struct batadv_priv *bat_priv,
|
||||
struct sk_buff *skb, __be32 ip,
|
||||
unsigned short vid, int packet_subtype)
|
||||
{
|
||||
int i;
|
||||
bool ret = false;
|
||||
@ -1277,8 +1265,8 @@ bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,
|
||||
ret = true;
|
||||
} else {
|
||||
/* Send the request to the DHT */
|
||||
ret = batadv_dat_send_data(bat_priv, skb, ip_dst, vid,
|
||||
BATADV_P_DAT_DHT_GET);
|
||||
ret = batadv_dat_forward_data(bat_priv, skb, ip_dst, vid,
|
||||
BATADV_P_DAT_DHT_GET);
|
||||
}
|
||||
out:
|
||||
if (dat_entry)
|
||||
@ -1392,8 +1380,10 @@ void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv,
|
||||
/* Send the ARP reply to the candidates for both the IP addresses that
|
||||
* the node obtained from the ARP reply
|
||||
*/
|
||||
batadv_dat_send_data(bat_priv, skb, ip_src, vid, BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_send_data(bat_priv, skb, ip_dst, vid, BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_forward_data(bat_priv, skb, ip_src, vid,
|
||||
BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_forward_data(bat_priv, skb, ip_dst, vid,
|
||||
BATADV_P_DAT_DHT_PUT);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1444,7 +1434,6 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
|
||||
hw_src, &ip_src, hw_dst, &ip_dst,
|
||||
dat_entry->mac_addr, &dat_entry->ip);
|
||||
dropped = true;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Update our internal cache with both the IP addresses the node got
|
||||
@ -1453,6 +1442,9 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
|
||||
batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid);
|
||||
batadv_dat_entry_add(bat_priv, ip_dst, hw_dst, vid);
|
||||
|
||||
if (dropped)
|
||||
goto out;
|
||||
|
||||
/* If BLA is enabled, only forward ARP replies if we have claimed the
|
||||
* source of the ARP reply or if no one else of the same backbone has
|
||||
* already claimed that client. This prevents that different gateways
|
||||
@ -1708,8 +1700,10 @@ static void batadv_dat_put_dhcp(struct batadv_priv *bat_priv, u8 *chaddr,
|
||||
batadv_dat_entry_add(bat_priv, yiaddr, chaddr, vid);
|
||||
batadv_dat_entry_add(bat_priv, ip_dst, hw_dst, vid);
|
||||
|
||||
batadv_dat_send_data(bat_priv, skb, yiaddr, vid, BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_send_data(bat_priv, skb, ip_dst, vid, BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_forward_data(bat_priv, skb, yiaddr, vid,
|
||||
BATADV_P_DAT_DHT_PUT);
|
||||
batadv_dat_forward_data(bat_priv, skb, ip_dst, vid,
|
||||
BATADV_P_DAT_DHT_PUT);
|
||||
|
||||
consume_skb(skb);
|
||||
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2011-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2013-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Martin Hundebøll <martin@hundeboll.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "fragmentation.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2013-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Martin Hundebøll <martin@hundeboll.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_FRAGMENTATION_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2009-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gateway_client.h"
|
||||
@ -53,7 +41,6 @@
|
||||
#include "originator.h"
|
||||
#include "routing.h"
|
||||
#include "soft-interface.h"
|
||||
#include "sysfs.h"
|
||||
#include "translation-table.h"
|
||||
|
||||
/* These are the offsets of the "hw type" and "hw address length" in the dhcp
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2009-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_GATEWAY_CLIENT_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2009-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "gateway_common.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2009-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_GATEWAY_COMMON_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "hard-interface.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_HARD_INTERFACE_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2006-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Simon Wunderlich, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "hash.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2006-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Simon Wunderlich, Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_HASH_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "icmp_socket.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_ICMP_SOCKET_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "log.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_LOG_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
@ -22,6 +10,7 @@
|
||||
#include <linux/build_bug.h>
|
||||
#include <linux/byteorder/generic.h>
|
||||
#include <linux/crc32c.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/genetlink.h>
|
||||
#include <linux/gfp.h>
|
||||
@ -31,6 +20,7 @@
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/module.h>
|
||||
@ -40,6 +30,7 @@
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/string.h>
|
||||
@ -84,6 +75,22 @@ struct workqueue_struct *batadv_event_workqueue;
|
||||
|
||||
static void batadv_recv_handler_init(void);
|
||||
|
||||
#define BATADV_UEV_TYPE_VAR "BATTYPE="
|
||||
#define BATADV_UEV_ACTION_VAR "BATACTION="
|
||||
#define BATADV_UEV_DATA_VAR "BATDATA="
|
||||
|
||||
static char *batadv_uev_action_str[] = {
|
||||
"add",
|
||||
"del",
|
||||
"change",
|
||||
"loopdetect",
|
||||
};
|
||||
|
||||
static char *batadv_uev_type_str[] = {
|
||||
"gw",
|
||||
"bla",
|
||||
};
|
||||
|
||||
static int __init batadv_init(void)
|
||||
{
|
||||
int ret;
|
||||
@ -678,6 +685,60 @@ bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid)
|
||||
return ap_isolation_enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_throw_uevent() - Send an uevent with batman-adv specific env data
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @type: subsystem type of event. Stored in uevent's BATTYPE
|
||||
* @action: action type of event. Stored in uevent's BATACTION
|
||||
* @data: string with additional information to the event (ignored for
|
||||
* BATADV_UEV_DEL). Stored in uevent's BATDATA
|
||||
*
|
||||
* Return: 0 on success or negative error number in case of failure
|
||||
*/
|
||||
int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
|
||||
enum batadv_uev_action action, const char *data)
|
||||
{
|
||||
int ret = -ENOMEM;
|
||||
struct kobject *bat_kobj;
|
||||
char *uevent_env[4] = { NULL, NULL, NULL, NULL };
|
||||
|
||||
bat_kobj = &bat_priv->soft_iface->dev.kobj;
|
||||
|
||||
uevent_env[0] = kasprintf(GFP_ATOMIC,
|
||||
"%s%s", BATADV_UEV_TYPE_VAR,
|
||||
batadv_uev_type_str[type]);
|
||||
if (!uevent_env[0])
|
||||
goto out;
|
||||
|
||||
uevent_env[1] = kasprintf(GFP_ATOMIC,
|
||||
"%s%s", BATADV_UEV_ACTION_VAR,
|
||||
batadv_uev_action_str[action]);
|
||||
if (!uevent_env[1])
|
||||
goto out;
|
||||
|
||||
/* If the event is DEL, ignore the data field */
|
||||
if (action != BATADV_UEV_DEL) {
|
||||
uevent_env[2] = kasprintf(GFP_ATOMIC,
|
||||
"%s%s", BATADV_UEV_DATA_VAR, data);
|
||||
if (!uevent_env[2])
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = kobject_uevent_env(bat_kobj, KOBJ_CHANGE, uevent_env);
|
||||
out:
|
||||
kfree(uevent_env[0]);
|
||||
kfree(uevent_env[1]);
|
||||
kfree(uevent_env[2]);
|
||||
|
||||
if (ret)
|
||||
batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
|
||||
"Impossible to send uevent for (%s,%s,%s) event (err: %d)\n",
|
||||
batadv_uev_type_str[type],
|
||||
batadv_uev_action_str[action],
|
||||
(action == BATADV_UEV_DEL ? "NULL" : data), ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
module_init(batadv_init);
|
||||
module_exit(batadv_exit);
|
||||
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_MAIN_H_
|
||||
@ -394,5 +382,7 @@ static inline void batadv_add_counter(struct batadv_priv *bat_priv, size_t idx,
|
||||
|
||||
unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len);
|
||||
bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid);
|
||||
int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
|
||||
enum batadv_uev_action action, const char *data);
|
||||
|
||||
#endif /* _NET_BATMAN_ADV_MAIN_H_ */
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2014-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Linus Lüssing
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "multicast.h"
|
||||
@ -66,6 +54,7 @@
|
||||
#include "hash.h"
|
||||
#include "log.h"
|
||||
#include "netlink.h"
|
||||
#include "send.h"
|
||||
#include "soft-interface.h"
|
||||
#include "translation-table.h"
|
||||
#include "tvlv.h"
|
||||
@ -991,6 +980,7 @@ batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
{
|
||||
int ret, tt_count, ip_count, unsnoop_count, total_count;
|
||||
bool is_unsnoopable = false;
|
||||
unsigned int mcast_fanout;
|
||||
struct ethhdr *ethhdr;
|
||||
|
||||
ret = batadv_mcast_forw_mode_check(bat_priv, skb, &is_unsnoopable);
|
||||
@ -1025,8 +1015,203 @@ batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
case 0:
|
||||
return BATADV_FORW_NONE;
|
||||
default:
|
||||
return BATADV_FORW_ALL;
|
||||
mcast_fanout = atomic_read(&bat_priv->multicast_fanout);
|
||||
|
||||
if (!unsnoop_count && total_count <= mcast_fanout)
|
||||
return BATADV_FORW_SOME;
|
||||
}
|
||||
|
||||
return BATADV_FORW_ALL;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_mcast_forw_tt() - forwards a packet to multicast listeners
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @skb: the multicast packet to transmit
|
||||
* @vid: the vlan identifier
|
||||
*
|
||||
* Sends copies of a frame with multicast destination to any multicast
|
||||
* listener registered in the translation table. A transmission is performed
|
||||
* via a batman-adv unicast packet for each such destination node.
|
||||
*
|
||||
* Return: NET_XMIT_DROP on memory allocation failure, NET_XMIT_SUCCESS
|
||||
* otherwise.
|
||||
*/
|
||||
static int
|
||||
batadv_mcast_forw_tt(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
unsigned short vid)
|
||||
{
|
||||
int ret = NET_XMIT_SUCCESS;
|
||||
struct sk_buff *newskb;
|
||||
|
||||
struct batadv_tt_orig_list_entry *orig_entry;
|
||||
|
||||
struct batadv_tt_global_entry *tt_global;
|
||||
const u8 *addr = eth_hdr(skb)->h_dest;
|
||||
|
||||
tt_global = batadv_tt_global_hash_find(bat_priv, addr, vid);
|
||||
if (!tt_global)
|
||||
goto out;
|
||||
|
||||
rcu_read_lock();
|
||||
hlist_for_each_entry_rcu(orig_entry, &tt_global->orig_list, list) {
|
||||
newskb = skb_copy(skb, GFP_ATOMIC);
|
||||
if (!newskb) {
|
||||
ret = NET_XMIT_DROP;
|
||||
break;
|
||||
}
|
||||
|
||||
batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0,
|
||||
orig_entry->orig_node, vid);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
batadv_tt_global_entry_put(tt_global);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_mcast_forw_want_all_ipv4() - forward to nodes with want-all-ipv4
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @skb: the multicast packet to transmit
|
||||
* @vid: the vlan identifier
|
||||
*
|
||||
* Sends copies of a frame with multicast destination to any node with a
|
||||
* BATADV_MCAST_WANT_ALL_IPV4 flag set. A transmission is performed via a
|
||||
* batman-adv unicast packet for each such destination node.
|
||||
*
|
||||
* Return: NET_XMIT_DROP on memory allocation failure, NET_XMIT_SUCCESS
|
||||
* otherwise.
|
||||
*/
|
||||
static int
|
||||
batadv_mcast_forw_want_all_ipv4(struct batadv_priv *bat_priv,
|
||||
struct sk_buff *skb, unsigned short vid)
|
||||
{
|
||||
struct batadv_orig_node *orig_node;
|
||||
int ret = NET_XMIT_SUCCESS;
|
||||
struct sk_buff *newskb;
|
||||
|
||||
rcu_read_lock();
|
||||
hlist_for_each_entry_rcu(orig_node,
|
||||
&bat_priv->mcast.want_all_ipv4_list,
|
||||
mcast_want_all_ipv4_node) {
|
||||
newskb = skb_copy(skb, GFP_ATOMIC);
|
||||
if (!newskb) {
|
||||
ret = NET_XMIT_DROP;
|
||||
break;
|
||||
}
|
||||
|
||||
batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0,
|
||||
orig_node, vid);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_mcast_forw_want_all_ipv6() - forward to nodes with want-all-ipv6
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @skb: The multicast packet to transmit
|
||||
* @vid: the vlan identifier
|
||||
*
|
||||
* Sends copies of a frame with multicast destination to any node with a
|
||||
* BATADV_MCAST_WANT_ALL_IPV6 flag set. A transmission is performed via a
|
||||
* batman-adv unicast packet for each such destination node.
|
||||
*
|
||||
* Return: NET_XMIT_DROP on memory allocation failure, NET_XMIT_SUCCESS
|
||||
* otherwise.
|
||||
*/
|
||||
static int
|
||||
batadv_mcast_forw_want_all_ipv6(struct batadv_priv *bat_priv,
|
||||
struct sk_buff *skb, unsigned short vid)
|
||||
{
|
||||
struct batadv_orig_node *orig_node;
|
||||
int ret = NET_XMIT_SUCCESS;
|
||||
struct sk_buff *newskb;
|
||||
|
||||
rcu_read_lock();
|
||||
hlist_for_each_entry_rcu(orig_node,
|
||||
&bat_priv->mcast.want_all_ipv6_list,
|
||||
mcast_want_all_ipv6_node) {
|
||||
newskb = skb_copy(skb, GFP_ATOMIC);
|
||||
if (!newskb) {
|
||||
ret = NET_XMIT_DROP;
|
||||
break;
|
||||
}
|
||||
|
||||
batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0,
|
||||
orig_node, vid);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_mcast_forw_want_all() - forward packet to nodes in a want-all list
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @skb: the multicast packet to transmit
|
||||
* @vid: the vlan identifier
|
||||
*
|
||||
* Sends copies of a frame with multicast destination to any node with a
|
||||
* BATADV_MCAST_WANT_ALL_IPV4 or BATADV_MCAST_WANT_ALL_IPV6 flag set. A
|
||||
* transmission is performed via a batman-adv unicast packet for each such
|
||||
* destination node.
|
||||
*
|
||||
* Return: NET_XMIT_DROP on memory allocation failure or if the protocol family
|
||||
* is neither IPv4 nor IPv6. NET_XMIT_SUCCESS otherwise.
|
||||
*/
|
||||
static int
|
||||
batadv_mcast_forw_want_all(struct batadv_priv *bat_priv,
|
||||
struct sk_buff *skb, unsigned short vid)
|
||||
{
|
||||
switch (ntohs(eth_hdr(skb)->h_proto)) {
|
||||
case ETH_P_IP:
|
||||
return batadv_mcast_forw_want_all_ipv4(bat_priv, skb, vid);
|
||||
case ETH_P_IPV6:
|
||||
return batadv_mcast_forw_want_all_ipv6(bat_priv, skb, vid);
|
||||
default:
|
||||
/* we shouldn't be here... */
|
||||
return NET_XMIT_DROP;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_mcast_forw_send() - send packet to any detected multicast recpient
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @skb: the multicast packet to transmit
|
||||
* @vid: the vlan identifier
|
||||
*
|
||||
* Sends copies of a frame with multicast destination to any node that signaled
|
||||
* interest in it, that is either via the translation table or the according
|
||||
* want-all flags. A transmission is performed via a batman-adv unicast packet
|
||||
* for each such destination node.
|
||||
*
|
||||
* The given skb is consumed/freed.
|
||||
*
|
||||
* Return: NET_XMIT_DROP on memory allocation failure or if the protocol family
|
||||
* is neither IPv4 nor IPv6. NET_XMIT_SUCCESS otherwise.
|
||||
*/
|
||||
int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
unsigned short vid)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = batadv_mcast_forw_tt(bat_priv, skb, vid);
|
||||
if (ret != NET_XMIT_SUCCESS) {
|
||||
kfree_skb(skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = batadv_mcast_forw_want_all(bat_priv, skb, vid);
|
||||
if (ret != NET_XMIT_SUCCESS) {
|
||||
kfree_skb(skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
consume_skb(skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2014-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Linus Lüssing
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_MULTICAST_H_
|
||||
@ -35,6 +23,13 @@ enum batadv_forw_mode {
|
||||
*/
|
||||
BATADV_FORW_ALL,
|
||||
|
||||
/**
|
||||
* @BATADV_FORW_SOME: forward the packet to some nodes (currently via
|
||||
* a multicast-to-unicast conversion and the BATMAN unicast routing
|
||||
* protocol)
|
||||
*/
|
||||
BATADV_FORW_SOME,
|
||||
|
||||
/**
|
||||
* @BATADV_FORW_SINGLE: forward the packet to a single node (currently
|
||||
* via the BATMAN unicast routing protocol)
|
||||
@ -51,6 +46,9 @@ enum batadv_forw_mode
|
||||
batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
struct batadv_orig_node **mcast_single_orig);
|
||||
|
||||
int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
unsigned short vid);
|
||||
|
||||
void batadv_mcast_init(struct batadv_priv *bat_priv);
|
||||
|
||||
int batadv_mcast_flags_seq_print_text(struct seq_file *seq, void *offset);
|
||||
@ -73,6 +71,14 @@ batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
return BATADV_FORW_ALL;
|
||||
}
|
||||
|
||||
static inline int
|
||||
batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb,
|
||||
unsigned short vid)
|
||||
{
|
||||
kfree_skb(skb);
|
||||
return NET_XMIT_DROP;
|
||||
}
|
||||
|
||||
static inline int batadv_mcast_init(struct batadv_priv *bat_priv)
|
||||
{
|
||||
return 0;
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2016-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Matthias Schiffer
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "netlink.h"
|
||||
@ -157,6 +145,7 @@ static const struct nla_policy batadv_netlink_policy[NUM_BATADV_ATTR] = {
|
||||
[BATADV_ATTR_HOP_PENALTY] = { .type = NLA_U8 },
|
||||
[BATADV_ATTR_LOG_LEVEL] = { .type = NLA_U32 },
|
||||
[BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED] = { .type = NLA_U8 },
|
||||
[BATADV_ATTR_MULTICAST_FANOUT] = { .type = NLA_U32 },
|
||||
[BATADV_ATTR_NETWORK_CODING_ENABLED] = { .type = NLA_U8 },
|
||||
[BATADV_ATTR_ORIG_INTERVAL] = { .type = NLA_U32 },
|
||||
[BATADV_ATTR_ELP_INTERVAL] = { .type = NLA_U32 },
|
||||
@ -353,6 +342,10 @@ static int batadv_netlink_mesh_fill(struct sk_buff *msg,
|
||||
if (nla_put_u8(msg, BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
|
||||
!atomic_read(&bat_priv->multicast_mode)))
|
||||
goto nla_put_failure;
|
||||
|
||||
if (nla_put_u32(msg, BATADV_ATTR_MULTICAST_FANOUT,
|
||||
atomic_read(&bat_priv->multicast_fanout)))
|
||||
goto nla_put_failure;
|
||||
#endif /* CONFIG_BATMAN_ADV_MCAST */
|
||||
|
||||
#ifdef CONFIG_BATMAN_ADV_NC
|
||||
@ -592,6 +585,12 @@ static int batadv_netlink_set_mesh(struct sk_buff *skb, struct genl_info *info)
|
||||
|
||||
atomic_set(&bat_priv->multicast_mode, !nla_get_u8(attr));
|
||||
}
|
||||
|
||||
if (info->attrs[BATADV_ATTR_MULTICAST_FANOUT]) {
|
||||
attr = info->attrs[BATADV_ATTR_MULTICAST_FANOUT];
|
||||
|
||||
atomic_set(&bat_priv->multicast_fanout, nla_get_u32(attr));
|
||||
}
|
||||
#endif /* CONFIG_BATMAN_ADV_MCAST */
|
||||
|
||||
#ifdef CONFIG_BATMAN_ADV_NC
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2016-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Matthias Schiffer
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_NETLINK_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2012-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Martin Hundebøll, Jeppe Ledet-Pedersen
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "network-coding.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2012-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Martin Hundebøll, Jeppe Ledet-Pedersen
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_NETWORK_CODING_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2009-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "originator.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_ORIGINATOR_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "routing.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_ROUTING_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "send.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_SEND_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "soft-interface.h"
|
||||
@ -209,7 +197,7 @@ static netdev_tx_t batadv_interface_tx(struct sk_buff *skb,
|
||||
unsigned short vid;
|
||||
u32 seqno;
|
||||
int gw_mode;
|
||||
enum batadv_forw_mode forw_mode;
|
||||
enum batadv_forw_mode forw_mode = BATADV_FORW_SINGLE;
|
||||
struct batadv_orig_node *mcast_single_orig = NULL;
|
||||
int network_offset = ETH_HLEN;
|
||||
__be16 proto;
|
||||
@ -317,7 +305,8 @@ send:
|
||||
if (forw_mode == BATADV_FORW_NONE)
|
||||
goto dropped;
|
||||
|
||||
if (forw_mode == BATADV_FORW_SINGLE)
|
||||
if (forw_mode == BATADV_FORW_SINGLE ||
|
||||
forw_mode == BATADV_FORW_SOME)
|
||||
do_bcast = false;
|
||||
}
|
||||
}
|
||||
@ -377,6 +366,8 @@ send:
|
||||
ret = batadv_send_skb_unicast(bat_priv, skb,
|
||||
BATADV_UNICAST, 0,
|
||||
mcast_single_orig, vid);
|
||||
} else if (forw_mode == BATADV_FORW_SOME) {
|
||||
ret = batadv_mcast_forw_send(bat_priv, skb, vid);
|
||||
} else {
|
||||
if (batadv_dat_snoop_outgoing_arp_request(bat_priv,
|
||||
skb))
|
||||
@ -818,6 +809,7 @@ static int batadv_softif_init_late(struct net_device *dev)
|
||||
bat_priv->mcast.querier_ipv6.shadowing = false;
|
||||
bat_priv->mcast.flags = BATADV_NO_FLAGS;
|
||||
atomic_set(&bat_priv->multicast_mode, 1);
|
||||
atomic_set(&bat_priv->multicast_fanout, 16);
|
||||
atomic_set(&bat_priv->mcast.num_want_all_unsnoopables, 0);
|
||||
atomic_set(&bat_priv->mcast.num_want_all_ipv4, 0);
|
||||
atomic_set(&bat_priv->mcast.num_want_all_ipv6, 0);
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_SOFT_INTERFACE_H_
|
||||
|
@ -2,23 +2,12 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "sysfs.h"
|
||||
#include "main.h"
|
||||
|
||||
#include <asm/current.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/device.h>
|
||||
@ -34,6 +23,7 @@
|
||||
#include <linux/rculist.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/string.h>
|
||||
@ -52,6 +42,16 @@
|
||||
#include "network-coding.h"
|
||||
#include "soft-interface.h"
|
||||
|
||||
/**
|
||||
* batadv_sysfs_deprecated() - Log use of deprecated batadv sysfs access
|
||||
* @attr: attribute which was accessed
|
||||
*/
|
||||
static void batadv_sysfs_deprecated(struct attribute *attr)
|
||||
{
|
||||
pr_warn_ratelimited(DEPRECATED "%s (pid %d) Use of sysfs file \"%s\".\nUse batadv genl family instead",
|
||||
current->comm, task_pid_nr(current), attr->name);
|
||||
}
|
||||
|
||||
static struct net_device *batadv_kobj_to_netdev(struct kobject *obj)
|
||||
{
|
||||
struct device *dev = container_of(obj->parent, struct device, kobj);
|
||||
@ -114,22 +114,6 @@ batadv_kobj_to_vlan(struct batadv_priv *bat_priv, struct kobject *obj)
|
||||
return vlan;
|
||||
}
|
||||
|
||||
#define BATADV_UEV_TYPE_VAR "BATTYPE="
|
||||
#define BATADV_UEV_ACTION_VAR "BATACTION="
|
||||
#define BATADV_UEV_DATA_VAR "BATDATA="
|
||||
|
||||
static char *batadv_uev_action_str[] = {
|
||||
"add",
|
||||
"del",
|
||||
"change",
|
||||
"loopdetect",
|
||||
};
|
||||
|
||||
static char *batadv_uev_type_str[] = {
|
||||
"gw",
|
||||
"bla",
|
||||
};
|
||||
|
||||
/* Use this, if you have customized show and store functions for vlan attrs */
|
||||
#define BATADV_ATTR_VLAN(_name, _mode, _show, _store) \
|
||||
struct batadv_attribute batadv_attr_vlan_##_name = { \
|
||||
@ -157,6 +141,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||
struct batadv_priv *bat_priv = netdev_priv(net_dev); \
|
||||
ssize_t length; \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
length = __batadv_store_bool_attr(buff, count, _post_func, attr,\
|
||||
&bat_priv->_name, net_dev); \
|
||||
\
|
||||
@ -171,6 +156,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||
{ \
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
return sprintf(buff, "%s\n", \
|
||||
atomic_read(&bat_priv->_name) == 0 ? \
|
||||
"disabled" : "enabled"); \
|
||||
@ -194,6 +180,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||
struct batadv_priv *bat_priv = netdev_priv(net_dev); \
|
||||
ssize_t length; \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
length = __batadv_store_uint_attr(buff, count, _min, _max, \
|
||||
_post_func, attr, \
|
||||
&bat_priv->_var, net_dev, \
|
||||
@ -210,6 +197,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||
{ \
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
return sprintf(buff, "%i\n", atomic_read(&bat_priv->_var)); \
|
||||
} \
|
||||
|
||||
@ -234,6 +222,7 @@ ssize_t batadv_store_vlan_##_name(struct kobject *kobj, \
|
||||
attr, &vlan->_name, \
|
||||
bat_priv->soft_iface); \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
if (vlan->vid) \
|
||||
batadv_netlink_notify_vlan(bat_priv, vlan); \
|
||||
else \
|
||||
@ -254,6 +243,7 @@ ssize_t batadv_show_vlan_##_name(struct kobject *kobj, \
|
||||
atomic_read(&vlan->_name) == 0 ? \
|
||||
"disabled" : "enabled"); \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
batadv_softif_vlan_put(vlan); \
|
||||
return res; \
|
||||
}
|
||||
@ -275,6 +265,7 @@ ssize_t batadv_store_##_name(struct kobject *kobj, \
|
||||
struct batadv_priv *bat_priv; \
|
||||
ssize_t length; \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev); \
|
||||
if (!hard_iface) \
|
||||
return 0; \
|
||||
@ -302,6 +293,7 @@ ssize_t batadv_show_##_name(struct kobject *kobj, \
|
||||
struct batadv_hard_iface *hard_iface; \
|
||||
ssize_t length; \
|
||||
\
|
||||
batadv_sysfs_deprecated(attr); \
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev); \
|
||||
if (!hard_iface) \
|
||||
return 0; \
|
||||
@ -446,6 +438,7 @@ static ssize_t batadv_show_bat_algo(struct kobject *kobj,
|
||||
{
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
return sprintf(buff, "%s\n", bat_priv->algo_ops->name);
|
||||
}
|
||||
|
||||
@ -462,6 +455,8 @@ static ssize_t batadv_show_gw_mode(struct kobject *kobj, struct attribute *attr,
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
int bytes_written;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
/* GW mode is not available if the routing algorithm in use does not
|
||||
* implement the GW API
|
||||
*/
|
||||
@ -496,6 +491,8 @@ static ssize_t batadv_store_gw_mode(struct kobject *kobj,
|
||||
char *curr_gw_mode_str;
|
||||
int gw_mode_tmp = -1;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
/* toggling GW mode is allowed only if the routing algorithm in use
|
||||
* provides the GW API
|
||||
*/
|
||||
@ -570,6 +567,8 @@ static ssize_t batadv_show_gw_sel_class(struct kobject *kobj,
|
||||
{
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
/* GW selection class is not available if the routing algorithm in use
|
||||
* does not implement the GW API
|
||||
*/
|
||||
@ -590,6 +589,8 @@ static ssize_t batadv_store_gw_sel_class(struct kobject *kobj,
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
ssize_t length;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
/* setting the GW selection class is allowed only if the routing
|
||||
* algorithm in use implements the GW API
|
||||
*/
|
||||
@ -620,6 +621,8 @@ static ssize_t batadv_show_gw_bwidth(struct kobject *kobj,
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
u32 down, up;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
down = atomic_read(&bat_priv->gw.bandwidth_down);
|
||||
up = atomic_read(&bat_priv->gw.bandwidth_up);
|
||||
|
||||
@ -635,6 +638,8 @@ static ssize_t batadv_store_gw_bwidth(struct kobject *kobj,
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||
ssize_t length;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
if (buff[count - 1] == '\n')
|
||||
buff[count - 1] = '\0';
|
||||
|
||||
@ -659,6 +664,7 @@ static ssize_t batadv_show_isolation_mark(struct kobject *kobj,
|
||||
{
|
||||
struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj);
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
return sprintf(buff, "%#.8x/%#.8x\n", bat_priv->isolation_mark,
|
||||
bat_priv->isolation_mark_mask);
|
||||
}
|
||||
@ -682,6 +688,8 @@ static ssize_t batadv_store_isolation_mark(struct kobject *kobj,
|
||||
u32 mark, mask;
|
||||
char *mask_ptr;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
/* parse the mask if it has been specified, otherwise assume the mask is
|
||||
* the biggest possible
|
||||
*/
|
||||
@ -937,6 +945,8 @@ static ssize_t batadv_show_mesh_iface(struct kobject *kobj,
|
||||
ssize_t length;
|
||||
const char *ifname;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||
if (!hard_iface)
|
||||
return 0;
|
||||
@ -1041,6 +1051,8 @@ static ssize_t batadv_store_mesh_iface(struct kobject *kobj,
|
||||
struct net_device *net_dev = batadv_kobj_to_netdev(kobj);
|
||||
struct batadv_store_mesh_work *store_work;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
if (buff[count - 1] == '\n')
|
||||
buff[count - 1] = '\0';
|
||||
|
||||
@ -1072,6 +1084,8 @@ static ssize_t batadv_show_iface_status(struct kobject *kobj,
|
||||
struct batadv_hard_iface *hard_iface;
|
||||
ssize_t length;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||
if (!hard_iface)
|
||||
return 0;
|
||||
@ -1123,6 +1137,8 @@ static ssize_t batadv_store_throughput_override(struct kobject *kobj,
|
||||
u32 old_tp_override;
|
||||
bool ret;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||
if (!hard_iface)
|
||||
return -EINVAL;
|
||||
@ -1162,6 +1178,8 @@ static ssize_t batadv_show_throughput_override(struct kobject *kobj,
|
||||
struct batadv_hard_iface *hard_iface;
|
||||
u32 tp_override;
|
||||
|
||||
batadv_sysfs_deprecated(attr);
|
||||
|
||||
hard_iface = batadv_hardif_get_by_netdev(net_dev);
|
||||
if (!hard_iface)
|
||||
return -EINVAL;
|
||||
@ -1247,57 +1265,3 @@ void batadv_sysfs_del_hardif(struct kobject **hardif_obj)
|
||||
kobject_put(*hardif_obj);
|
||||
*hardif_obj = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_throw_uevent() - Send an uevent with batman-adv specific env data
|
||||
* @bat_priv: the bat priv with all the soft interface information
|
||||
* @type: subsystem type of event. Stored in uevent's BATTYPE
|
||||
* @action: action type of event. Stored in uevent's BATACTION
|
||||
* @data: string with additional information to the event (ignored for
|
||||
* BATADV_UEV_DEL). Stored in uevent's BATDATA
|
||||
*
|
||||
* Return: 0 on success or negative error number in case of failure
|
||||
*/
|
||||
int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
|
||||
enum batadv_uev_action action, const char *data)
|
||||
{
|
||||
int ret = -ENOMEM;
|
||||
struct kobject *bat_kobj;
|
||||
char *uevent_env[4] = { NULL, NULL, NULL, NULL };
|
||||
|
||||
bat_kobj = &bat_priv->soft_iface->dev.kobj;
|
||||
|
||||
uevent_env[0] = kasprintf(GFP_ATOMIC,
|
||||
"%s%s", BATADV_UEV_TYPE_VAR,
|
||||
batadv_uev_type_str[type]);
|
||||
if (!uevent_env[0])
|
||||
goto out;
|
||||
|
||||
uevent_env[1] = kasprintf(GFP_ATOMIC,
|
||||
"%s%s", BATADV_UEV_ACTION_VAR,
|
||||
batadv_uev_action_str[action]);
|
||||
if (!uevent_env[1])
|
||||
goto out;
|
||||
|
||||
/* If the event is DEL, ignore the data field */
|
||||
if (action != BATADV_UEV_DEL) {
|
||||
uevent_env[2] = kasprintf(GFP_ATOMIC,
|
||||
"%s%s", BATADV_UEV_DATA_VAR, data);
|
||||
if (!uevent_env[2])
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = kobject_uevent_env(bat_kobj, KOBJ_CHANGE, uevent_env);
|
||||
out:
|
||||
kfree(uevent_env[0]);
|
||||
kfree(uevent_env[1]);
|
||||
kfree(uevent_env[2]);
|
||||
|
||||
if (ret)
|
||||
batadv_dbg(BATADV_DBG_BATMAN, bat_priv,
|
||||
"Impossible to send uevent for (%s,%s,%s) event (err: %d)\n",
|
||||
batadv_uev_type_str[type],
|
||||
batadv_uev_action_str[action],
|
||||
(action == BATADV_UEV_DEL ? "NULL" : data), ret);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_SYSFS_H_
|
||||
@ -57,6 +45,8 @@ struct batadv_attribute {
|
||||
char *buf, size_t count);
|
||||
};
|
||||
|
||||
#ifdef CONFIG_BATMAN_ADV_SYSFS
|
||||
|
||||
int batadv_sysfs_add_meshif(struct net_device *dev);
|
||||
void batadv_sysfs_del_meshif(struct net_device *dev);
|
||||
int batadv_sysfs_add_hardif(struct kobject **hardif_obj,
|
||||
@ -66,7 +56,39 @@ int batadv_sysfs_add_vlan(struct net_device *dev,
|
||||
struct batadv_softif_vlan *vlan);
|
||||
void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv,
|
||||
struct batadv_softif_vlan *vlan);
|
||||
int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type,
|
||||
enum batadv_uev_action action, const char *data);
|
||||
|
||||
#else
|
||||
|
||||
static inline int batadv_sysfs_add_meshif(struct net_device *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void batadv_sysfs_del_meshif(struct net_device *dev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int batadv_sysfs_add_hardif(struct kobject **hardif_obj,
|
||||
struct net_device *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void batadv_sysfs_del_hardif(struct kobject **hardif_obj)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int batadv_sysfs_add_vlan(struct net_device *dev,
|
||||
struct batadv_softif_vlan *vlan)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv,
|
||||
struct batadv_softif_vlan *vlan)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _NET_BATMAN_ADV_SYSFS_H_ */
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2012-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Edo Monticelli, Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "tp_meter.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2012-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Edo Monticelli, Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_TP_METER_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Sven Eckelmann
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2010-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Sven Eckelmann
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if !defined(_NET_BATMAN_ADV_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "translation-table.h"
|
||||
@ -205,7 +193,7 @@ batadv_tt_local_hash_find(struct batadv_priv *bat_priv, const u8 *addr,
|
||||
* Return: a pointer to the corresponding tt_global_entry struct if the client
|
||||
* is found, NULL otherwise.
|
||||
*/
|
||||
static struct batadv_tt_global_entry *
|
||||
struct batadv_tt_global_entry *
|
||||
batadv_tt_global_hash_find(struct batadv_priv *bat_priv, const u8 *addr,
|
||||
unsigned short vid)
|
||||
{
|
||||
@ -300,8 +288,7 @@ static void batadv_tt_global_entry_release(struct kref *ref)
|
||||
* possibly release it
|
||||
* @tt_global_entry: tt_global_entry to be free'd
|
||||
*/
|
||||
static void
|
||||
batadv_tt_global_entry_put(struct batadv_tt_global_entry *tt_global_entry)
|
||||
void batadv_tt_global_entry_put(struct batadv_tt_global_entry *tt_global_entry)
|
||||
{
|
||||
kref_put(&tt_global_entry->common.refcount,
|
||||
batadv_tt_global_entry_release);
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich, Antonio Quartulli
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_TRANSLATION_TABLE_H_
|
||||
@ -41,6 +29,10 @@ int batadv_tt_global_dump(struct sk_buff *msg, struct netlink_callback *cb);
|
||||
void batadv_tt_global_del_orig(struct batadv_priv *bat_priv,
|
||||
struct batadv_orig_node *orig_node,
|
||||
s32 match_vid, const char *message);
|
||||
struct batadv_tt_global_entry *
|
||||
batadv_tt_global_hash_find(struct batadv_priv *bat_priv, const u8 *addr,
|
||||
unsigned short vid);
|
||||
void batadv_tt_global_entry_put(struct batadv_tt_global_entry *tt_global_entry);
|
||||
int batadv_tt_global_hash_count(struct batadv_priv *bat_priv,
|
||||
const u8 *addr, unsigned short vid);
|
||||
struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv,
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_TVLV_H_
|
||||
|
@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _NET_BATMAN_ADV_TYPES_H_
|
||||
@ -1565,6 +1553,12 @@ struct batadv_priv {
|
||||
* node's sender/originating side
|
||||
*/
|
||||
atomic_t multicast_mode;
|
||||
|
||||
/**
|
||||
* @multicast_fanout: Maximum number of packet copies to generate for a
|
||||
* multicast-to-unicast conversion
|
||||
*/
|
||||
atomic_t multicast_fanout;
|
||||
#endif
|
||||
|
||||
/** @orig_interval: OGM broadcast interval in milliseconds */
|
||||
|
Loading…
x
Reference in New Issue
Block a user