12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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
- }
|