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"
38 struct qosify_map_data
{
39 enum qosify_map_id id
;
58 struct qosify_map_entry
{
63 struct qosify_map_data data
;
67 extern int qosify_map_timeout
;
68 extern int qosify_active_timeout
;
69 extern struct qosify_config config
;
70 extern struct qosify_flow_config flow_config
;
72 int qosify_loader_init(void);
74 int qosify_map_init(void);
75 int qosify_map_dscp_value(const char *val
, uint8_t *dscp
);
76 int qosify_map_load_file(const char *file
);
77 int qosify_map_set_entry(enum qosify_map_id id
, bool file
, const char *str
,
79 void qosify_map_reload(void);
80 void qosify_map_clear_files(void);
81 void qosify_map_gc(void);
82 void qosify_map_dump(struct blob_buf
*b
);
83 void qosify_map_set_dscp_default(enum qosify_map_id id
, uint8_t val
);
84 void qosify_map_reset_config(void);
85 void qosify_map_update_config(void);
86 void qosify_map_set_classes(struct blob_attr
*val
);
87 int qosify_map_add_dns_host(char *host
, const char *addr
, const char *type
, int ttl
);
88 int map_parse_flow_config(struct qosify_flow_config
*cfg
, struct blob_attr
*attr
,
90 int map_fill_dscp_value(uint8_t *dest
, struct blob_attr
*attr
, bool reset
);
92 int qosify_iface_init(void);
93 void qosify_iface_config_update(struct blob_attr
*ifaces
, struct blob_attr
*devs
);
94 void qosify_iface_check(void);
95 void qosify_iface_status(struct blob_buf
*b
);
96 void qosify_iface_stop(void);
98 int qosify_ubus_init(void);
99 void qosify_ubus_stop(void);
100 int qosify_ubus_check_interface(const char *name
, char *ifname
, int ifname_len
);