1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2021 Felix Fietkau <nbd@nbd.name>
5 #ifndef __QOS_CLASSIFY_H
6 #define __QOS_CLASSIFY_H
11 #include <bpf/libbpf.h>
13 #include "qosify-bpf.h"
15 #include <libubox/utils.h>
16 #include <libubox/avl.h>
17 #include <libubox/blobmsg.h>
18 #include <libubox/ulog.h>
20 #include <netinet/in.h>
22 #define CLASSIFY_PROG_PATH "/lib/bpf/qosify-bpf.o"
23 #define CLASSIFY_PIN_PATH "/sys/fs/bpf/qosify"
24 #define CLASSIFY_DATA_PATH "/sys/fs/bpf/qosify_data"
35 struct qosify_map_data
{
36 enum qosify_map_id id
;
51 struct qosify_map_entry
{
56 struct qosify_map_data data
;
60 extern int qosify_map_timeout
;
61 extern struct qosify_config config
;
63 int qosify_loader_init(bool force_init
);
65 int qosify_map_init(void);
66 int qosify_map_dscp_value(const char *val
);
67 int qosify_map_load_file(const char *file
);
68 int qosify_map_set_entry(enum qosify_map_id id
, bool file
, const char *str
, uint8_t dscp
);
69 void qosify_map_reload(void);
70 void qosify_map_clear_files(void);
71 void qosify_map_gc(void);
72 void qosify_map_dump(struct blob_buf
*b
);
73 void qosify_map_set_dscp_default(enum qosify_map_id id
, uint8_t val
);
74 void qosify_map_reset_config(void);
75 void qosify_map_update_config(void);
77 int qosify_iface_init(void);
78 void qosify_iface_config_update(struct blob_attr
*ifaces
, struct blob_attr
*devs
);
79 void qosify_iface_check(void);
80 void qosify_iface_status(struct blob_buf
*b
);
81 void qosify_iface_stop(void);
83 int qosify_ubus_init(void);
84 void qosify_ubus_stop(void);
85 int qosify_ubus_check_interface(const char *name
, char *ifname
, int ifname_len
);