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
12 #include <bpf/libbpf.h>
14 #include "qosify-bpf.h"
16 #include <libubox/utils.h>
17 #include <libubox/avl.h>
18 #include <libubox/blobmsg.h>
19 #include <libubox/ulog.h>
21 #include <netinet/in.h>
23 #define CLASSIFY_PROG_PATH "/lib/bpf/qosify-bpf.o"
24 #define CLASSIFY_PIN_PATH "/sys/fs/bpf/qosify"
25 #define CLASSIFY_DATA_PATH "/sys/fs/bpf/qosify_data"
37 struct qosify_map_data
{
38 enum qosify_map_id id
;
57 struct qosify_map_entry
{
62 struct qosify_map_data data
;
66 extern int qosify_map_timeout
;
67 extern int qosify_active_timeout
;
68 extern struct qosify_config config
;
70 int qosify_loader_init(void);
72 int qosify_map_init(void);
73 int qosify_map_dscp_value(const char *val
);
74 int qosify_map_load_file(const char *file
);
75 int qosify_map_set_entry(enum qosify_map_id id
, bool file
, const char *str
, uint8_t dscp
);
76 void qosify_map_reload(void);
77 void qosify_map_clear_files(void);
78 void qosify_map_gc(void);
79 void qosify_map_dump(struct blob_buf
*b
);
80 void qosify_map_set_dscp_default(enum qosify_map_id id
, uint8_t val
);
81 void qosify_map_reset_config(void);
82 void qosify_map_update_config(void);
83 int qosify_map_add_dns_host(char *host
, const char *addr
, const char *type
, int ttl
);
85 int qosify_iface_init(void);
86 void qosify_iface_config_update(struct blob_attr
*ifaces
, struct blob_attr
*devs
);
87 void qosify_iface_check(void);
88 void qosify_iface_status(struct blob_buf
*b
);
89 void qosify_iface_stop(void);
91 int qosify_ubus_init(void);
92 void qosify_ubus_stop(void);
93 int qosify_ubus_check_interface(const char *name
, char *ifname
, int ifname_len
);