Compare commits
No commits in common. "45645ffbf5ba9f5395ab04c3d003ef51215d8a90" and "d746ecb0e494e7200180c3886fde9664d9100729" have entirely different histories.
45645ffbf5
...
d746ecb0e4
|
@ -13,15 +13,15 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Set up Go 1.x
|
- name: Set up Go 1.x
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@v2
|
||||||
with:
|
with:
|
||||||
# Run on the latest minor release of Go 1.20:
|
# Run on the latest minor release of Go 1.19:
|
||||||
go-version: ^1.20
|
go-version: ^1.19
|
||||||
id: go
|
id: go
|
||||||
|
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Ensure all files were formatted as per gofmt
|
- name: Ensure all files were formatted as per gofmt
|
||||||
run: |
|
run: |
|
||||||
|
|
23
set.go
23
set.go
|
@ -22,7 +22,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/nftables/expr"
|
"github.com/google/nftables/expr"
|
||||||
"github.com/google/nftables/internal/parseexprfunc"
|
|
||||||
|
|
||||||
"github.com/google/nftables/binaryutil"
|
"github.com/google/nftables/binaryutil"
|
||||||
"github.com/mdlayher/netlink"
|
"github.com/mdlayher/netlink"
|
||||||
|
@ -284,11 +283,9 @@ type SetElement struct {
|
||||||
|
|
||||||
// Life left of the "timeout" elements
|
// Life left of the "timeout" elements
|
||||||
Expires time.Duration
|
Expires time.Duration
|
||||||
|
|
||||||
Counter *expr.Counter
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SetElement) decode(fam byte) func(b []byte) error {
|
func (s *SetElement) decode() func(b []byte) error {
|
||||||
return func(b []byte) error {
|
return func(b []byte) error {
|
||||||
ad, err := netlink.NewAttributeDecoder(b)
|
ad, err := netlink.NewAttributeDecoder(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -320,18 +317,6 @@ func (s *SetElement) decode(fam byte) func(b []byte) error {
|
||||||
s.Timeout = time.Millisecond * time.Duration(ad.Uint64())
|
s.Timeout = time.Millisecond * time.Duration(ad.Uint64())
|
||||||
case unix.NFTA_SET_ELEM_EXPIRATION:
|
case unix.NFTA_SET_ELEM_EXPIRATION:
|
||||||
s.Expires = time.Millisecond * time.Duration(ad.Uint64())
|
s.Expires = time.Millisecond * time.Duration(ad.Uint64())
|
||||||
case unix.NFTA_SET_ELEM_EXPR:
|
|
||||||
elems, err := parseexprfunc.ParseExprBytesFunc(fam, ad, ad.Bytes())
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, elem := range elems {
|
|
||||||
switch item := elem.(type) {
|
|
||||||
case *expr.Counter:
|
|
||||||
s.Counter = item
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ad.Err()
|
return ad.Err()
|
||||||
|
@ -758,7 +743,7 @@ func parseSetDatatype(magic uint32) (SetDatatype, error) {
|
||||||
|
|
||||||
var elemHeaderType = netlink.HeaderType((unix.NFNL_SUBSYS_NFTABLES << 8) | unix.NFT_MSG_NEWSETELEM)
|
var elemHeaderType = netlink.HeaderType((unix.NFNL_SUBSYS_NFTABLES << 8) | unix.NFT_MSG_NEWSETELEM)
|
||||||
|
|
||||||
func elementsFromMsg(fam byte, msg netlink.Message) ([]SetElement, error) {
|
func elementsFromMsg(msg netlink.Message) ([]SetElement, error) {
|
||||||
if got, want := msg.Header.Type, elemHeaderType; got != want {
|
if got, want := msg.Header.Type, elemHeaderType; got != want {
|
||||||
return nil, fmt.Errorf("unexpected header type: got %v, want %v", got, want)
|
return nil, fmt.Errorf("unexpected header type: got %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
|
@ -782,7 +767,7 @@ func elementsFromMsg(fam byte, msg netlink.Message) ([]SetElement, error) {
|
||||||
var elem SetElement
|
var elem SetElement
|
||||||
switch ad.Type() {
|
switch ad.Type() {
|
||||||
case unix.NFTA_LIST_ELEM:
|
case unix.NFTA_LIST_ELEM:
|
||||||
ad.Do(elem.decode(fam))
|
ad.Do(elem.decode())
|
||||||
}
|
}
|
||||||
elements = append(elements, elem)
|
elements = append(elements, elem)
|
||||||
}
|
}
|
||||||
|
@ -914,7 +899,7 @@ func (cc *Conn) GetSetElements(s *Set) ([]SetElement, error) {
|
||||||
}
|
}
|
||||||
var elems []SetElement
|
var elems []SetElement
|
||||||
for _, msg := range reply {
|
for _, msg := range reply {
|
||||||
s, err := elementsFromMsg(uint8(s.Table.Family), msg)
|
s, err := elementsFromMsg(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue