Compare commits
3 Commits
2ba518ec5c
...
950e408d48
Author | SHA1 | Date |
---|---|---|
|
950e408d48 | |
|
d46a80e963 | |
|
c4d774fc49 |
|
@ -112,6 +112,7 @@ func (e *Payload) unmarshal(data []byte) error {
|
||||||
e.DestRegister = ad.Uint32()
|
e.DestRegister = ad.Uint32()
|
||||||
case unix.NFTA_PAYLOAD_SREG:
|
case unix.NFTA_PAYLOAD_SREG:
|
||||||
e.SourceRegister = ad.Uint32()
|
e.SourceRegister = ad.Uint32()
|
||||||
|
e.OperationType = PayloadWrite
|
||||||
case unix.NFTA_PAYLOAD_BASE:
|
case unix.NFTA_PAYLOAD_BASE:
|
||||||
e.Base = PayloadBase(ad.Uint32())
|
e.Base = PayloadBase(ad.Uint32())
|
||||||
case unix.NFTA_PAYLOAD_OFFSET:
|
case unix.NFTA_PAYLOAD_OFFSET:
|
||||||
|
|
|
@ -77,9 +77,35 @@ func (e *Range) unmarshal(data []byte) error {
|
||||||
case unix.NFTA_RANGE_SREG:
|
case unix.NFTA_RANGE_SREG:
|
||||||
e.Register = ad.Uint32()
|
e.Register = ad.Uint32()
|
||||||
case unix.NFTA_RANGE_FROM_DATA:
|
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:
|
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()
|
return ad.Err()
|
||||||
|
|
4
rule.go
4
rule.go
|
@ -227,6 +227,10 @@ func exprsFromMsg(b []byte) ([]expr.Any, error) {
|
||||||
switch ad.Type() {
|
switch ad.Type() {
|
||||||
case unix.NFTA_EXPR_NAME:
|
case unix.NFTA_EXPR_NAME:
|
||||||
name = ad.String()
|
name = ad.String()
|
||||||
|
if name == "notrack" {
|
||||||
|
e := &expr.Notrack{}
|
||||||
|
exprs = append(exprs, e)
|
||||||
|
}
|
||||||
case unix.NFTA_EXPR_DATA:
|
case unix.NFTA_EXPR_DATA:
|
||||||
var e expr.Any
|
var e expr.Any
|
||||||
switch name {
|
switch name {
|
||||||
|
|
Loading…
Reference in New Issue