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