From 957dbe6fdc10ab6e25e90af503e78fc8c8c49b72 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Mon, 14 Oct 2019 11:05:42 +0200 Subject: include: add MNL_SOCKET_DUMP_SIZE definition Add definition to recommend a new buffer size for netlink dumps. Details are available here: commit d35c99ff77ecb2eb239731b799386f3b3637a31e Author: Eric Dumazet Date: Thu Oct 6 04:13:18 2016 +0900 netlink: do not enter direct reclaim from netlink_dump() iproute2 is using 32 KBytes buffer in netlink dumps to speed up netlink dumps for a while. Let's recommend this buffer size through this new definition. Update examples too. Signed-off-by: Pablo Neira Ayuso --- examples/netfilter/nfct-dump.c | 2 +- examples/rtnl/rtnl-addr-dump.c | 4 ++-- examples/rtnl/rtnl-link-dump.c | 4 ++-- examples/rtnl/rtnl-link-dump2.c | 4 ++-- examples/rtnl/rtnl-link-dump3.c | 4 ++-- examples/rtnl/rtnl-neigh-dump.c | 4 ++-- examples/rtnl/rtnl-route-dump.c | 4 ++-- include/libmnl/libmnl.h | 1 + 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/examples/netfilter/nfct-dump.c b/examples/netfilter/nfct-dump.c index 114af61..cb8e52c 100644 --- a/examples/netfilter/nfct-dump.c +++ b/examples/netfilter/nfct-dump.c @@ -263,8 +263,8 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(void) { + char buf[MNL_SOCKET_DUMP_SIZE]; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct nfgenmsg *nfh; uint32_t seq, portid; diff --git a/examples/rtnl/rtnl-addr-dump.c b/examples/rtnl/rtnl-addr-dump.c index b92b75f..675e9b0 100644 --- a/examples/rtnl/rtnl-addr-dump.c +++ b/examples/rtnl/rtnl-addr-dump.c @@ -76,12 +76,12 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(int argc, char *argv[]) { + char buf[MNL_SOCKET_DUMP_SIZE]; + unsigned int seq, portid; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct rtgenmsg *rt; int ret; - unsigned int seq, portid; if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); diff --git a/examples/rtnl/rtnl-link-dump.c b/examples/rtnl/rtnl-link-dump.c index f5d6312..031346f 100644 --- a/examples/rtnl/rtnl-link-dump.c +++ b/examples/rtnl/rtnl-link-dump.c @@ -81,12 +81,12 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(void) { + char buf[MNL_SOCKET_DUMP_SIZE]; + unsigned int seq, portid; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct rtgenmsg *rt; int ret; - unsigned int seq, portid; nlh = mnl_nlmsg_put_header(buf); nlh->nlmsg_type = RTM_GETLINK; diff --git a/examples/rtnl/rtnl-link-dump2.c b/examples/rtnl/rtnl-link-dump2.c index b3ca3fa..890e51a 100644 --- a/examples/rtnl/rtnl-link-dump2.c +++ b/examples/rtnl/rtnl-link-dump2.c @@ -54,12 +54,12 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(void) { + char buf[MNL_SOCKET_DUMP_SIZE]; + unsigned int seq, portid; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct rtgenmsg *rt; int ret; - unsigned int seq, portid; nlh = mnl_nlmsg_put_header(buf); nlh->nlmsg_type = RTM_GETLINK; diff --git a/examples/rtnl/rtnl-link-dump3.c b/examples/rtnl/rtnl-link-dump3.c index 2521214..a381da1 100644 --- a/examples/rtnl/rtnl-link-dump3.c +++ b/examples/rtnl/rtnl-link-dump3.c @@ -54,12 +54,12 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(void) { + char buf[MNL_SOCKET_DUMP_SIZE]; + unsigned int seq, portid; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct rtgenmsg *rt; int ret; - unsigned int seq, portid; nlh = mnl_nlmsg_put_header(buf); nlh->nlmsg_type = RTM_GETLINK; diff --git a/examples/rtnl/rtnl-neigh-dump.c b/examples/rtnl/rtnl-neigh-dump.c index f4d5000..786e31d 100644 --- a/examples/rtnl/rtnl-neigh-dump.c +++ b/examples/rtnl/rtnl-neigh-dump.c @@ -99,12 +99,12 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(int argc, char *argv[]) { + char buf[MNL_SOCKET_DUMP_SIZE]; + unsigned int seq, portid; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct rtgenmsg *rt; int ret; - unsigned int seq, portid; if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); diff --git a/examples/rtnl/rtnl-route-dump.c b/examples/rtnl/rtnl-route-dump.c index 17da80b..02ac6b2 100644 --- a/examples/rtnl/rtnl-route-dump.c +++ b/examples/rtnl/rtnl-route-dump.c @@ -298,12 +298,12 @@ static int data_cb(const struct nlmsghdr *nlh, void *data) int main(int argc, char *argv[]) { + char buf[MNL_SOCKET_DUMP_SIZE]; + unsigned int seq, portid; struct mnl_socket *nl; - char buf[MNL_SOCKET_BUFFER_SIZE]; struct nlmsghdr *nlh; struct rtmsg *rtm; int ret; - unsigned int seq, portid; if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); diff --git a/include/libmnl/libmnl.h b/include/libmnl/libmnl.h index 0331da7..4bd0b92 100644 --- a/include/libmnl/libmnl.h +++ b/include/libmnl/libmnl.h @@ -18,6 +18,7 @@ extern "C" { #define MNL_SOCKET_AUTOPID 0 #define MNL_SOCKET_BUFFER_SIZE (sysconf(_SC_PAGESIZE) < 8192L ? sysconf(_SC_PAGESIZE) : 8192L) +#define MNL_SOCKET_DUMP_SIZE 32768 struct mnl_socket; -- cgit v1.2.3