mirror of
https://github.com/vishvananda/netlink
synced 2025-02-18 05:07:11 +00:00
Fixes Issue #509 more generically
The first fix #512 apparently didn't solve all cases. This generically skips values that are null to solve the problem. Also closes #548.
This commit is contained in:
parent
7484f55b22
commit
872fbf27a2
@ -2153,6 +2153,13 @@ func parseVlanData(link Link, data []syscall.NetlinkRouteAttr) {
|
|||||||
func parseVxlanData(link Link, data []syscall.NetlinkRouteAttr) {
|
func parseVxlanData(link Link, data []syscall.NetlinkRouteAttr) {
|
||||||
vxlan := link.(*Vxlan)
|
vxlan := link.(*Vxlan)
|
||||||
for _, datum := range data {
|
for _, datum := range data {
|
||||||
|
// NOTE(vish): Apparently some messages can be sent with no value.
|
||||||
|
// We special case GBP here to not change existing
|
||||||
|
// functionality. It appears that GBP sends a datum.Value
|
||||||
|
// of null.
|
||||||
|
if len(datum.Value) == 0 && datum.Attr.Type != nl.IFLA_VXLAN_GBP {
|
||||||
|
continue
|
||||||
|
}
|
||||||
switch datum.Attr.Type {
|
switch datum.Attr.Type {
|
||||||
case nl.IFLA_VXLAN_ID:
|
case nl.IFLA_VXLAN_ID:
|
||||||
vxlan.VxlanId = int(native.Uint32(datum.Value[0:4]))
|
vxlan.VxlanId = int(native.Uint32(datum.Value[0:4]))
|
||||||
@ -2189,11 +2196,7 @@ func parseVxlanData(link Link, data []syscall.NetlinkRouteAttr) {
|
|||||||
case nl.IFLA_VXLAN_GBP:
|
case nl.IFLA_VXLAN_GBP:
|
||||||
vxlan.GBP = true
|
vxlan.GBP = true
|
||||||
case nl.IFLA_VXLAN_FLOWBASED:
|
case nl.IFLA_VXLAN_FLOWBASED:
|
||||||
// NOTE(vish): Apparently this message can be sent with no value.
|
vxlan.FlowBased = int8(datum.Value[0]) != 0
|
||||||
// Unclear if the others be sent that way as well.
|
|
||||||
if len(datum.Value) > 0 {
|
|
||||||
vxlan.FlowBased = int8(datum.Value[0]) != 0
|
|
||||||
}
|
|
||||||
case nl.IFLA_VXLAN_AGEING:
|
case nl.IFLA_VXLAN_AGEING:
|
||||||
vxlan.Age = int(native.Uint32(datum.Value[0:4]))
|
vxlan.Age = int(native.Uint32(datum.Value[0:4]))
|
||||||
vxlan.NoAge = vxlan.Age == 0
|
vxlan.NoAge = vxlan.Age == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user