diff --git a/nftables.go b/nftables.go index 06965f7..c266724 100644 --- a/nftables.go +++ b/nftables.go @@ -520,7 +520,7 @@ func objFromMsg(msg netlink.Message) (Obj, error) { for ad.Next() { switch ad.Type() { case unix.NFTA_OBJ_TABLE: - table = &Table{Name: ad.String()} + table = &Table{Name: ad.String(), Family: TableFamily(msg.Data[0])} case unix.NFTA_OBJ_NAME: name = ad.String() case unix.NFTA_OBJ_TYPE: diff --git a/nftables_test.go b/nftables_test.go index c2571b7..bbf9351 100644 --- a/nftables_test.go +++ b/nftables_test.go @@ -47,7 +47,7 @@ func TestConfigureNAT(t *testing.T) { []byte("\x02\x00\x00\x00\x08\x00\x01\x00\x6e\x61\x74\x00\x08\x00\x02\x00\x00\x00\x00\x00"), // nft add chain nat prerouting '{' type nat hook prerouting priority 0 \; '}' []byte("\x02\x00\x00\x00\x08\x00\x01\x00\x6e\x61\x74\x00\x0f\x00\x03\x00\x70\x72\x65\x72\x6f\x75\x74\x69\x6e\x67\x00\x00\x14\x00\x04\x80\x08\x00\x01\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x08\x00\x07\x00\x6e\x61\x74\x00"), - // nft add chain nat postrouting { type nat hook postrouting priority 100 \; } + // nft add chain nat postrouting '{' type nat hook postrouting priority 100 \; '}' []byte("\x02\x00\x00\x00\x08\x00\x01\x00\x6e\x61\x74\x00\x10\x00\x03\x00\x70\x6f\x73\x74\x72\x6f\x75\x74\x69\x6e\x67\x00\x14\x00\x04\x80\x08\x00\x01\x00\x00\x00\x00\x04\x08\x00\x02\x00\x00\x00\x00\x64\x08\x00\x07\x00\x6e\x61\x74\x00"), // nft add rule nat postrouting oifname uplink0 masquerade []byte("\x02\x00\x00\x00\x08\x00\x01\x00\x6e\x61\x74\x00\x10\x00\x02\x00\x70\x6f\x73\x74\x72\x6f\x75\x74\x69\x6e\x67\x00\x74\x00\x04\x80\x24\x00\x01\x80\x09\x00\x01\x00\x6d\x65\x74\x61\x00\x00\x00\x00\x14\x00\x02\x80\x08\x00\x02\x00\x00\x00\x00\x07\x08\x00\x01\x00\x00\x00\x00\x01\x38\x00\x01\x80\x08\x00\x01\x00\x63\x6d\x70\x00\x2c\x00\x02\x80\x08\x00\x01\x00\x00\x00\x00\x01\x08\x00\x02\x00\x00\x00\x00\x00\x18\x00\x03\x80\x14\x00\x01\x00\x75\x70\x6c\x69\x6e\x6b\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x01\x80\x09\x00\x01\x00\x6d\x61\x73\x71\x00\x00\x00\x00\x04\x00\x02\x80"), @@ -436,8 +436,9 @@ func TestGetObjReset(t *testing.T) { }, } + filter := &nftables.Table{Name: "filter", Family: nftables.TableFamilyIPv4} objs, err := c.GetObjReset(&nftables.CounterObj{ - Table: &nftables.Table{Name: "filter", Family: nftables.TableFamilyIPv4}, + Table: filter, Name: "fwded", }) @@ -454,6 +455,12 @@ func TestGetObjReset(t *testing.T) { if !ok { t.Fatalf("unexpected type: got %T, want *nftables.CounterObj", obj) } + if got, want := co.Table.Name, filter.Name; got != want { + t.Errorf("unexpected table name: got %q, want %q", got, want) + } + if got, want := co.Table.Family, filter.Family; got != want { + t.Errorf("unexpected table family: got %d, want %d", got, want) + } if got, want := co.Packets, uint64(9); got != want { t.Errorf("unexpected number of packets: got %d, want %d", got, want) }