Fix range expression unmarshalling
Fix the range expression unmarshalling on the `FromData` and `ToData` Range expression fields.
This commit is contained in:
parent
d46a80e963
commit
950e408d48
|
@ -77,9 +77,35 @@ func (e *Range) unmarshal(data []byte) error {
|
|||
case unix.NFTA_RANGE_SREG:
|
||||
e.Register = ad.Uint32()
|
||||
case unix.NFTA_RANGE_FROM_DATA:
|
||||
e.FromData = ad.Bytes()
|
||||
ad.Do(func(b []byte) error {
|
||||
ad, err := netlink.NewAttributeDecoder(b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ad.ByteOrder = binary.BigEndian
|
||||
if ad.Next() && ad.Type() == unix.NFTA_DATA_VALUE {
|
||||
ad.Do(func(b []byte) error {
|
||||
e.FromData = b
|
||||
return nil
|
||||
})
|
||||
}
|
||||
return ad.Err()
|
||||
})
|
||||
case unix.NFTA_RANGE_TO_DATA:
|
||||
e.ToData = ad.Bytes()
|
||||
ad.Do(func(b []byte) error {
|
||||
ad, err := netlink.NewAttributeDecoder(b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ad.ByteOrder = binary.BigEndian
|
||||
if ad.Next() && ad.Type() == unix.NFTA_DATA_VALUE {
|
||||
ad.Do(func(b []byte) error {
|
||||
e.ToData = b
|
||||
return nil
|
||||
})
|
||||
}
|
||||
return ad.Err()
|
||||
})
|
||||
}
|
||||
}
|
||||
return ad.Err()
|
||||
|
|
Loading…
Reference in New Issue