|
@@ -440,11 +440,50 @@ func TestXDP(t *testing.T) {
|
|
|
|
|
|
|
|
cases := []struct {
|
|
cases := []struct {
|
|
|
name string
|
|
name string
|
|
|
|
|
+ dropSTUN bool
|
|
|
packetIn []byte
|
|
packetIn []byte
|
|
|
wantCode xdpAction
|
|
wantCode xdpAction
|
|
|
wantPacketOut []byte
|
|
wantPacketOut []byte
|
|
|
wantMetrics map[bpfCountersKey]uint64
|
|
wantMetrics map[bpfCountersKey]uint64
|
|
|
}{
|
|
}{
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "ipv4 STUN Binding Request Drop STUN",
|
|
|
|
|
+ dropSTUN: true,
|
|
|
|
|
+ packetIn: ipv4STUNBindingReqTX,
|
|
|
|
|
+ wantCode: xdpActionDrop,
|
|
|
|
|
+ wantPacketOut: ipv4STUNBindingReqTX,
|
|
|
|
|
+ wantMetrics: map[bpfCountersKey]uint64{
|
|
|
|
|
+ {
|
|
|
|
|
+ Af: uint8(bpfCounterKeyAfCOUNTER_KEY_AF_IPV4),
|
|
|
|
|
+ Pba: uint8(bpfCounterKeyPacketsBytesActionCOUNTER_KEY_PACKETS_DROP_TOTAL),
|
|
|
|
|
+ ProgEnd: uint8(bpfCounterKeyProgEndCOUNTER_KEY_END_DROP_STUN),
|
|
|
|
|
+ }: 1,
|
|
|
|
|
+ {
|
|
|
|
|
+ Af: uint8(bpfCounterKeyAfCOUNTER_KEY_AF_IPV4),
|
|
|
|
|
+ Pba: uint8(bpfCounterKeyPacketsBytesActionCOUNTER_KEY_BYTES_DROP_TOTAL),
|
|
|
|
|
+ ProgEnd: uint8(bpfCounterKeyProgEndCOUNTER_KEY_END_DROP_STUN),
|
|
|
|
|
+ }: uint64(len(ipv4STUNBindingReqTX)),
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "ipv6 STUN Binding Request Drop STUN",
|
|
|
|
|
+ dropSTUN: true,
|
|
|
|
|
+ packetIn: ipv6STUNBindingReqTX,
|
|
|
|
|
+ wantCode: xdpActionDrop,
|
|
|
|
|
+ wantPacketOut: ipv6STUNBindingReqTX,
|
|
|
|
|
+ wantMetrics: map[bpfCountersKey]uint64{
|
|
|
|
|
+ {
|
|
|
|
|
+ Af: uint8(bpfCounterKeyAfCOUNTER_KEY_AF_IPV6),
|
|
|
|
|
+ Pba: uint8(bpfCounterKeyPacketsBytesActionCOUNTER_KEY_PACKETS_DROP_TOTAL),
|
|
|
|
|
+ ProgEnd: uint8(bpfCounterKeyProgEndCOUNTER_KEY_END_DROP_STUN),
|
|
|
|
|
+ }: 1,
|
|
|
|
|
+ {
|
|
|
|
|
+ Af: uint8(bpfCounterKeyAfCOUNTER_KEY_AF_IPV6),
|
|
|
|
|
+ Pba: uint8(bpfCounterKeyPacketsBytesActionCOUNTER_KEY_BYTES_DROP_TOTAL),
|
|
|
|
|
+ ProgEnd: uint8(bpfCounterKeyProgEndCOUNTER_KEY_END_DROP_STUN),
|
|
|
|
|
+ }: uint64(len(ipv6STUNBindingReqTX)),
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
name: "ipv4 STUN Binding Request TX",
|
|
name: "ipv4 STUN Binding Request TX",
|
|
|
packetIn: ipv4STUNBindingReqTX,
|
|
packetIn: ipv4STUNBindingReqTX,
|
|
@@ -963,6 +1002,10 @@ func TestXDP(t *testing.T) {
|
|
|
Data: c.packetIn,
|
|
Data: c.packetIn,
|
|
|
DataOut: make([]byte, 1514),
|
|
DataOut: make([]byte, 1514),
|
|
|
}
|
|
}
|
|
|
|
|
+ err = server.SetDropSTUN(c.dropSTUN)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ t.Fatalf("error setting drop STUN: %v", err)
|
|
|
|
|
+ }
|
|
|
got, err := server.objs.XdpProgFunc.Run(&opts)
|
|
got, err := server.objs.XdpProgFunc.Run(&opts)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
t.Fatalf("error running program: %v", err)
|
|
t.Fatalf("error running program: %v", err)
|