Compare commits
3 Commits
1cef3a6218
...
72b6fe192a
Author | SHA1 | Date |
---|---|---|
|
72b6fe192a | |
|
b5406ff95a | |
|
912dee68b1 |
35
expr/expr.go
35
expr/expr.go
|
@ -25,8 +25,8 @@ import (
|
|||
)
|
||||
|
||||
func init() {
|
||||
parseexprfunc.ParseExprBytesFunc = func(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]interface{}, error) {
|
||||
exprs, err := exprsFromBytes(fam, ad, args...)
|
||||
parseExprBytesCommonFunc := func(exprsFromBytesFunc func() ([]Any, error)) ([]interface{}, error) {
|
||||
exprs, err := exprsFromBytesFunc()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -36,7 +36,18 @@ func init() {
|
|||
}
|
||||
return result, nil
|
||||
}
|
||||
parseexprfunc.ParseExprMsgFunc = func(fam byte, b []byte, args ...string) ([]interface{}, error) {
|
||||
|
||||
parseexprfunc.ParseExprBytesFromNameFunc = func(fam byte, ad *netlink.AttributeDecoder, exprName string) ([]interface{}, error) {
|
||||
return parseExprBytesCommonFunc(func() ([]Any, error) {
|
||||
return exprsBytesFromName(fam, ad, exprName)
|
||||
})
|
||||
}
|
||||
parseexprfunc.ParseExprBytesFunc = func(fam byte, ad *netlink.AttributeDecoder) ([]interface{}, error) {
|
||||
return parseExprBytesCommonFunc(func() ([]Any, error) {
|
||||
return exprsFromBytes(fam, ad)
|
||||
})
|
||||
}
|
||||
parseexprfunc.ParseExprMsgFunc = func(fam byte, b []byte) ([]interface{}, error) {
|
||||
ad, err := netlink.NewAttributeDecoder(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -44,7 +55,7 @@ func init() {
|
|||
ad.ByteOrder = binary.BigEndian
|
||||
var exprs []interface{}
|
||||
for ad.Next() {
|
||||
e, err := parseexprfunc.ParseExprBytesFunc(fam, ad, args...)
|
||||
e, err := parseexprfunc.ParseExprBytesFunc(fam, ad)
|
||||
if err != nil {
|
||||
return e, err
|
||||
}
|
||||
|
@ -68,12 +79,11 @@ func Unmarshal(fam byte, data []byte, e Any) error {
|
|||
return e.unmarshal(fam, data)
|
||||
}
|
||||
|
||||
// exprsFromBytes parses nested raw expressions bytes
|
||||
// to construct nftables expressions
|
||||
func exprsFromBytes(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]Any, error) {
|
||||
// exprsBytesFromName parses raw expressions bytes
|
||||
// based on provided expr name
|
||||
func exprsBytesFromName(fam byte, ad *netlink.AttributeDecoder, name string) ([]Any, error) {
|
||||
var exprs []Any
|
||||
if len(args) > 0 {
|
||||
e := exprFromName(args[0])
|
||||
e := exprFromName(name)
|
||||
ad.Do(func(b []byte) error {
|
||||
if err := Unmarshal(fam, b, e); err != nil {
|
||||
return err
|
||||
|
@ -82,7 +92,12 @@ func exprsFromBytes(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]A
|
|||
return nil
|
||||
})
|
||||
return exprs, ad.Err()
|
||||
}
|
||||
}
|
||||
|
||||
// exprsFromBytes parses nested raw expressions bytes
|
||||
// to construct nftables expressions
|
||||
func exprsFromBytes(fam byte, ad *netlink.AttributeDecoder) ([]Any, error) {
|
||||
var exprs []Any
|
||||
|
||||
ad.Do(func(b []byte) error {
|
||||
ad, err := netlink.NewAttributeDecoder(b)
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
ParseExprBytesFunc func(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]interface{}, error)
|
||||
ParseExprMsgFunc func(fam byte, b []byte, args ...string) ([]interface{}, error)
|
||||
ParseExprBytesFromNameFunc func(fam byte, ad *netlink.AttributeDecoder, exprName string) ([]interface{}, error)
|
||||
ParseExprBytesFunc func(fam byte, ad *netlink.AttributeDecoder) ([]interface{}, error)
|
||||
ParseExprMsgFunc func(fam byte, b []byte) ([]interface{}, error)
|
||||
)
|
||||
|
|
2
obj.go
2
obj.go
|
@ -256,7 +256,7 @@ func objFromMsg(msg netlink.Message, returnLegacyType bool) (Obj, error) {
|
|||
Type: ObjType(objectType),
|
||||
}
|
||||
|
||||
objs, err := parseexprfunc.ParseExprBytesFunc(byte(o.family()), ad, objByObjTypeMagic[o.Type])
|
||||
objs, err := parseexprfunc.ParseExprBytesFromNameFunc(byte(o.family()), ad, objByObjTypeMagic[o.Type])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue