mirror of
https://github.com/evilsocket/opensnitch.git
synced 2025-03-04 08:34:40 +01:00
sys fw: fixed setting marks on packets
Fix for meta mark set 666
This commit is contained in:
parent
a18404fba9
commit
b1ebc0eb22
1 changed files with 30 additions and 9 deletions
|
@ -20,6 +20,35 @@ func NewExprMeta(values []*config.ExprValues, cmpOp *expr.CmpOp) (*[]expr.Any, e
|
|||
case NFT_META_SET_MARK:
|
||||
setMark = true
|
||||
continue
|
||||
case NFT_META_MARK:
|
||||
metaKey, err := getMetaKey(meta.Key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
metaVal, err := getMetaValue(meta.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if setMark {
|
||||
metaExpr = append(metaExpr, []expr.Any{
|
||||
&expr.Immediate{
|
||||
Register: 1,
|
||||
Data: binaryutil.NativeEndian.PutUint32(uint32(metaVal)),
|
||||
}}...)
|
||||
metaExpr = append(metaExpr, []expr.Any{
|
||||
&expr.Meta{Key: metaKey, Register: 1, SourceRegister: setMark}}...)
|
||||
} else {
|
||||
metaExpr = append(metaExpr, []expr.Any{
|
||||
&expr.Meta{Key: metaKey, Register: 1, SourceRegister: setMark},
|
||||
&expr.Cmp{
|
||||
Op: *cmpOp,
|
||||
Register: 1,
|
||||
Data: binaryutil.NativeEndian.PutUint32(uint32(metaVal)),
|
||||
}}...)
|
||||
}
|
||||
|
||||
setMark = false
|
||||
return &metaExpr, nil
|
||||
|
||||
case NFT_META_L4PROTO:
|
||||
mexpr, err := NewExprProtocol(meta.Key)
|
||||
|
@ -30,7 +59,7 @@ func NewExprMeta(values []*config.ExprValues, cmpOp *expr.CmpOp) (*[]expr.Any, e
|
|||
|
||||
return &metaExpr, nil
|
||||
|
||||
case NFT_META_MARK, NFT_META_PRIORITY,
|
||||
case NFT_META_PRIORITY,
|
||||
NFT_META_SKUID, NFT_META_SKGID,
|
||||
NFT_META_PROTOCOL:
|
||||
|
||||
|
@ -42,14 +71,6 @@ func NewExprMeta(values []*config.ExprValues, cmpOp *expr.CmpOp) (*[]expr.Any, e
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if setMark {
|
||||
// XXX: broken? results in -> [invalid type]
|
||||
metaExpr = append(metaExpr, []expr.Any{
|
||||
&expr.Immediate{
|
||||
Register: 1,
|
||||
Data: binaryutil.NativeEndian.PutUint32(uint32(metaVal)),
|
||||
}}...)
|
||||
}
|
||||
metaExpr = append(metaExpr, []expr.Any{
|
||||
&expr.Meta{Key: metaKey, Register: 1, SourceRegister: setMark},
|
||||
&expr.Cmp{
|
||||
|
|
Loading…
Add table
Reference in a new issue