17db7d9f3SSven Eckelmann /* SPDX-License-Identifier: GPL-2.0 */ 2cfa55c6dSSven Eckelmann /* Copyright (C) B.A.T.M.A.N. contributors: 3c6c8fea2SSven Eckelmann * 4c6c8fea2SSven Eckelmann * Marek Lindner 5c6c8fea2SSven Eckelmann */ 6c6c8fea2SSven Eckelmann 7c6c8fea2SSven Eckelmann #ifndef _NET_BATMAN_ADV_SOFT_INTERFACE_H_ 8c6c8fea2SSven Eckelmann #define _NET_BATMAN_ADV_SOFT_INTERFACE_H_ 9c6c8fea2SSven Eckelmann 101e2c2a4fSSven Eckelmann #include "main.h" 111e2c2a4fSSven Eckelmann 12*6340dcbdSSven Eckelmann #include <linux/kref.h> 1368a600deSSven Eckelmann #include <linux/netdevice.h> 1468a600deSSven Eckelmann #include <linux/skbuff.h> 154b426b10SSven Eckelmann #include <linux/types.h> 161e2c2a4fSSven Eckelmann #include <net/rtnetlink.h> 171e2c2a4fSSven Eckelmann 1804b482a2SSven Eckelmann int batadv_skb_head_push(struct sk_buff *skb, unsigned int len); 1937135173SAntonio Quartulli void batadv_interface_rx(struct net_device *soft_iface, 206535db56SSven Eckelmann struct sk_buff *skb, int hdr_size, 216535db56SSven Eckelmann struct batadv_orig_node *orig_node); 224b426b10SSven Eckelmann bool batadv_softif_is_valid(const struct net_device *net_dev); 23a4ac28c0SSven Eckelmann extern struct rtnl_link_ops batadv_link_ops; 245d2c05b2SAntonio Quartulli int batadv_softif_create_vlan(struct batadv_priv *bat_priv, unsigned short vid); 25*6340dcbdSSven Eckelmann void batadv_softif_vlan_release(struct kref *ref); 2690f4435dSAntonio Quartulli struct batadv_softif_vlan *batadv_softif_vlan_get(struct batadv_priv *bat_priv, 2790f4435dSAntonio Quartulli unsigned short vid); 28c6c8fea2SSven Eckelmann 29*6340dcbdSSven Eckelmann /** 30*6340dcbdSSven Eckelmann * batadv_softif_vlan_put() - decrease the vlan object refcounter and 31*6340dcbdSSven Eckelmann * possibly release it 32*6340dcbdSSven Eckelmann * @vlan: the vlan object to release 33*6340dcbdSSven Eckelmann */ batadv_softif_vlan_put(struct batadv_softif_vlan * vlan)34*6340dcbdSSven Eckelmannstatic inline void batadv_softif_vlan_put(struct batadv_softif_vlan *vlan) 35*6340dcbdSSven Eckelmann { 36*6340dcbdSSven Eckelmann if (!vlan) 37*6340dcbdSSven Eckelmann return; 38*6340dcbdSSven Eckelmann 39*6340dcbdSSven Eckelmann kref_put(&vlan->refcount, batadv_softif_vlan_release); 40*6340dcbdSSven Eckelmann } 41*6340dcbdSSven Eckelmann 42c6c8fea2SSven Eckelmann #endif /* _NET_BATMAN_ADV_SOFT_INTERFACE_H_ */ 43