* [PATCH nft 1/2] doc: update meta expression
@ 2016-09-08 22:16 Florian Westphal
2016-09-08 22:16 ` [PATCH nft 2/2] doc: payload and conntrack statement Florian Westphal
2016-09-08 22:23 ` [PATCH nft 1/2] doc: update meta expression Pablo Neira Ayuso
0 siblings, 2 replies; 5+ messages in thread
From: Florian Westphal @ 2016-09-08 22:16 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
Signed-off-by: Florian Westphal <fw@strlen.de>
---
doc/nft.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/doc/nft.xml b/doc/nft.xml
index 9eed883..6297674 100644
--- a/doc/nft.xml
+++ b/doc/nft.xml
@@ -1001,6 +1001,7 @@ filter output ip6 daddr ::1
<arg>iifgroup</arg>
<arg>oifgroup</arg>
<arg>cgroup</arg>
+ <arg>random</arg>
</group>
</cmdsynopsis>
</para>
@@ -1128,6 +1129,11 @@ filter output ip6 daddr ::1
<entry>control group id</entry>
<entry>integer (32 bits)</entry>
</row>
+ <row>
+ <entry>random</entry>
+ <entry>pseudo-random number</entry>
+ <entry>integer (32 bits)</entry>
+ </row>
</tbody>
</tgroup>
</table>
--
2.7.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH nft 2/2] doc: payload and conntrack statement
2016-09-08 22:16 [PATCH nft 1/2] doc: update meta expression Florian Westphal
@ 2016-09-08 22:16 ` Florian Westphal
2016-09-08 22:30 ` Pablo Neira Ayuso
2016-09-08 22:23 ` [PATCH nft 1/2] doc: update meta expression Pablo Neira Ayuso
1 sibling, 1 reply; 5+ messages in thread
From: Florian Westphal @ 2016-09-08 22:16 UTC (permalink / raw)
To: netfilter-devel; +Cc: Florian Westphal
Signed-off-by: Florian Westphal <fw@strlen.de>
---
doc/nft.xml | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 81 insertions(+), 1 deletion(-)
diff --git a/doc/nft.xml b/doc/nft.xml
index 6297674..3b215f8 100644
--- a/doc/nft.xml
+++ b/doc/nft.xml
@@ -2037,7 +2037,7 @@ filter output oif eth0
</row>
<row>
<entry>label</entry>
- <entry>Connection tracking label</entry>
+ <entry>Connection tracking label bit or symbolic name defined in connlabel.conf in the nftables include path</entry>
<entry>ct_label</entry>
</row>
<row>
@@ -2207,6 +2207,29 @@ filter input iif eth0 drop
</para>
</refsect2>
<refsect2>
+ <title>Payload statement</title>
+ <para>
+ The payload statement alters packet content.
+ It can be used for example to set ip DSCP (differv) header field or ipv6 flow labels.
+ </para>
+ <para>
+ <example>
+ <title>route some packets instead of bridging</title>
+ <programlisting>
+# redirect tcp:http from 192.160.0.0/16 to local machine for routing instead of bridging
+# assumes 00:11:22:33:44:55 is local MAC address.
+bridge input meta iif eth0 ip saddr 192.168.0.0/16 tcp dport 80 meta pkttype set unicast ether daddr set 00:11:22:33:44:55
+ </programlisting>
+ </example>
+ <example>
+ <title>Set IPv4 DSCP header field</title>
+ <programlisting>
+ip forward ip dscp set 42
+ </programlisting>
+ </example>
+ </para>
+ </refsect2>
+ <refsect2>
<title>Log statement</title>
<para>
<cmdsynopsis>
@@ -2390,6 +2413,63 @@ filter input iif eth0 drop
</refsect2>
<refsect2>
+ <title>Conntrack statement</title>
+ <para>
+ The conntrack statement can be used to set the conntrack mark and conntrack labels.
+ </para>
+ <para>
+ <cmdsynopsis>
+ <command>ct</command>
+ <group choice="req">
+ <arg>mark</arg>
+ <arg>label</arg>
+ </group>
+ <arg choice="none">set</arg>
+ <replaceable>value</replaceable>
+ </cmdsynopsis>
+ </para>
+ <para>
+ The ct statement sets meta data associated with a connection.
+ </para>
+ <para>
+ <table frame="all">
+ <title>Meta statement types</title>
+ <tgroup cols='3' align='left' colsep='1' rowsep='1'>
+ <colspec colname='c1'/>
+ <colspec colname='c2'/>
+ <colspec colname='c3'/>
+ <thead>
+ <row>
+ <entry>Keyword</entry>
+ <entry>Description</entry>
+ <entry>Value</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>mark</entry>
+ <entry>Connection tracking mark</entry>
+ <entry>mark</entry>
+ </row>
+ <row>
+ <entry>label</entry>
+ <entry>Connection tracking label</entry>
+ <entry>label</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <para>
+ <example>
+ <title>save packet nfmark in conntrack</title>
+ <programlisting>
+ct set mark meta mark
+ </programlisting>
+ </example>
+ </para>
+ </refsect2>
+ <refsect2>
<title>Meta statement</title>
<para>
A meta statement sets the value of a meta expression.
--
2.7.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH nft 1/2] doc: update meta expression
2016-09-08 22:16 [PATCH nft 1/2] doc: update meta expression Florian Westphal
2016-09-08 22:16 ` [PATCH nft 2/2] doc: payload and conntrack statement Florian Westphal
@ 2016-09-08 22:23 ` Pablo Neira Ayuso
1 sibling, 0 replies; 5+ messages in thread
From: Pablo Neira Ayuso @ 2016-09-08 22:23 UTC (permalink / raw)
To: Florian Westphal; +Cc: netfilter-devel
On Fri, Sep 09, 2016 at 12:16:55AM +0200, Florian Westphal wrote:
> Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Thanks Florian!
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH nft 2/2] doc: payload and conntrack statement
2016-09-08 22:16 ` [PATCH nft 2/2] doc: payload and conntrack statement Florian Westphal
@ 2016-09-08 22:30 ` Pablo Neira Ayuso
2016-09-08 23:49 ` Florian Westphal
0 siblings, 1 reply; 5+ messages in thread
From: Pablo Neira Ayuso @ 2016-09-08 22:30 UTC (permalink / raw)
To: Florian Westphal; +Cc: netfilter-devel, nevola
On Fri, Sep 09, 2016 at 12:16:56AM +0200, Florian Westphal wrote:
> Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
BTW, related to payload mangling, Laura sent me this report:
When adding this rule:
# nft add rule netdev filter ingress \
ip daddr 192.168.0.92 tcp dport 80 \
ether daddr set 00:03:2d:2b:74:ec fwd to enp3s0
The listing shows:
# nft list ruleset
table netdev filter {
chain ingress {
type filter hook ingress device enp0s25 priority 0; policy accept;
ip daddr 192.168.0.92 tcp dport http ether daddr set ec:74:2b:2d:03:00 fwd to "enp3s0"
^^^^^^^^^^^^^^^^^
Note that the MAC address is reversed, probably something wrong in the
delinearize path. In case you have some spare cycle, I didn't look at
this yet.
Another issue she also reported another problem with integers from
sets when using jhash and numgen, actually it's again the lack of
specific endianess of integer_type that is causing the problem so it
is not specific of the new expression.
# nft --debug=netlink add rule x y meta mark set meta cpu map { 0 : 1, 1 : 2 }
__map%d x b
__map%d x 0
element 00000000 : 00000001 0 [end] element 01000000 : 00000002 0 [end]
^^^^^^^^
note this is also in the wrong byteorder. This one, I'm working on it.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH nft 2/2] doc: payload and conntrack statement
2016-09-08 22:30 ` Pablo Neira Ayuso
@ 2016-09-08 23:49 ` Florian Westphal
0 siblings, 0 replies; 5+ messages in thread
From: Florian Westphal @ 2016-09-08 23:49 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: Florian Westphal, netfilter-devel, nevola
Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> On Fri, Sep 09, 2016 at 12:16:56AM +0200, Florian Westphal wrote:
> > Signed-off-by: Florian Westphal <fw@strlen.de>
>
> Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
>
> BTW, related to payload mangling, Laura sent me this report:
>
> When adding this rule:
>
> # nft add rule netdev filter ingress \
> ip daddr 192.168.0.92 tcp dport 80 \
> ether daddr set 00:03:2d:2b:74:ec fwd to enp3s0
>
> The listing shows:
>
> # nft list ruleset
> table netdev filter {
> chain ingress {
> type filter hook ingress device enp0s25 priority 0; policy accept;
> ip daddr 192.168.0.92 tcp dport http ether daddr set ec:74:2b:2d:03:00 fwd to "enp3s0"
> ^^^^^^^^^^^^^^^^^
>
> Note that the MAC address is reversed, probably something wrong in the
> delinearize path. In case you have some spare cycle, I didn't look at
> this yet.
Too late for now, but it looks like the postprocessing
for payload statements does not set byteorder of the immediate value
(its 0/undefined).
For ip addresses this doesn't matter as 0 is treated like BIG_ENDIAN.
But ether_addr is set as HOST_ENDIAN.
The normal payload expression path contains conversion calls for this
case:
if (tmp->byteorder == BYTEORDER_HOST_ENDIAN)
mpz_switch_byteorder(tmp->value, tmp->len / BITS_PER_BYTE);
Will check more later today.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-09-08 23:49 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-08 22:16 [PATCH nft 1/2] doc: update meta expression Florian Westphal
2016-09-08 22:16 ` [PATCH nft 2/2] doc: payload and conntrack statement Florian Westphal
2016-09-08 22:30 ` Pablo Neira Ayuso
2016-09-08 23:49 ` Florian Westphal
2016-09-08 22:23 ` [PATCH nft 1/2] doc: update meta expression Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).