Compare commits
1 Commits
b5406ff95a
...
a8e056d949
Author | SHA1 | Date |
---|---|---|
|
a8e056d949 |
33
expr/expr.go
33
expr/expr.go
|
@ -25,8 +25,8 @@ import (
|
|||
)
|
||||
|
||||
func init() {
|
||||
parseExprBytesCommonFunc := func(exprsFromBytesFunc func() ([]Any, error)) ([]interface{}, error) {
|
||||
exprs, err := exprsFromBytesFunc()
|
||||
parseexprfunc.ParseExprBytesFunc = func(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]interface{}, error) {
|
||||
exprs, err := exprsFromBytes(fam, ad, args...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -36,18 +36,7 @@ func init() {
|
|||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
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) {
|
||||
parseexprfunc.ParseExprMsgFunc = func(fam byte, b []byte, args ...string) ([]interface{}, error) {
|
||||
ad, err := netlink.NewAttributeDecoder(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -55,7 +44,7 @@ func init() {
|
|||
ad.ByteOrder = binary.BigEndian
|
||||
var exprs []interface{}
|
||||
for ad.Next() {
|
||||
e, err := parseexprfunc.ParseExprBytesFunc(fam, ad)
|
||||
e, err := parseexprfunc.ParseExprBytesFunc(fam, ad, args...)
|
||||
if err != nil {
|
||||
return e, err
|
||||
}
|
||||
|
@ -79,11 +68,12 @@ func Unmarshal(fam byte, data []byte, e Any) error {
|
|||
return e.unmarshal(fam, data)
|
||||
}
|
||||
|
||||
// exprsBytesFromName parses raw expressions bytes
|
||||
// based on provided expr name
|
||||
func exprsBytesFromName(fam byte, ad *netlink.AttributeDecoder, name string) ([]Any, error) {
|
||||
// exprsFromBytes parses nested raw expressions bytes
|
||||
// to construct nftables expressions
|
||||
func exprsFromBytes(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]Any, error) {
|
||||
var exprs []Any
|
||||
e := exprFromName(name)
|
||||
if len(args) > 0 {
|
||||
e := exprFromName(args[0])
|
||||
ad.Do(func(b []byte) error {
|
||||
if err := Unmarshal(fam, b, e); err != nil {
|
||||
return err
|
||||
|
@ -94,11 +84,6 @@ func exprsBytesFromName(fam byte, ad *netlink.AttributeDecoder, name string) ([]
|
|||
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)
|
||||
if err != nil {
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
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)
|
||||
ParseExprBytesFunc func(fam byte, ad *netlink.AttributeDecoder, args ...string) ([]interface{}, error)
|
||||
ParseExprMsgFunc func(fam byte, b []byte, args ...string) ([]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.ParseExprBytesFromNameFunc(byte(o.family()), ad, objByObjTypeMagic[o.Type])
|
||||
objs, err := parseexprfunc.ParseExprBytesFunc(byte(o.family()), ad, objByObjTypeMagic[o.Type])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue