Romain Bellan
cb8aa9a3af
netfilter: ctnetlink: add kernel side filtering for dump
...
Conntrack dump does not support kernel side filtering (only get exists,
but it returns only one entry. And user has to give a full valid tuple)
It means that userspace has to implement filtering after receiving many
irrelevant entries, consuming resources (conntrack table is sometimes
very huge, much more than a routing table for example).
This patch adds filtering in kernel side. To achieve this goal, we:
* Add a new CTA_FILTER netlink attributes, actually a flag list to
parametize filtering
* Convert some *nlattr_to_tuple() functions, to allow a partial parsing
of CTA_TUPLE_ORIG and CTA_TUPLE_REPLY (so nf_conntrack_tuple it not
fully set)
Filtering is now possible on:
* IP SRC/DST values
* Ports for TCP and UDP flows
* IMCP(v6) codes types and IDs
Filtering is done as an "AND" operator. For example, when flags
PROTO_SRC_PORT, PROTO_NUM and IP_SRC are sets, only entries matching all
values are dumped.
Changes since v1:
Set NLM_F_DUMP_FILTERED in nlm flags if entries are filtered
Changes since v2:
Move several constants to nf_internals.h
Move a fix on netlink values check in a separate patch
Add a check on not-supported flags
Return EOPNOTSUPP if CDA_FILTER is set in ctnetlink_flush_conntrack
(not yet implemented)
Code style issues
Changes since v3:
Fix compilation warning reported by kbuild test robot
Changes since v4:
Fix a regression introduced in v3 (returned EINVAL for valid netlink
messages without CTA_MARK)
Changes since v5:
Change definition of CTA_FILTER_F_ALL
Fix a regression when CTA_TUPLE_ZONE is not set
Signed-off-by: Romain Bellan <romain.bellan@wifirst.fr >
Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr >
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org >
2020-05-27 22:20:34 +02:00
..
2020-04-06 14:31:25 +02:00
2020-04-27 02:07:40 -04:00
2020-03-18 16:35:48 -07:00
2020-04-30 12:56:38 -07:00
2020-04-09 00:12:48 +09:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:16:59 +02:00
2019-07-16 13:16:59 +02:00
2020-05-27 22:20:34 +02:00
2019-10-26 12:36:42 +02:00
2019-09-13 12:33:06 +02:00
2019-12-17 22:59:31 +01:00
2019-09-02 11:20:17 -07:00
2019-07-16 13:17:00 +02:00
2019-07-16 13:16:59 +02:00
2019-06-19 17:09:52 +02:00
2019-09-13 12:33:06 +02:00
2019-07-16 13:16:59 +02:00
2019-08-27 18:07:03 +02:00
2019-05-30 11:26:32 -07:00
2020-05-27 22:20:34 +02:00
2019-07-16 13:16:59 +02:00
2020-01-08 23:31:22 +01:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:17:00 +02:00
2020-05-27 22:20:34 +02:00
2020-05-27 22:20:34 +02:00
2020-01-24 18:26:53 +01:00
2019-08-13 12:08:48 +02:00
2020-02-17 10:55:14 +01:00
2019-05-30 14:18:18 -07:00
2019-07-16 13:16:59 +02:00
2019-05-31 18:02:45 +02:00
2019-07-16 13:16:59 +02:00
2019-05-30 11:26:32 -07:00
2020-05-01 17:02:27 -07:00
2019-07-16 13:16:59 +02:00
2019-09-13 12:33:06 +02:00
2019-05-24 17:37:51 +02:00
2019-09-10 22:44:29 +02:00
2020-05-12 13:19:08 +02:00
2019-11-15 23:44:47 +01:00
2020-03-30 19:40:46 -07:00
2020-05-15 13:48:59 -07:00
2020-05-27 22:20:34 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-04-27 02:07:40 -04:00
2019-07-16 13:16:59 +02:00
2019-09-13 12:33:06 +02:00
2019-07-16 13:16:59 +02:00
2019-06-22 08:59:24 -04:00
2019-07-16 13:16:59 +02:00
2019-04-11 20:59:34 +02:00
2020-04-26 23:57:18 +02:00
2019-06-22 08:59:24 -04:00
2019-07-16 13:16:59 +02:00
2019-07-16 13:16:59 +02:00
2020-03-29 16:28:29 +02:00
2020-03-04 02:27:18 +01:00
2020-04-27 22:20:09 +02:00
2019-07-05 21:34:47 +02:00
2020-03-27 18:41:52 +01:00
2019-06-19 17:09:55 +02:00
2020-03-15 15:20:16 +01:00
2020-03-04 02:28:08 +01:00
2019-05-24 17:37:51 +02:00
2019-08-26 11:06:07 +02:00
2020-04-29 21:17:57 +02:00
2020-03-29 16:28:29 +02:00
2020-01-24 20:54:29 +01:00
2020-03-15 15:20:16 +01:00
2019-08-26 11:01:00 +02:00
2020-03-18 16:35:48 -07:00
2020-03-06 18:00:43 +01:00
2019-04-08 23:01:42 +02:00
2019-12-09 13:14:03 +01:00
2019-06-19 17:09:55 +02:00
2019-10-01 18:42:15 +02:00
2019-06-19 17:09:55 +02:00
2019-12-09 10:36:44 -08:00
2019-09-10 22:44:29 +02:00
2020-03-30 02:05:38 +02:00
2020-03-30 21:17:53 +02:00
2019-06-19 17:09:55 +02:00
2019-09-03 22:53:56 +02:00
2019-06-19 17:09:55 +02:00
2020-01-05 10:06:22 +01:00
2020-03-25 12:24:33 -07:00
2019-07-16 13:17:03 +02:00
2019-08-13 12:10:01 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-04-05 23:26:36 +02:00
2019-12-09 10:36:44 -08:00
2019-12-26 17:41:34 +01:00
2020-04-28 00:53:54 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:37:15 +02:00
2020-01-18 21:18:41 +01:00
2020-03-04 02:28:17 +01:00
2019-06-19 17:09:55 +02:00
2019-09-03 19:05:00 +02:00
2019-12-09 13:14:03 +01:00
2019-12-09 10:36:44 -08:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-04-05 23:26:36 +02:00
2020-03-15 15:20:16 +01:00
2020-03-15 15:27:46 +01:00
2020-04-09 00:12:48 +09:00
2020-04-09 00:12:48 +09:00
2020-03-15 15:27:46 +01:00
2020-05-12 13:19:34 +02:00
2019-09-02 23:20:59 +02:00
2019-09-10 22:35:37 +02:00
2019-12-26 13:11:40 -08:00
2020-03-15 15:20:16 +01:00
2019-06-19 17:09:55 +02:00
2019-06-28 19:30:50 +02:00
2020-03-04 02:27:18 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2018-02-14 21:05:38 +01:00
2019-06-19 17:09:55 +02:00
2019-09-13 12:33:06 +02:00
2019-05-21 11:28:45 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-03-15 15:20:16 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-11-05 14:03:11 -08:00
2020-04-05 23:26:37 +02:00
2019-05-30 11:26:32 -07:00
2019-06-25 01:32:59 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:38 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-08-19 09:34:21 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 11:28:45 +02:00
2019-06-25 01:32:59 +02:00
2019-09-13 12:32:48 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-12-09 10:36:44 -08:00
2019-06-19 17:09:55 +02:00
2020-03-15 15:20:16 +01:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2020-03-15 15:20:16 +01:00
2019-08-13 12:14:26 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-22 08:59:24 -04:00
2019-05-21 10:50:45 +02:00
2019-05-21 11:28:40 +02:00
2019-11-15 23:44:45 +01:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00