MCPcopy Create free account
hub / github.com/google/nftables / TestSetElementsInterval

Function TestSetElementsInterval

nftables_test.go:4036–4104  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4034}
4035
4036func TestSetElementsInterval(t *testing.T) {
4037 // Create a new network namespace to test these operations,
4038 // and tear down the namespace at test completion.
4039 c, newNS := nftest.OpenSystemConn(t, *enableSysTests)
4040 defer nftest.CleanupSystemConn(t, newNS)
4041 // Clear all rules at the beginning + end of the test.
4042 c.FlushRuleset()
4043 defer c.FlushRuleset()
4044
4045 filter := c.AddTable(&nftables.Table{
4046 Family: nftables.TableFamilyIPv6,
4047 Name: "filter",
4048 })
4049 portSet := &nftables.Set{
4050 Table: filter,
4051 Name: "ports",
4052 KeyType: nftables.MustConcatSetType(nftables.TypeIP6Addr, nftables.TypeInetService, nftables.TypeIP6Addr),
4053 Interval: true,
4054 Concatenation: true,
4055 }
4056 if err := c.AddSet(portSet, nil); err != nil {
4057 t.Errorf("c.AddSet(portSet) failed: %v", err)
4058 }
4059
4060 // { 777c:ab4b:85f0:1614:49e5:d29b:aa7b:cc90 . 50000 . 8709:1cb9:163e:9b55:357f:ef64:708a:edcb }
4061 keyBytes := []byte{119, 124, 171, 75, 133, 240, 22, 20, 73, 229, 210, 155, 170, 123, 204, 144, 195, 80, 0, 0, 135, 9, 28, 185, 22, 62, 155, 85, 53, 127, 239, 100, 112, 138, 237, 203}
4062 // { 777c:ab4b:85f0:1614:49e5:d29b:aa7b:cc90 . 60000 . 8709:1cb9:163e:9b55:357f:ef64:708a:edcb }
4063 keyEndBytes := []byte{119, 124, 171, 75, 133, 240, 22, 20, 73, 229, 210, 155, 170, 123, 204, 144, 234, 96, 0, 0, 135, 9, 28, 185, 22, 62, 155, 85, 53, 127, 239, 100, 112, 138, 237, 203}
4064 // elements = { 777c:ab4b:85f0:1614:49e5:d29b:aa7b:cc90 . 50000-60000 . 8709:1cb9:163e:9b55:357f:ef64:708a:edcb }
4065 if err := c.SetAddElements(portSet, []nftables.SetElement{
4066 {Key: keyBytes, KeyEnd: keyEndBytes},
4067 }); err != nil {
4068 t.Errorf("c.SetVal(portSet) failed: %v", err)
4069 }
4070
4071 if err := c.Flush(); err != nil {
4072 t.Errorf("c.Flush() failed: %v", err)
4073 }
4074
4075 sets, err := c.GetSets(filter)
4076 if err != nil {
4077 t.Errorf("c.GetSets() failed: %v", err)
4078 }
4079 if len(sets) != 1 {
4080 t.Fatalf("len(sets) = %d, want 1", len(sets))
4081 }
4082
4083 elements, err := c.GetSetElements(sets[0])
4084 if err != nil {
4085 t.Errorf("c.GetSetElements(portSet) failed: %v", err)
4086 }
4087 if len(elements) != 1 {
4088 t.Fatalf("len(portSetElements) = %d, want 1", len(sets))
4089 }
4090
4091 element := elements[0]
4092 if len(element.Key) == 0 {
4093 t.Fatal("len(portSetElements.Key) = 0")

Callers

nothing calls this directly

Calls 10

OpenSystemConnFunction · 0.92
CleanupSystemConnFunction · 0.92
MustConcatSetTypeFunction · 0.92
FlushRulesetMethod · 0.80
AddTableMethod · 0.80
AddSetMethod · 0.80
SetAddElementsMethod · 0.80
FlushMethod · 0.80
GetSetsMethod · 0.80
GetSetElementsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…