1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright (C) 2010-2020 B.A.T.M.A.N. contributors: 3 * 4 * Marek Lindner 5 */ 6 7#ifndef _NET_BATMAN_ADV_SYSFS_H_ 8#define _NET_BATMAN_ADV_SYSFS_H_ 9 10#include "main.h" 11 12#include <linux/kobject.h> 13#include <linux/netdevice.h> 14#include <linux/sysfs.h> 15#include <linux/types.h> 16 17#define BATADV_SYSFS_IF_MESH_SUBDIR "mesh" 18#define BATADV_SYSFS_IF_BAT_SUBDIR "batman_adv" 19/** 20 * BATADV_SYSFS_VLAN_SUBDIR_PREFIX - prefix of the subfolder that will be 21 * created in the sysfs hierarchy for each VLAN interface. The subfolder will 22 * be named "BATADV_SYSFS_VLAN_SUBDIR_PREFIX%vid". 23 */ 24#define BATADV_SYSFS_VLAN_SUBDIR_PREFIX "vlan" 25 26/** 27 * struct batadv_attribute - sysfs export helper for batman-adv attributes 28 */ 29struct batadv_attribute { 30 /** @attr: sysfs attribute file */ 31 struct attribute attr; 32 33 /** 34 * @show: function to export the current attribute's content to sysfs 35 */ 36 ssize_t (*show)(struct kobject *kobj, struct attribute *attr, 37 char *buf); 38 39 /** 40 * @store: function to load new value from character buffer and save it 41 * in batman-adv attribute 42 */ 43 ssize_t (*store)(struct kobject *kobj, struct attribute *attr, 44 char *buf, size_t count); 45}; 46 47#ifdef CONFIG_BATMAN_ADV_SYSFS 48 49int batadv_sysfs_add_meshif(struct net_device *dev); 50void batadv_sysfs_del_meshif(struct net_device *dev); 51int batadv_sysfs_add_hardif(struct kobject **hardif_obj, 52 struct net_device *dev); 53void batadv_sysfs_del_hardif(struct kobject **hardif_obj); 54int batadv_sysfs_add_vlan(struct net_device *dev, 55 struct batadv_softif_vlan *vlan); 56void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, 57 struct batadv_softif_vlan *vlan); 58 59#else 60 61static inline int batadv_sysfs_add_meshif(struct net_device *dev) 62{ 63 return 0; 64} 65 66static inline void batadv_sysfs_del_meshif(struct net_device *dev) 67{ 68} 69 70static inline int batadv_sysfs_add_hardif(struct kobject **hardif_obj, 71 struct net_device *dev) 72{ 73 return 0; 74} 75 76static inline void batadv_sysfs_del_hardif(struct kobject **hardif_obj) 77{ 78} 79 80static inline int batadv_sysfs_add_vlan(struct net_device *dev, 81 struct batadv_softif_vlan *vlan) 82{ 83 return 0; 84} 85 86static inline void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, 87 struct batadv_softif_vlan *vlan) 88{ 89} 90 91#endif 92 93#endif /* _NET_BATMAN_ADV_SYSFS_H_ */ 94