netifd: wireless: add support for tracking wifi-station sections
[oweals/netifd.git] / wireless.h
index 8d0a1f04e4232db8d24085f2651de5d82300ebbb..5fedd2056be768eb7c2dcc06078e79f21ee79c17 100644 (file)
@@ -30,7 +30,7 @@ struct wireless_driver {
        struct {
                char *buf;
                struct uci_blob_param_list *config;
-       } device, interface, vlan;
+       } device, interface, vlan, station;
 };
 
 struct wireless_device {
@@ -44,6 +44,7 @@ struct wireless_device {
        struct wireless_driver *drv;
        struct vlist_tree interfaces;
        struct vlist_tree vlans;
+       struct vlist_tree stations;
        char *name;
 
        struct netifd_process script_task;
@@ -72,6 +73,7 @@ struct wireless_device {
 
        int vif_idx;
        int vlan_idx;
+       int sta_idx;
 };
 
 struct wireless_interface {
@@ -106,6 +108,18 @@ struct wireless_vlan {
        bool isolate;
 };
 
+struct wireless_station {
+       struct vlist_node node;
+       const char *section;
+       char *name;
+
+       struct wireless_device *wdev;
+       char *vif;
+
+       struct blob_attr *config;
+       struct blob_attr *data;
+};
+
 struct wireless_process {
        struct list_head list;
 
@@ -123,6 +137,7 @@ void wireless_device_status(struct wireless_device *wdev, struct blob_buf *b);
 void wireless_device_get_validate(struct wireless_device *wdev, struct blob_buf *b);
 struct wireless_interface* wireless_interface_create(struct wireless_device *wdev, struct blob_attr *data, const char *section);
 void wireless_vlan_create(struct wireless_device *wdev, char *vif, struct blob_attr *data, const char *section);
+void wireless_station_create(struct wireless_device *wdev, char *vif, struct blob_attr *data, const char *section);
 int wireless_device_notify(struct wireless_device *wdev, struct blob_attr *data,
                           struct ubus_request_data *req);