1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
package ip
import (
"fmt"
"github.com/vishvananda/netlink"
)
// QdiscHTB represents the hierarchy token bucket qdisc object.
type QdiscHTB struct {
Qdisc
Default uint32
}
// Add adds a htb qdisc to a device.
func (q *QdiscHTB) Add() error {
attrs, err := q.netlinkAttrs()
if err != nil {
return err
}
htb := netlink.NewHtb(attrs)
htb.Defcls = q.Default
err = netlink.QdiscAdd(htb)
if err != nil {
return fmt.Errorf("Failed to add qdisc htb %v: %w", htb, mapQdiscErr(err))
}
return nil
}
// Delete deletes a htb qdisc from a device.
func (q *QdiscHTB) Delete() error {
attrs, err := q.netlinkAttrs()
if err != nil {
return err
}
htb := netlink.NewHtb(attrs)
err = netlink.QdiscDel(htb)
if err != nil {
return fmt.Errorf("Failed to delete qdisc htb %v: %w", htb, mapQdiscErr(err))
}
return nil
}
|