1*94433355SSven Eckelmann /* SPDX-License-Identifier: GPL-2.0 */ 2*94433355SSven Eckelmann /* Copyright (C) B.A.T.M.A.N. contributors: 3*94433355SSven Eckelmann * 4*94433355SSven Eckelmann * Marek Lindner 5*94433355SSven Eckelmann */ 6*94433355SSven Eckelmann 7*94433355SSven Eckelmann #ifndef _NET_BATMAN_ADV_MESH_INTERFACE_H_ 8*94433355SSven Eckelmann #define _NET_BATMAN_ADV_MESH_INTERFACE_H_ 9*94433355SSven Eckelmann 10*94433355SSven Eckelmann #include "main.h" 11*94433355SSven Eckelmann 12*94433355SSven Eckelmann #include <linux/kref.h> 13*94433355SSven Eckelmann #include <linux/netdevice.h> 14*94433355SSven Eckelmann #include <linux/skbuff.h> 15*94433355SSven Eckelmann #include <linux/types.h> 16*94433355SSven Eckelmann #include <net/rtnetlink.h> 17*94433355SSven Eckelmann 18*94433355SSven Eckelmann int batadv_skb_head_push(struct sk_buff *skb, unsigned int len); 19*94433355SSven Eckelmann void batadv_interface_rx(struct net_device *mesh_iface, 20*94433355SSven Eckelmann struct sk_buff *skb, int hdr_size, 21*94433355SSven Eckelmann struct batadv_orig_node *orig_node); 22*94433355SSven Eckelmann bool batadv_meshif_is_valid(const struct net_device *net_dev); 23*94433355SSven Eckelmann extern struct rtnl_link_ops batadv_link_ops; 24*94433355SSven Eckelmann int batadv_meshif_create_vlan(struct batadv_priv *bat_priv, unsigned short vid); 25*94433355SSven Eckelmann void batadv_meshif_vlan_release(struct kref *ref); 26*94433355SSven Eckelmann struct batadv_meshif_vlan *batadv_meshif_vlan_get(struct batadv_priv *bat_priv, 27*94433355SSven Eckelmann unsigned short vid); 28*94433355SSven Eckelmann 29*94433355SSven Eckelmann /** 30*94433355SSven Eckelmann * batadv_meshif_vlan_put() - decrease the vlan object refcounter and 31*94433355SSven Eckelmann * possibly release it 32*94433355SSven Eckelmann * @vlan: the vlan object to release 33*94433355SSven Eckelmann */ batadv_meshif_vlan_put(struct batadv_meshif_vlan * vlan)34*94433355SSven Eckelmannstatic inline void batadv_meshif_vlan_put(struct batadv_meshif_vlan *vlan) 35*94433355SSven Eckelmann { 36*94433355SSven Eckelmann if (!vlan) 37*94433355SSven Eckelmann return; 38*94433355SSven Eckelmann 39*94433355SSven Eckelmann kref_put(&vlan->refcount, batadv_meshif_vlan_release); 40*94433355SSven Eckelmann } 41*94433355SSven Eckelmann 42*94433355SSven Eckelmann #endif /* _NET_BATMAN_ADV_MESH_INTERFACE_H_ */ 43