(t *testing.T)
| 4034 | } |
| 4035 | |
| 4036 | func 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") |
nothing calls this directly
no test coverage detected
searching dependent graphs…