mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-19 10:23:03 +00:00
Add new package which has scripts for ssid client ratelimiting. Adds rules for ssid ratelimiting and client ratimiting based on 'wireless' config file options 'drate'(ssid dl), 'urate'(ssid ul), 'cdrate'(client dl), and 'curate' (client ul). Signed-off-by: Chaitanya Kiran Godavarthi <chaitanya.kiran@connectus.ai>
74 lines
1.8 KiB
Bash
74 lines
1.8 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (C) 2018 rosysong@rosinson.com
|
|
#
|
|
|
|
. /lib/nft-qos/core.sh
|
|
|
|
qosdef_validate_static() {
|
|
uci_load_validate nft-qos default "$1" "$2" \
|
|
'limit_enable:bool:0' \
|
|
'limit_type:maxlength(8)' \
|
|
'static_unit_dl:string:kbytes' \
|
|
'static_unit_ul:string:kbytes' \
|
|
'static_rate_dl:uinteger:50' \
|
|
'static_rate_ul:uinteger:50'
|
|
}
|
|
|
|
# append rule for static qos
|
|
qosdef_append_rule_sta() { # <section> <operator> <default-unit> <default-rate>
|
|
local ipaddr unit rate
|
|
local operator=$2
|
|
|
|
config_get ipaddr $1 ipaddr
|
|
config_get unit $1 unit $3
|
|
config_get rate $1 rate $4
|
|
|
|
[ -z "$ipaddr" ] && return
|
|
|
|
qosdef_append_rule_ip_limit $ipaddr $operator $unit $rate
|
|
}
|
|
|
|
# append chain for static qos
|
|
qosdef_append_chain_sta() { # <hook> <name> <section> <unit> <rate>
|
|
local hook=$1 name=$2
|
|
local config=$3 operator
|
|
|
|
case "$name" in
|
|
download) operator="daddr";;
|
|
upload) operator="saddr";;
|
|
esac
|
|
|
|
qosdef_appendx "\tchain $name {\n"
|
|
qosdef_append_chain_def filter $hook 0 accept
|
|
qosdef_append_rule_limit_whitelist $name
|
|
config_foreach qosdef_append_rule_sta $config $operator $4 $5
|
|
qosdef_appendx "\t}\n"
|
|
}
|
|
|
|
qosdef_flush_static() {
|
|
qosdef_flush_table "$NFT_QOS_INET_FAMILY" nft-qos-static
|
|
}
|
|
|
|
# static limit rate init
|
|
qosdef_init_static() {
|
|
local hook_ul="prerouting" hook_dl="postrouting"
|
|
|
|
[ "$2" = 0 ] || {
|
|
logger -t nft-qos-static "validation failed"
|
|
return 1
|
|
}
|
|
|
|
[ $limit_enable -eq 0 -o \
|
|
$limit_type = "dynamic" -o $limit_type = "ssidrate" ] && return 1
|
|
|
|
[ -z "$NFT_QOS_HAS_BRIDGE" ] && {
|
|
hook_ul="postrouting"
|
|
hook_dl="prerouting"
|
|
}
|
|
qosdef_appendx "table $NFT_QOS_INET_FAMILY nft-qos-static {\n"
|
|
qosdef_append_chain_sta $hook_ul upload upload $static_unit_ul $static_rate_ul
|
|
qosdef_append_chain_sta $hook_dl download download $static_unit_dl $static_rate_dl
|
|
qosdef_appendx "}\n"
|
|
}
|