fea: support rate limit.

This commit is contained in:
Daniel Ding
2024-09-06 22:54:46 +08:00
parent 8377782339
commit a0f3e13c9e
8 changed files with 162 additions and 23 deletions

View File

@@ -2,6 +2,7 @@ package cswitch
import (
"encoding/json"
"fmt"
"os"
"strings"
"sync"
@@ -599,3 +600,21 @@ func (v *Switch) Reload() {
func (v *Switch) Save() {
v.cfg.Save()
}
func (v *Switch) AddRate(device string, mbit int) {
kbits := fmt.Sprintf("%dMbit", mbit)
burst := "64Kb"
latency := "400ms"
out, err := libol.Exec("tc", "qdisc", "add", "dev", device, "root", "tbf", "rate", kbits, "burst", burst, "latency", latency)
if err != nil {
v.out.Warn("Switch.AddRate: %s %d %s", device, mbit, out)
}
}
func (v *Switch) DelRate(device string) {
out, err := libol.Exec("tc", "qdisc", "del", "dev", device, "root")
if err != nil {
v.out.Warn("Switch.AddRate: %s %s", device, out)
}
}