forked from github/multus-cni
gomodule is still in progress to migrate for now, hence multus team decide to keep vendor directory to support build without gomodule.
79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package netlink
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type Class interface {
|
|
Attrs() *ClassAttrs
|
|
Type() string
|
|
}
|
|
|
|
// ClassAttrs represents a netlink class. A filter is associated with a link,
|
|
// has a handle and a parent. The root filter of a device should have a
|
|
// parent == HANDLE_ROOT.
|
|
type ClassAttrs struct {
|
|
LinkIndex int
|
|
Handle uint32
|
|
Parent uint32
|
|
Leaf uint32
|
|
}
|
|
|
|
func (q ClassAttrs) String() string {
|
|
return fmt.Sprintf("{LinkIndex: %d, Handle: %s, Parent: %s, Leaf: %d}", q.LinkIndex, HandleStr(q.Handle), HandleStr(q.Parent), q.Leaf)
|
|
}
|
|
|
|
type HtbClassAttrs struct {
|
|
// TODO handle all attributes
|
|
Rate uint64
|
|
Ceil uint64
|
|
Buffer uint32
|
|
Cbuffer uint32
|
|
Quantum uint32
|
|
Level uint32
|
|
Prio uint32
|
|
}
|
|
|
|
func (q HtbClassAttrs) String() string {
|
|
return fmt.Sprintf("{Rate: %d, Ceil: %d, Buffer: %d, Cbuffer: %d}", q.Rate, q.Ceil, q.Buffer, q.Cbuffer)
|
|
}
|
|
|
|
// HtbClass represents an Htb class
|
|
type HtbClass struct {
|
|
ClassAttrs
|
|
Rate uint64
|
|
Ceil uint64
|
|
Buffer uint32
|
|
Cbuffer uint32
|
|
Quantum uint32
|
|
Level uint32
|
|
Prio uint32
|
|
}
|
|
|
|
func (q HtbClass) String() string {
|
|
return fmt.Sprintf("{Rate: %d, Ceil: %d, Buffer: %d, Cbuffer: %d}", q.Rate, q.Ceil, q.Buffer, q.Cbuffer)
|
|
}
|
|
|
|
func (q *HtbClass) Attrs() *ClassAttrs {
|
|
return &q.ClassAttrs
|
|
}
|
|
|
|
func (q *HtbClass) Type() string {
|
|
return "htb"
|
|
}
|
|
|
|
// GenericClass classes represent types that are not currently understood
|
|
// by this netlink library.
|
|
type GenericClass struct {
|
|
ClassAttrs
|
|
ClassType string
|
|
}
|
|
|
|
func (class *GenericClass) Attrs() *ClassAttrs {
|
|
return &class.ClassAttrs
|
|
}
|
|
|
|
func (class *GenericClass) Type() string {
|
|
return class.ClassType
|
|
}
|