batman-adv: Distributed ARP Table - add snooping functions for ARP messages
[deliverable/linux.git] / net / batman-adv / distributed-arp-table.h
CommitLineData
785ea114
AQ
1/* Copyright (C) 2011-2012 B.A.T.M.A.N. contributors:
2 *
3 * Antonio Quartulli
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 2 of the GNU General Public
7 * License as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 * 02110-1301, USA
18 */
19
20#ifndef _NET_BATMAN_ADV_ARP_H_
21#define _NET_BATMAN_ADV_ARP_H_
22
23#include "types.h"
24#include "originator.h"
25
5c3a0e55
AQ
26#include <linux/if_arp.h>
27
785ea114
AQ
28#define BATADV_DAT_ADDR_MAX ((batadv_dat_addr_t)~(batadv_dat_addr_t)0)
29
c384ea3e
AQ
30bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,
31 struct sk_buff *skb);
32bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,
33 struct sk_buff *skb, int hdr_size);
34void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv,
35 struct sk_buff *skb);
36bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
37 struct sk_buff *skb, int hdr_size);
38bool batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv,
39 struct batadv_forw_packet *forw_packet);
40
785ea114
AQ
41/**
42 * batadv_dat_init_orig_node_addr - assign a DAT address to the orig_node
43 * @orig_node: the node to assign the DAT address to
44 */
45static inline void
46batadv_dat_init_orig_node_addr(struct batadv_orig_node *orig_node)
47{
48 uint32_t addr;
49
50 addr = batadv_choose_orig(orig_node->orig, BATADV_DAT_ADDR_MAX);
51 orig_node->dat_addr = (batadv_dat_addr_t)addr;
52}
53
54/**
55 * batadv_dat_init_own_addr - assign a DAT address to the node itself
56 * @bat_priv: the bat priv with all the soft interface information
57 * @primary_if: a pointer to the primary interface
58 */
59static inline void
60batadv_dat_init_own_addr(struct batadv_priv *bat_priv,
61 struct batadv_hard_iface *primary_if)
62{
63 uint32_t addr;
64
65 addr = batadv_choose_orig(primary_if->net_dev->dev_addr,
66 BATADV_DAT_ADDR_MAX);
67
68 bat_priv->dat.addr = (batadv_dat_addr_t)addr;
69}
70
2f1dfbe1
AQ
71int batadv_dat_init(struct batadv_priv *bat_priv);
72void batadv_dat_free(struct batadv_priv *bat_priv);
73int batadv_dat_cache_seq_print_text(struct seq_file *seq, void *offset);
74
785ea114 75#endif /* _NET_BATMAN_ADV_ARP_H_ */
This page took 0.026784 seconds and 5 git commands to generate.