summaryrefslogtreecommitdiff
path: root/vendor/github.com/vishvananda/netlink/qdisc.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/vishvananda/netlink/qdisc.go')
-rw-r--r--vendor/github.com/vishvananda/netlink/qdisc.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/vendor/github.com/vishvananda/netlink/qdisc.go b/vendor/github.com/vishvananda/netlink/qdisc.go
index 0ca86ebe8..3df4b5c29 100644
--- a/vendor/github.com/vishvananda/netlink/qdisc.go
+++ b/vendor/github.com/vishvananda/netlink/qdisc.go
@@ -230,3 +230,63 @@ func (qdisc *GenericQdisc) Attrs() *QdiscAttrs {
func (qdisc *GenericQdisc) Type() string {
return qdisc.QdiscType
}
+
+// Fq is a classless packet scheduler meant to be mostly used for locally generated traffic.
+type Fq struct {
+ QdiscAttrs
+ PacketLimit uint32
+ FlowPacketLimit uint32
+ // In bytes
+ Quantum uint32
+ InitialQuantum uint32
+ // called RateEnable under the hood
+ Pacing uint32
+ FlowDefaultRate uint32
+ FlowMaxRate uint32
+ // called BucketsLog under the hood
+ Buckets uint32
+ FlowRefillDelay uint32
+ LowRateThreshold uint32
+}
+
+func NewFq(attrs QdiscAttrs) *Fq {
+ return &Fq{
+ QdiscAttrs: attrs,
+ Pacing: 1,
+ }
+}
+
+func (qdisc *Fq) Attrs() *QdiscAttrs {
+ return &qdisc.QdiscAttrs
+}
+
+func (qdisc *Fq) Type() string {
+ return "fq"
+}
+
+// FQ_Codel (Fair Queuing Controlled Delay) is queuing discipline that combines Fair Queuing with the CoDel AQM scheme.
+type FqCodel struct {
+ QdiscAttrs
+ Target uint32
+ Limit uint32
+ Interval uint32
+ ECN uint32
+ Flows uint32
+ Quantum uint32
+ // There are some more attributes here, but support for them seems not ubiquitous
+}
+
+func NewFqCodel(attrs QdiscAttrs) *FqCodel {
+ return &FqCodel{
+ QdiscAttrs: attrs,
+ ECN: 1,
+ }
+}
+
+func (qdisc *FqCodel) Attrs() *QdiscAttrs {
+ return &qdisc.QdiscAttrs
+}
+
+func (qdisc *FqCodel) Type() string {
+ return "fq_codel"
+}