summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/genl/genl-family-get.c2
-rw-r--r--examples/netfilter/nf-queue.c2
-rw-r--r--examples/netfilter/nfct-event.c2
-rw-r--r--examples/rtnl/rtnl-link-dump.c2
-rw-r--r--examples/rtnl/rtnl-link-dump2.c2
-rw-r--r--examples/rtnl/rtnl-link-dump3.c2
-rw-r--r--examples/rtnl/rtnl-link-event.c2
-rw-r--r--examples/rtnl/rtnl-link-set.c2
-rw-r--r--examples/rtnl/rtnl-route-add.c2
-rw-r--r--examples/rtnl/rtnl-route-dump.c2
-rw-r--r--include/libmnl/libmnl.h1
-rw-r--r--src/socket.c7
12 files changed, 16 insertions, 12 deletions
diff --git a/examples/genl/genl-family-get.c b/examples/genl/genl-family-get.c
index 326755e..b015466 100644
--- a/examples/genl/genl-family-get.c
+++ b/examples/genl/genl-family-get.c
@@ -183,7 +183,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main(int argc, char *argv[])
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct genlmsghdr *genl;
int ret;
diff --git a/examples/netfilter/nf-queue.c b/examples/netfilter/nf-queue.c
index 1df004a..8b1a5e7 100644
--- a/examples/netfilter/nf-queue.c
+++ b/examples/netfilter/nf-queue.c
@@ -167,7 +167,7 @@ nfq_build_verdict(char *buf, int id, int queue_num, int verd)
int main(int argc, char *argv[])
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
int ret;
unsigned int portid, queue_num;
diff --git a/examples/netfilter/nfct-event.c b/examples/netfilter/nfct-event.c
index 9dcf6cc..c713946 100644
--- a/examples/netfilter/nfct-event.c
+++ b/examples/netfilter/nfct-event.c
@@ -208,7 +208,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main()
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
int ret;
nl = mnl_socket_open(NETLINK_NETFILTER);
diff --git a/examples/rtnl/rtnl-link-dump.c b/examples/rtnl/rtnl-link-dump.c
index 8bce803..d47d32e 100644
--- a/examples/rtnl/rtnl-link-dump.c
+++ b/examples/rtnl/rtnl-link-dump.c
@@ -69,7 +69,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main()
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct rtgenmsg *rt;
int ret;
diff --git a/examples/rtnl/rtnl-link-dump2.c b/examples/rtnl/rtnl-link-dump2.c
index ac3a6be..8189e7c 100644
--- a/examples/rtnl/rtnl-link-dump2.c
+++ b/examples/rtnl/rtnl-link-dump2.c
@@ -60,7 +60,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main()
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct rtgenmsg *rt;
int ret;
diff --git a/examples/rtnl/rtnl-link-dump3.c b/examples/rtnl/rtnl-link-dump3.c
index 6d06d7c..d8cacb4 100644
--- a/examples/rtnl/rtnl-link-dump3.c
+++ b/examples/rtnl/rtnl-link-dump3.c
@@ -60,7 +60,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main()
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct rtgenmsg *rt;
int ret;
diff --git a/examples/rtnl/rtnl-link-event.c b/examples/rtnl/rtnl-link-event.c
index aa51a1e..4aa11ef 100644
--- a/examples/rtnl/rtnl-link-event.c
+++ b/examples/rtnl/rtnl-link-event.c
@@ -68,7 +68,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main()
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
int ret;
nl = mnl_socket_open(NETLINK_ROUTE);
diff --git a/examples/rtnl/rtnl-link-set.c b/examples/rtnl/rtnl-link-set.c
index d5cf9b1..00afe27 100644
--- a/examples/rtnl/rtnl-link-set.c
+++ b/examples/rtnl/rtnl-link-set.c
@@ -18,7 +18,7 @@
int main(int argc, char *argv[])
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct ifinfomsg *ifm;
int ret;
diff --git a/examples/rtnl/rtnl-route-add.c b/examples/rtnl/rtnl-route-add.c
index 1f2d1a0..26105b3 100644
--- a/examples/rtnl/rtnl-route-add.c
+++ b/examples/rtnl/rtnl-route-add.c
@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
}
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct rtmsg *rtm;
diff --git a/examples/rtnl/rtnl-route-dump.c b/examples/rtnl/rtnl-route-dump.c
index 34c95cf..22395c4 100644
--- a/examples/rtnl/rtnl-route-dump.c
+++ b/examples/rtnl/rtnl-route-dump.c
@@ -199,7 +199,7 @@ static int data_cb(const struct nlmsghdr *nlh, void *data)
int main()
{
struct mnl_socket *nl;
- char buf[getpagesize()];
+ char buf[MNL_SOCKET_BUFFER_SIZE];
struct nlmsghdr *nlh;
struct rtmsg *rtm;
int ret;
diff --git a/include/libmnl/libmnl.h b/include/libmnl/libmnl.h
index 09099a1..f658428 100644
--- a/include/libmnl/libmnl.h
+++ b/include/libmnl/libmnl.h
@@ -11,6 +11,7 @@
*/
#define MNL_SOCKET_AUTOPID 0
+#define MNL_SOCKET_BUFFER_SIZE 8192UL /* see linux/netlink.h */
struct mnl_socket;
diff --git a/src/socket.c b/src/socket.c
index 08ac138..53f98c7 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -186,8 +186,11 @@ int mnl_socket_sendto(const struct mnl_socket *nl, const void *buf, size_t len)
*
* On error, it returns -1 and errno is appropriately set. If errno is set
* to ENOSPC, it means that the buffer that you have passed to store the
- * netlink message is small so you have received a truncated message. Make
- * sure your program set a buffer big enough to store the netlink message.
+ * netlink message is too small so you have received a truncated message.
+ * To avoid this you have to allocate a buffer of MNL_SOCKET_BUFFER_SIZE
+ * (which is 8KB, see linux/netlink.h for more information). Using this
+ * buffer size ensures that your buffer is big enough to store the netlink
+ * message without truncating it.
*/
int mnl_socket_recvfrom(const struct mnl_socket *nl, void *buf, size_t bufsiz)
{