mirror of https://github.com/vishvananda/netlink
Fix go build issue for fou code
Signed-off-by: Alessandro Boch <aboch@tetrationanalytics.com>
This commit is contained in:
parent
c2a3de3b38
commit
fad79cbcae
43
fou.go
43
fou.go
|
@ -1,7 +1,6 @@
|
||||||
package netlink
|
package netlink
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
|
||||||
"errors"
|
"errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,45 +19,3 @@ type Fou struct {
|
||||||
Protocol int
|
Protocol int
|
||||||
EncapType int
|
EncapType int
|
||||||
}
|
}
|
||||||
|
|
||||||
func deserializeFouMsg(msg []byte) (Fou, error) {
|
|
||||||
// we'll skip to byte 4 to first attribute
|
|
||||||
msg = msg[3:]
|
|
||||||
var shift int
|
|
||||||
fou := Fou{}
|
|
||||||
|
|
||||||
for {
|
|
||||||
// attribute header is at least 16 bits
|
|
||||||
if len(msg) < 4 {
|
|
||||||
return fou, ErrAttrHeaderTruncated
|
|
||||||
}
|
|
||||||
|
|
||||||
lgt := int(binary.BigEndian.Uint16(msg[0:2]))
|
|
||||||
if len(msg) < lgt+4 {
|
|
||||||
return fou, ErrAttrBodyTruncated
|
|
||||||
}
|
|
||||||
attr := binary.BigEndian.Uint16(msg[2:4])
|
|
||||||
|
|
||||||
shift = lgt + 3
|
|
||||||
switch attr {
|
|
||||||
case FOU_ATTR_AF:
|
|
||||||
fou.Family = int(msg[5])
|
|
||||||
case FOU_ATTR_PORT:
|
|
||||||
fou.Port = int(binary.BigEndian.Uint16(msg[5:7]))
|
|
||||||
// port is 2 bytes
|
|
||||||
shift = lgt + 2
|
|
||||||
case FOU_ATTR_IPPROTO:
|
|
||||||
fou.Protocol = int(msg[5])
|
|
||||||
case FOU_ATTR_TYPE:
|
|
||||||
fou.EncapType = int(msg[5])
|
|
||||||
}
|
|
||||||
|
|
||||||
msg = msg[shift:]
|
|
||||||
|
|
||||||
if len(msg) < 4 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return fou, nil
|
|
||||||
}
|
|
||||||
|
|
42
fou_linux.go
42
fou_linux.go
|
@ -171,3 +171,45 @@ func (h *Handle) FouList(fam int) ([]Fou, error) {
|
||||||
|
|
||||||
return fous, nil
|
return fous, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func deserializeFouMsg(msg []byte) (Fou, error) {
|
||||||
|
// we'll skip to byte 4 to first attribute
|
||||||
|
msg = msg[3:]
|
||||||
|
var shift int
|
||||||
|
fou := Fou{}
|
||||||
|
|
||||||
|
for {
|
||||||
|
// attribute header is at least 16 bits
|
||||||
|
if len(msg) < 4 {
|
||||||
|
return fou, ErrAttrHeaderTruncated
|
||||||
|
}
|
||||||
|
|
||||||
|
lgt := int(binary.BigEndian.Uint16(msg[0:2]))
|
||||||
|
if len(msg) < lgt+4 {
|
||||||
|
return fou, ErrAttrBodyTruncated
|
||||||
|
}
|
||||||
|
attr := binary.BigEndian.Uint16(msg[2:4])
|
||||||
|
|
||||||
|
shift = lgt + 3
|
||||||
|
switch attr {
|
||||||
|
case FOU_ATTR_AF:
|
||||||
|
fou.Family = int(msg[5])
|
||||||
|
case FOU_ATTR_PORT:
|
||||||
|
fou.Port = int(binary.BigEndian.Uint16(msg[5:7]))
|
||||||
|
// port is 2 bytes
|
||||||
|
shift = lgt + 2
|
||||||
|
case FOU_ATTR_IPPROTO:
|
||||||
|
fou.Protocol = int(msg[5])
|
||||||
|
case FOU_ATTR_TYPE:
|
||||||
|
fou.EncapType = int(msg[5])
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = msg[shift:]
|
||||||
|
|
||||||
|
if len(msg) < 4 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fou, nil
|
||||||
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
// +build linux
|
||||||
|
|
||||||
package netlink
|
package netlink
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
Loading…
Reference in New Issue