cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

send.h (4380B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Copyright (C) B.A.T.M.A.N. contributors:
      3 *
      4 * Marek Lindner, Simon Wunderlich
      5 */
      6
      7#ifndef _NET_BATMAN_ADV_SEND_H_
      8#define _NET_BATMAN_ADV_SEND_H_
      9
     10#include "main.h"
     11
     12#include <linux/compiler.h>
     13#include <linux/skbuff.h>
     14#include <linux/spinlock.h>
     15#include <linux/types.h>
     16#include <uapi/linux/batadv_packet.h>
     17
     18void batadv_forw_packet_free(struct batadv_forw_packet *forw_packet,
     19			     bool dropped);
     20struct batadv_forw_packet *
     21batadv_forw_packet_alloc(struct batadv_hard_iface *if_incoming,
     22			 struct batadv_hard_iface *if_outgoing,
     23			 atomic_t *queue_left,
     24			 struct batadv_priv *bat_priv,
     25			 struct sk_buff *skb);
     26bool batadv_forw_packet_steal(struct batadv_forw_packet *packet, spinlock_t *l);
     27void batadv_forw_packet_ogmv1_queue(struct batadv_priv *bat_priv,
     28				    struct batadv_forw_packet *forw_packet,
     29				    unsigned long send_time);
     30bool batadv_forw_packet_is_rebroadcast(struct batadv_forw_packet *forw_packet);
     31
     32int batadv_send_skb_to_orig(struct sk_buff *skb,
     33			    struct batadv_orig_node *orig_node,
     34			    struct batadv_hard_iface *recv_if);
     35int batadv_send_skb_packet(struct sk_buff *skb,
     36			   struct batadv_hard_iface *hard_iface,
     37			   const u8 *dst_addr);
     38int batadv_send_broadcast_skb(struct sk_buff *skb,
     39			      struct batadv_hard_iface *hard_iface);
     40int batadv_send_unicast_skb(struct sk_buff *skb,
     41			    struct batadv_neigh_node *neigh_node);
     42int batadv_forw_bcast_packet(struct batadv_priv *bat_priv,
     43			     struct sk_buff *skb,
     44			     unsigned long delay,
     45			     bool own_packet);
     46void batadv_send_bcast_packet(struct batadv_priv *bat_priv,
     47			      struct sk_buff *skb,
     48			      unsigned long delay,
     49			      bool own_packet);
     50void
     51batadv_purge_outstanding_packets(struct batadv_priv *bat_priv,
     52				 const struct batadv_hard_iface *hard_iface);
     53bool batadv_send_skb_prepare_unicast_4addr(struct batadv_priv *bat_priv,
     54					   struct sk_buff *skb,
     55					   struct batadv_orig_node *orig_node,
     56					   int packet_subtype);
     57int batadv_send_skb_unicast(struct batadv_priv *bat_priv,
     58			    struct sk_buff *skb, int packet_type,
     59			    int packet_subtype,
     60			    struct batadv_orig_node *orig_node,
     61			    unsigned short vid);
     62int batadv_send_skb_via_tt_generic(struct batadv_priv *bat_priv,
     63				   struct sk_buff *skb, int packet_type,
     64				   int packet_subtype, u8 *dst_hint,
     65				   unsigned short vid);
     66int batadv_send_skb_via_gw(struct batadv_priv *bat_priv, struct sk_buff *skb,
     67			   unsigned short vid);
     68
     69/**
     70 * batadv_send_skb_via_tt() - send an skb via TT lookup
     71 * @bat_priv: the bat priv with all the soft interface information
     72 * @skb: the payload to send
     73 * @dst_hint: can be used to override the destination contained in the skb
     74 * @vid: the vid to be used to search the translation table
     75 *
     76 * Look up the recipient node for the destination address in the ethernet
     77 * header via the translation table. Wrap the given skb into a batman-adv
     78 * unicast header. Then send this frame to the according destination node.
     79 *
     80 * Return: NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise.
     81 */
     82static inline int batadv_send_skb_via_tt(struct batadv_priv *bat_priv,
     83					 struct sk_buff *skb, u8 *dst_hint,
     84					 unsigned short vid)
     85{
     86	return batadv_send_skb_via_tt_generic(bat_priv, skb, BATADV_UNICAST, 0,
     87					      dst_hint, vid);
     88}
     89
     90/**
     91 * batadv_send_skb_via_tt_4addr() - send an skb via TT lookup
     92 * @bat_priv: the bat priv with all the soft interface information
     93 * @skb: the payload to send
     94 * @packet_subtype: the unicast 4addr packet subtype to use
     95 * @dst_hint: can be used to override the destination contained in the skb
     96 * @vid: the vid to be used to search the translation table
     97 *
     98 * Look up the recipient node for the destination address in the ethernet
     99 * header via the translation table. Wrap the given skb into a batman-adv
    100 * unicast-4addr header. Then send this frame to the according destination
    101 * node.
    102 *
    103 * Return: NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise.
    104 */
    105static inline int batadv_send_skb_via_tt_4addr(struct batadv_priv *bat_priv,
    106					       struct sk_buff *skb,
    107					       int packet_subtype,
    108					       u8 *dst_hint,
    109					       unsigned short vid)
    110{
    111	return batadv_send_skb_via_tt_generic(bat_priv, skb,
    112					      BATADV_UNICAST_4ADDR,
    113					      packet_subtype, dst_hint, vid);
    114}
    115
    116#endif /* _NET_BATMAN_ADV_SEND_H_ */