Commit Graph

42 Commits

Author SHA1 Message Date
Kevin Sheldrake 4287122432 Add Clsact qdisc
Straight copy from jrfastab's fork, but applied to newer main.

Signed-off-by: Kevin Sheldrake <kevin.sheldrake@isovalent.com>
2023-12-06 10:59:38 -08:00
liuhao.0912 0ced838538 enable rule statistic and time statistic for flower actions 2023-11-27 10:42:39 -08:00
tc 004274e828 add tc flower pedit action
add pedit action in tc flower to support installing netlink hardware offload rules

authored-by: tangchen <tangchen.1@bytedance.com>
2023-11-27 10:36:18 -08:00
Ivan Kolodyazhny 70ca0345ee Support dst_port and src_port attributes in flower filter 2023-02-06 10:37:46 -08:00
Ivan Kolodyazhny 130828cd57 Add Flower ip_proto attribute support 2023-02-06 10:37:46 -08:00
Ivan Kolodyazhny 05506ada9f Implement filter goto action support 2023-01-30 09:12:08 -08:00
Ivan Kolodyazhny 378a404a26 Implement chains support
This patch implements both tc and filter chains.

We also need to align tc filter delition implementation
with iprote2 to delete filters withichain by passing
additional bits during filter deletion call.
2022-12-14 10:59:49 -08:00
Ivan Kolodyazhny e20cb98f77 Support skip_hw/skip_sw flags
This feature could not be tested with virtual interfaces that's why
unit-tests aren't added into this change.
2022-12-14 08:41:50 -08:00
chengzhycn d3b8a16e9b add actions support for fwfilter
Signed-off-by: chengzhycn <chengzhycn@gmail.com>
2022-10-27 09:19:20 -07:00
chengzhycn 8baf7b0c69 add support for skbedit mask 2022-10-26 18:47:10 -07:00
Nicholas Hollett 5cb84e47ad filter: Add support for the csum action in u32
This patch adds support for the U32 action that can force a csum
recalculation in different layers of a packet.
2022-03-29 10:02:56 -07:00
Vishvananda Abrams 523ee65ce3 fix the tests to run again 2022-01-12 16:05:20 -06:00
Wu Zongyong 9ada19101f filter: add support for police action
This patch adds support for tc police action. And codes of fw filter
have been refactored with the police action for reducing redundant
codes.

Signed-off-by: Wu Zongyong <wuzongyong@linux.alibaba.com>
2021-11-29 08:39:51 -08:00
tanbangcheng 5f76ae2b4d Add basic flower support
Signed-off-by: tanbangcheng <tanbangcheng@bytedance.com>
2021-09-17 18:42:15 -07:00
Zhiyuan Hou 3bf47faadc support u32 link option
Signed-off-by: Zhiyuan Hou <zhiyuan2048@linux.alibaba.com>
2021-03-05 07:50:18 -08:00
tanbangcheng 06362a6c16 Add DestPort to TunnelKeyAction
Fix parsing of TCA_TUNNEL_KEY_ENC_IPV6_SRC & TCA_TUNNEL_KEY_ENC_IPV6_DST
2020-09-24 21:30:07 -04:00
Zhiyuan Hou ed8931371a filter, action: Add support for skbedit
Signed-off-by: Zhiyuan Hou <zhiyuan2048@linux.alibaba.com>
2019-12-17 09:15:28 -08:00
Zhiyuan Hou e25c252266 filter, action: Add support for tunnel_key
Signed-off-by: Zhiyuan Hou <zhiyuan2048@linux.alibaba.com>
2019-12-03 14:07:18 -08:00
Lorenz Bauer a8241965b5 Allow replacing filters
Add a function FilterReplace, which mirrors the behaviour of
QdiscReplace, etc. This makes it possible to swap out filters
with a single netlink message.
2019-06-24 06:52:36 -07:00
Krister Johansen fb5fbae935 Mirred and connmark clobber their ActionAttrs
Encountered this in a local test.  It turns out that in parseActions
mirred has a bug where it parses the action attributes but then on the
very next line overwrites this hard work by assigning an empty
ActionAttrs struct on top.  I copy pasta'd this into connmark.  Fix both
instances and amend the unit tests to catch this going forward.

Signed-off-by: Krister Johansen <krister.johansen@oracle.com>
2019-05-31 09:24:53 -07:00
Vishvananda Abrams 1187dc9297 Fix tests 2019-05-29 19:32:31 -07:00
Krister Johansen 00009fb860 Add support for TC_ACT_CONNMARK
Implements the connmark action described in tc-connmark(8)

Signed-off-by: Krister Johansen <krister.johansen@oracle.com>
2019-05-22 08:35:24 -07:00
Taku Fukushima dc00cf9d5c Add Hash to U32
This patch adds "Hash" attribute that represents the ID of the hash
table with which the filter is associated to U32 struct. If the hash
table is not created yet, a new hash table is created with the
specified ID.

Signed-off-by: Taku Fukushima <taku@soracom.jp>
2018-04-19 09:01:18 -07:00
Taku Fukushima 23a36f223d Add Divisor to U32
This patch adds "Divisor" attribute that represents the divisor of the
hash table buckets to U32 struct.

With "Divisor" attribute, only a hash table without its associated
filters can be created. This new capability allows users to construct
the more flexible filter configurations with the hash table that has
the divisor greater than 1, for instance.

Although a hash table is created through the same interfaces as the
filters, it cannot be listed or deleted though the same interfaces as
the filters at this moment. Only real filters can be listed with
FilterList and deleted with FilterDel.

Signed-off-by: Taku Fukushima <taku@soracom.jp>
2018-04-19 09:01:18 -07:00
Sargun Dhillon 1882fa99fc Add Matchall filter 2018-01-05 09:42:30 -08:00
yandd aa48b8cff0 Fix CalcRtable array parameter bug 2017-11-13 09:27:51 -08:00
Alessandro Boch a47a543cef Allow to skip tests based on min kernel version required
Signed-off-by: Alessandro Boch <aboch@tetrationanalytics.com>
2017-11-08 03:30:16 -08:00
Ian Bishop 0e3b74dbe2 replace syscall with golang.org/x/sys/unix 2017-10-26 09:45:08 -07:00
Vishvananda Ishaya Abrams a98f31ffc7 filter pfifo qdiscs in tests 2017-09-05 22:56:13 -07:00
Tobias Klauser b1eba2e916 Fix go vet issues in tests
Fix the following two issues reported by go vet:

  bridge_linux_test.go:41: possible formatting directive in Fatal call
  filter_test.go:204: possible formatting directive in Fatal call

by using Fatalf instead of Fatal when using formatting directives.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2017-07-05 07:46:37 -07:00
Taku Fukushima a66e14955d Fix byte order and reference bug of U32 filters
This patch fixes the bug of U32 filters which byte orders are not
appropriately updated based on the endianess of the host. Golang's
range returns copied values instead of their references when it
iterates through a map and the indices should be used to access the
specific value of the map by reference.

This patch also fixes the bug of netlink.FilterAdd that breaks the user
facing model changing  the type of cSel, the copied TcU32Sel, from its
pointer to the struct. Previously the pointer is copied and therefore
the data that is given by the users is modified if the endiannesses of
the fields in it need to be changed.

To validate these changes, I added the validation that the user facing
model is identical before and after netlink.FilterAdd. In addition to
that, the fix for the reference bug enables the endianness validations
in the same test case.

Signed-off-by: Taku Fukushima <taku@soracom.jp>
2017-05-15 20:56:34 -07:00
Taku Fukushima 8bf4a3aacd Add advanced u32 match feature support
This patch adds the advanced u32 match feature support with the
selection keys. It enables the users to crate a complex filter as follow
for instance:

  $ tc filter add dev eth0 parent 1: prio 1 u32 match ip dport 80 0xff \
                match u32 0x146ca 0xffff at 32 flowid 1:46cb

To expose TcU32Sel and TcU32Key defined in nl package, this patch copies
them to filte.go and their values that require Big-endianness are
handled appropriately in FilterAdd function in filter_linux.go.

Signed-off-by: Taku Fukushima <taku@soracom.jp>
2017-04-07 11:03:16 -07:00
Taku Fukushima 1b53666767 Add class ID parsing to parseU32Data
This patch adds a new switch case that handles the class ID attribute of
the U32 filter data listed by FilterList. Without this case block the
class ID of the U32 filter is always set to zero. The new test
conditions are added to TestFilterAddDel and TestFilterU32BpfAddDel in
filter_test.go as well.

Signed-off-by: Taku Fukushima <taku@soracom.jp>
2017-04-05 14:49:35 -07:00
Aithal dedc638a06 Fix compilation errors for non linux platforms.
The go get command and make both fail when executed on
non-linux platforms. Modified it so that there are no
compilation errors when developing in such an
environment.
2017-02-20 12:00:54 -08:00
Brenden Blanco fadc1088f6 Add support for xdp set/get of a bpf program (#156)
* Add netlink definitions for extra IFLAs
  The relevant IFLA_* are defined in the kernel but not in the syscall
  package.
* Parameterize the return value of loadSimpleBpf
  Allow the return value of the bpf program created by loadSimpleBpf to
  be specified by the caller. Before this, the value was hardcoded to 1.
* Add support for a new IFLA that enables using a bpf program as a
  filter early in the driver path of some NICs.
* Add a test for set/get of an xdp program. Since currently, the XDP
  IFLA is optional, check that the hardware supports it before trying to
  set the field.

Signed-off-by: Brenden Blanco <bblanco@plumgrid.com>
2016-08-25 11:08:23 -07:00
Vish Ishaya 7995ff5647 add generic actions and simplify action type (#129) 2016-05-31 13:03:47 -07:00
Brenden Blanco 719d8ca65a Skip test if bpf syscall is unavailable 2016-02-28 23:52:26 -08:00
Brenden Blanco 17b1e35dbc Add clsact and bpf filter support
New in kernel 4.5 is a type of qdisc for lightweight (no qdisc lock)
ingress/egress parsing, called clsact. Add support for such a qdisc
type.

One primary consumer of clsact is the bpf filter, add support for that
as well.
2016-02-28 23:20:29 -08:00
Brenden Blanco 6f0327edfd Add BPF TcAction support to U32 filter
Current U32 filter only supports redirect action, but the U32 can
support a lot more. Refactor a bit the action generating/parsing logic
to be more generic and add BPF action support.

When creating a U32 filter, one can supply an array of Actions, which
will be executed by the U32 filter in order:
* The new MirredAction implements the same functionality as RedirIndex
  field in the U32 filter, with that static field kept in the struct for
  backwards compatibility.
* A new BpfAction type is added which allows a program with an open bpf
  file descriptor (implementation is out of scope of this patch) to be
  added as well.

Add a test for the above use case which includes one of each type of
action.
2016-02-28 23:12:34 -08:00
chantra b1536bf12c Address comments
* fix package import order
* use int instead of int32 for Filter FW Attrs
2015-10-04 22:34:06 -07:00
chantra 824d7a16e5 Add FW filter support 2015-09-18 18:51:33 -07:00
Vishvananda Ishaya acc8a28738 Add basic support for redirect filter 2015-08-19 16:02:04 -07:00