2015-02-10 18:26:29 +00:00
|
|
|
package netlink
|
|
|
|
|
|
|
|
import (
|
2015-02-07 02:58:24 +00:00
|
|
|
"strings"
|
2015-02-10 18:26:29 +00:00
|
|
|
)
|
|
|
|
|
2015-02-07 02:58:24 +00:00
|
|
|
// Protinfo represents bridge flags from netlink.
|
2015-02-10 18:26:29 +00:00
|
|
|
type Protinfo struct {
|
2023-07-14 15:00:46 +00:00
|
|
|
Hairpin bool
|
|
|
|
Guard bool
|
|
|
|
FastLeave bool
|
|
|
|
RootBlock bool
|
|
|
|
Learning bool
|
|
|
|
Flood bool
|
|
|
|
ProxyArp bool
|
|
|
|
ProxyArpWiFi bool
|
|
|
|
Isolated bool
|
|
|
|
NeighSuppress bool
|
2015-02-10 18:26:29 +00:00
|
|
|
}
|
|
|
|
|
2015-02-07 02:58:24 +00:00
|
|
|
// String returns a list of enabled flags
|
|
|
|
func (prot *Protinfo) String() string {
|
2018-07-04 13:01:34 +00:00
|
|
|
if prot == nil {
|
|
|
|
return "<nil>"
|
|
|
|
}
|
|
|
|
|
2015-06-19 00:41:46 +00:00
|
|
|
var boolStrings []string
|
2015-02-07 02:58:24 +00:00
|
|
|
if prot.Hairpin {
|
|
|
|
boolStrings = append(boolStrings, "Hairpin")
|
|
|
|
}
|
|
|
|
if prot.Guard {
|
|
|
|
boolStrings = append(boolStrings, "Guard")
|
|
|
|
}
|
|
|
|
if prot.FastLeave {
|
|
|
|
boolStrings = append(boolStrings, "FastLeave")
|
|
|
|
}
|
|
|
|
if prot.RootBlock {
|
|
|
|
boolStrings = append(boolStrings, "RootBlock")
|
|
|
|
}
|
|
|
|
if prot.Learning {
|
|
|
|
boolStrings = append(boolStrings, "Learning")
|
|
|
|
}
|
|
|
|
if prot.Flood {
|
|
|
|
boolStrings = append(boolStrings, "Flood")
|
|
|
|
}
|
2017-04-19 23:03:46 +00:00
|
|
|
if prot.ProxyArp {
|
|
|
|
boolStrings = append(boolStrings, "ProxyArp")
|
|
|
|
}
|
|
|
|
if prot.ProxyArpWiFi {
|
|
|
|
boolStrings = append(boolStrings, "ProxyArpWiFi")
|
|
|
|
}
|
2023-05-24 11:14:53 +00:00
|
|
|
if prot.Isolated {
|
|
|
|
boolStrings = append(boolStrings, "Isolated")
|
|
|
|
}
|
2023-07-14 15:00:46 +00:00
|
|
|
if prot.NeighSuppress {
|
|
|
|
boolStrings = append(boolStrings, "NeighSuppress")
|
|
|
|
}
|
2015-02-07 02:58:24 +00:00
|
|
|
return strings.Join(boolStrings, " ")
|
|
|
|
}
|
|
|
|
|
2015-02-10 18:26:29 +00:00
|
|
|
func boolToByte(x bool) []byte {
|
|
|
|
if x {
|
|
|
|
return []byte{1}
|
|
|
|
}
|
|
|
|
return []byte{0}
|
|
|
|
}
|
|
|
|
|
|
|
|
func byteToBool(x byte) bool {
|
2016-12-13 13:42:10 +00:00
|
|
|
return uint8(x) != 0
|
2015-02-10 18:26:29 +00:00
|
|
|
}
|