root/net/batman-adv/distributed-arp-table.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. batadv_dat_init_orig_node_addr
  2. batadv_dat_init_own_addr
  3. batadv_dat_inc_counter
  4. batadv_dat_status_update
  5. batadv_dat_snoop_outgoing_arp_request
  6. batadv_dat_snoop_incoming_arp_request
  7. batadv_dat_snoop_outgoing_arp_reply
  8. batadv_dat_snoop_incoming_arp_reply
  9. batadv_dat_snoop_outgoing_dhcp_ack
  10. batadv_dat_snoop_incoming_dhcp_ack
  11. batadv_dat_drop_broadcast_packet
  12. batadv_dat_init_orig_node_addr
  13. batadv_dat_init_own_addr
  14. batadv_arp_change_timeout
  15. batadv_dat_init
  16. batadv_dat_free
  17. batadv_dat_cache_dump
  18. batadv_dat_inc_counter

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* Copyright (C) 2011-2019  B.A.T.M.A.N. contributors:
   3  *
   4  * Antonio Quartulli
   5  */
   6 
   7 #ifndef _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
   8 #define _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_
   9 
  10 #include "main.h"
  11 
  12 #include <linux/compiler.h>
  13 #include <linux/netdevice.h>
  14 #include <linux/netlink.h>
  15 #include <linux/seq_file.h>
  16 #include <linux/skbuff.h>
  17 #include <linux/types.h>
  18 #include <uapi/linux/batadv_packet.h>
  19 
  20 #include "originator.h"
  21 
  22 #ifdef CONFIG_BATMAN_ADV_DAT
  23 
  24 /* BATADV_DAT_ADDR_MAX - maximum address value in the DHT space */
  25 #define BATADV_DAT_ADDR_MAX ((batadv_dat_addr_t)~(batadv_dat_addr_t)0)
  26 
  27 void batadv_dat_status_update(struct net_device *net_dev);
  28 bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,
  29                                            struct sk_buff *skb);
  30 bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,
  31                                            struct sk_buff *skb, int hdr_size);
  32 void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv,
  33                                          struct sk_buff *skb);
  34 bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
  35                                          struct sk_buff *skb, int hdr_size);
  36 void batadv_dat_snoop_outgoing_dhcp_ack(struct batadv_priv *bat_priv,
  37                                         struct sk_buff *skb,
  38                                         __be16 proto,
  39                                         unsigned short vid);
  40 void batadv_dat_snoop_incoming_dhcp_ack(struct batadv_priv *bat_priv,
  41                                         struct sk_buff *skb, int hdr_size);
  42 bool batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv,
  43                                       struct batadv_forw_packet *forw_packet);
  44 
  45 /**
  46  * batadv_dat_init_orig_node_addr() - assign a DAT address to the orig_node
  47  * @orig_node: the node to assign the DAT address to
  48  */
  49 static inline void
  50 batadv_dat_init_orig_node_addr(struct batadv_orig_node *orig_node)
  51 {
  52         u32 addr;
  53 
  54         addr = batadv_choose_orig(orig_node->orig, BATADV_DAT_ADDR_MAX);
  55         orig_node->dat_addr = (batadv_dat_addr_t)addr;
  56 }
  57 
  58 /**
  59  * batadv_dat_init_own_addr() - assign a DAT address to the node itself
  60  * @bat_priv: the bat priv with all the soft interface information
  61  * @primary_if: a pointer to the primary interface
  62  */
  63 static inline void
  64 batadv_dat_init_own_addr(struct batadv_priv *bat_priv,
  65                          struct batadv_hard_iface *primary_if)
  66 {
  67         u32 addr;
  68 
  69         addr = batadv_choose_orig(primary_if->net_dev->dev_addr,
  70                                   BATADV_DAT_ADDR_MAX);
  71 
  72         bat_priv->dat.addr = (batadv_dat_addr_t)addr;
  73 }
  74 
  75 int batadv_dat_init(struct batadv_priv *bat_priv);
  76 void batadv_dat_free(struct batadv_priv *bat_priv);
  77 int batadv_dat_cache_seq_print_text(struct seq_file *seq, void *offset);
  78 int batadv_dat_cache_dump(struct sk_buff *msg, struct netlink_callback *cb);
  79 
  80 /**
  81  * batadv_dat_inc_counter() - increment the correct DAT packet counter
  82  * @bat_priv: the bat priv with all the soft interface information
  83  * @subtype: the 4addr subtype of the packet to be counted
  84  *
  85  * Updates the ethtool statistics for the received packet if it is a DAT subtype
  86  */
  87 static inline void batadv_dat_inc_counter(struct batadv_priv *bat_priv,
  88                                           u8 subtype)
  89 {
  90         switch (subtype) {
  91         case BATADV_P_DAT_DHT_GET:
  92                 batadv_inc_counter(bat_priv,
  93                                    BATADV_CNT_DAT_GET_RX);
  94                 break;
  95         case BATADV_P_DAT_DHT_PUT:
  96                 batadv_inc_counter(bat_priv,
  97                                    BATADV_CNT_DAT_PUT_RX);
  98                 break;
  99         }
 100 }
 101 
 102 #else
 103 
 104 static inline void batadv_dat_status_update(struct net_device *net_dev)
 105 {
 106 }
 107 
 108 static inline bool
 109 batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv,
 110                                       struct sk_buff *skb)
 111 {
 112         return false;
 113 }
 114 
 115 static inline bool
 116 batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,
 117                                       struct sk_buff *skb, int hdr_size)
 118 {
 119         return false;
 120 }
 121 
 122 static inline bool
 123 batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv,
 124                                     struct sk_buff *skb)
 125 {
 126         return false;
 127 }
 128 
 129 static inline bool
 130 batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv,
 131                                     struct sk_buff *skb, int hdr_size)
 132 {
 133         return false;
 134 }
 135 
 136 static inline void
 137 batadv_dat_snoop_outgoing_dhcp_ack(struct batadv_priv *bat_priv,
 138                                    struct sk_buff *skb, __be16 proto,
 139                                    unsigned short vid)
 140 {
 141 }
 142 
 143 static inline void
 144 batadv_dat_snoop_incoming_dhcp_ack(struct batadv_priv *bat_priv,
 145                                    struct sk_buff *skb, int hdr_size)
 146 {
 147 }
 148 
 149 static inline bool
 150 batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv,
 151                                  struct batadv_forw_packet *forw_packet)
 152 {
 153         return false;
 154 }
 155 
 156 static inline void
 157 batadv_dat_init_orig_node_addr(struct batadv_orig_node *orig_node)
 158 {
 159 }
 160 
 161 static inline void batadv_dat_init_own_addr(struct batadv_priv *bat_priv,
 162                                             struct batadv_hard_iface *iface)
 163 {
 164 }
 165 
 166 static inline void batadv_arp_change_timeout(struct net_device *soft_iface,
 167                                              const char *name)
 168 {
 169 }
 170 
 171 static inline int batadv_dat_init(struct batadv_priv *bat_priv)
 172 {
 173         return 0;
 174 }
 175 
 176 static inline void batadv_dat_free(struct batadv_priv *bat_priv)
 177 {
 178 }
 179 
 180 static inline int
 181 batadv_dat_cache_dump(struct sk_buff *msg, struct netlink_callback *cb)
 182 {
 183         return -EOPNOTSUPP;
 184 }
 185 
 186 static inline void batadv_dat_inc_counter(struct batadv_priv *bat_priv,
 187                                           u8 subtype)
 188 {
 189 }
 190 
 191 #endif /* CONFIG_BATMAN_ADV_DAT */
 192 
 193 #endif /* _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_ */

/* [<][>][^][v][top][bottom][index][help] */