.TH "actions in tc" 8 "1 Aug 2017" "iproute2" "Linux"

.SH NAME
actions \- independently defined actions in tc
.SH SYNOPSIS
.B tc
[
.I TC_OPTIONS
]
.B actions
.BR add " | " change " | " replace
.I ACTSPEC

.B tc
[
.I TC_OPTIONS
]
.B actions
.BR get " | " delete
.I ACTISPEC

.B tc
[
.I TC_OPTIONS
]
.B actions flush
.I ACTNAMESPEC

.B tc
[
.I TC_OPTIONS
]
.B actions
.BR ls " | " list
.I ACTNAMESPEC
[
.I ACTFILTER
]

.in +8
.I ACTSPEC
:=
.B action
.I ACTDETAIL
[
.I INDEXSPEC
] [
.I COOKIESPEC
] [
.I CONTROL
]

.I ACTISPEC
:=
.I ACTNAMESPEC INDEXSPEC

.I ACTNAMESPEC
:=
.B action
ACTNAME

.I INDEXSPEC
:=
.BI index " INDEX"

.I ACTFILTER
:=
.BI since " MSTIME"

.I COOKIESPEC
:=
.BI cookie " COOKIE"

.I ACTDETAIL
:=
.I ACTNAME ACTPARAMS

.I ACTNAME
may be any valid action type: gact, mirred, bpf, connmark, csum, police, etc.

.I MSTIME
Time since last update.

.I CONTROL
:= {
.IR reclassify " | " pipe " | " drop " | " continue " | " ok
}

.I TC_OPTIONS
These are the options that are specific to
.B tc
and not only the options. Refer to
.BR tc(8)
for more information.
.in

.SH DESCRIPTION

The
.B actions
object in
.B tc
allows a user to define actions independently of a classifier (filter). These
actions can then be assigned to one or more filters, with any
packets matching the classifier's criteria having that action performed
on them.

Each action type (mirred, police, etc.) will have its own table to store
all created actions.

.SH OPERATIONS
.TP
.B add
Create a new action in that action's table.

.TP
.B change
.TQ
.B replace
Make modifications to an existing action.
.TP
.B get
Display the action with the specified index value. When combined with the
.B -s
option for
.BR tc ","
display the statistics for that action.
.TP
.B delete
Delete the action with the specified index value. If the action is already
associated with a classifier, it does not delete the classifier.
.TP
.B ls
.TQ
.B list
List all the actions in the specified table. When combined with the
.B -s
option for
.BR tc ","
display the statistics for all actions in the specified table.
When combined with the option
.B since
allows doing a millisecond time-filter since the last time an
action was used in the datapath.
.TP
.B flush
Delete all actions stored in the specified table.

.SH ACTION OPTIONS
Note that these options are available to all action types.
.TP
.BI index " INDEX"
Specify the table index value of an action.
.I INDEX
is a 32-bit value that is unique to the specific type of action referenced.

.RS
For
.BR add ", " change ", and"
.B replace
operations, the index is
.BR optional.
When adding a new action,
specifying an index value will assign the action to that index unless that
index value has already been assigned. Omitting the index value for an add
operation will cause the kernel to assign a value to the new action.
.RE

.RS
For
.BR get " and " delete
operations, the index is
.B required
to identify the specific action to be displayed or deleted.
.RE

.TP
.BI cookie " COOKIE"
In addition to the specific action, mark the matching packet with the value
specified by
.IR COOKIE "."
The
.I COOKIE
is a 128-bit value that will not be interpreted by the kernel whatsoever.
As such, it can be used as a correlating value for maintaining user state.
The value to be stored is completely arbitrary and does not require a specific
format. It is stored inside the action structure itself.

.TP
.BI since " MSTIME"
When dumping large number of actions, a millisecond time-filter can be
specified
.IR MSTIME "."
The
.I MSTIME
is a millisecond count since last time a packet hit the action.
As an example specifying "since 20000" implies to dump all actions
that have seen packets in the last 20 seconds. This option is useful
when the kernel has a large number of actions and you are only interested
in recently used actions.

.TP
.I CONTROL
The
.I CONTROL
indicates how
.B tc
should proceed after executing the action. Any of the following are valid:
.RS
.TP
.B reclassify
Restart the classifiction by jumping back to the first filter attached to
the action's parent.
.TP
.B pipe
Continue with the next action. This is the default control.
.TP
.B drop
Drop the packed without running any further actions.
.TP
.B continue
Continue the classification with the next filter.
.TP
.B pass
Return to the calling qdisc for packet processing, and end classification of
this packet.
.RE

.SH SEE ALSO
.BR tc (8),
.BR tc-bpf (8),
.BR tc-connmark (8),
.BR tc-csum (8),
.BR tc-ife (8),
.BR tc-mirred (8),
.BR tc-nat (8),
.BR tc-pedit (8),
.BR tc-police (8),
.BR tc-simple (8),
.BR tc-skbedit (8),
.BR tc-skbmod (8),
.BR tc-tunnel_key (8),
.BR tc-vlan (8),
.BR tc-xt (8)
