summaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* include: cache copy of can.h and can/netlink.hDario Binacchi2023-05-284-2/+486
| | | | | | | | Ensure that rtnl-link-can example compiles in any installation. These headers are not installed in the system. Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Signed-off-by: Florian Westphal <fw@strlen.de>
* include: add MNL_SOCKET_DUMP_SIZE definitionPablo Neira Ayuso2019-10-141-0/+1
| | | | | | | | | | | | | | | | | Add definition to recommend a new buffer size for netlink dumps. Details are available here: commit d35c99ff77ecb2eb239731b799386f3b3637a31e Author: Eric Dumazet <edumazet@google.com> 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 <pablo@netfilter.org>
* callback: mark cb_ctl_array 'const' in mnl_cb_run2()Guillaume Nault2016-08-081-1/+2
| | | | | | | | | | | | | | | | | Users of mnl_cb_run2() would typically pass a 'static const' array as cb_ctl_array parameter. Unfortunately this triggers a compiler warning because the prototype doesn't declare cb_ctl_array with the 'const' qualifier. Since mnl_cb_run2() and __mnl_cb_run() don't modify cb_ctl_array (and don't have any reason to do so in the future), we can mark this parameter as 'const'. There should be no impact on existing users beyond removing the compiler warning when using a constant array. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* socket: introduce mnl_socket_open2()Guillaume Nault2015-10-041-1/+2
| | | | | | | | Define mnl_socket_open2() so that user can pass a set of SOCK_* flags at socket creation time. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* header: use sysconf() instead of getpagesize()Markus Teich2015-03-021-1/+1
| | | | | | | The sysconf(_SC_PAGESIZE) call is more portable since it does not need _BSD_SOURCE defined. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* socket: creating a struct mnl_socket from a pre-existing socketKen-ichirou MATSUZAWA2014-09-251-0/+1
| | | | | | | | | This patch defines a new function mnl_socket_fdopen() which creates a struct mnl_socket object from a pre-existing socket like obtained from other process and different domain/type from the same prodess. Signed-off-by: Ken-ichirou MATSUZAWA <chamas@h4.dion.ne.jp> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* include: cache copy of include/linux/socket.hPablo Neira Ayuso2014-06-132-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | This fixes compilation in Debian Squeeze: CC attr.lo In file included from ../include/libmnl/libmnl.h:9, from socket.c:10: ../include/linux/netlink.h:35: error: expected specifier-qualifier-list before ‘__kernel_sa_family_t’ In file included from ../include/libmnl/libmnl.h:9, from callback.c:11: ../include/linux/netlink.h:35: error: expected specifier-qualifier-list before ‘__kernel_sa_family_t’ socket.c: In function ‘mnl_socket_get_portid’: socket.c:102: error: ‘const struct sockaddr_nl’ has no member named ‘nl_pid’ socket.c: In function ‘mnl_socket_bind’: socket.c:146: error: ‘struct sockaddr_nl’ has no member named ‘nl_family’ socket.c:147: error: ‘struct sockaddr_nl’ has no member named ‘nl_groups’ socket.c:148: error: ‘struct sockaddr_nl’ has no member named ‘nl_pid’ socket.c:163: error: ‘struct sockaddr_nl’ has no member named ‘nl_family’ socket.c: In function ‘mnl_socket_sendto’: socket.c:184: error: unknown field ‘nl_family’ specified in initializer socket.c:185: warning: excess elements in struct initializer socket.c:185: warning: (near initialization for ‘snl’) Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* include: don't force compiler to enter C++11 modePablo Neira Ayuso2013-07-161-8/+3
| | | | | | | | | | | Thomas reports that g++ forces you to enable C++11 mode if you want to use <cstdint>. Tested with g++ (GCC) 4.4.4. He reports that this compiles fine without the special headers. So let's get rid of them. This reverts bb8c40e. Reported-by: Thomas Jarosch <thomas.jarosch@intra2net.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Tested-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
* include: cache copy of nfnetlink_conntrack.hPablo Neira Ayuso2013-06-113-0/+254
| | | | | | | To ensure that examples compile in any installation. This header is not installed in the system. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* headers: update netlink.h to 3.9Stephen Hemminger2013-03-261-5/+10
| | | | | | | | Use sanitized kernel header from 3.9 upstream kernel. Reported-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* parse: add mnl_attr_for_each_payloadlibmnl-1.0.3Pablo Neira Ayuso2012-05-181-0/+6
| | | | | | | | | | | | This function allows you to parse the payload of the Netlink message. Thus, you can skip the headers and go down to the part of the message you want to parse. This patch has updated the LIBVERSION and it also bumps the version to 1.0.3, in case that someone wants to package some snapshot, not to mess with the new symbol we have added. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* include: use sanitized header from headers_installJan Engelhardt2011-03-171-127/+1
| | | | | Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* header: fix invalid use of type void * in arithmetic of mnl_for_each_nest(...)Pablo Neira Ayuso2010-12-301-2/+2
| | | | | | | | | | | | | This patch fixes the following warnings: netlink.c:121: warning: pointer of type ‘void *’ used in arithmetic netlink.c:121: warning: pointer of type ‘void *’ used in subtraction We cannot use type void * for pointer arithmetic operations. This was introduced in 478dc5f4ab8d0a639d1bafe3bd53ff3309727836 Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* header: fix signess issues in MNL_SOCKET_BUFFER_SIZEPablo Neira Ayuso2010-12-251-1/+1
| | | | | | | | | This patch fixes the following compilation warning: warning: comparison between signed and unsigned integer expressions warning: signed and unsigned type in conditional expression Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* headers: add local copy of linux/netlink.h to libmnlPablo Neira Ayuso2010-12-223-1/+276
| | | | | | | Davem suggested to add a copy of linux/netlink.h to avoid compilation problems in all cases scenarios. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* include: add missing unistd.hJan Engelhardt2010-12-201-0/+1
| | | | | | | | | | | | When a project uses MNL_SOCKET_BUFFER_SIZE without having included unistd.h, it gets: mystuff.c:36:2: warning: implicit declaration of function "getpagesize" It is libmnl's job to include this, since mystuff.c did not use getpagesize anywhere. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* nlmsg: add new message batching infrastructurePablo Neira Ayuso2010-12-171-0/+11
| | | | | | | | | This patch adds the new message batching infrastructure that allows to store several messages into one single datagram. This patch includes an example for ctnetlink. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* header: missing parenthesis in MNL_SOCKET_BUFFER_SIZE definitionPablo Neira Ayuso2010-12-171-1/+1
| | | | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* header: use getpagesize() for MNL_SOCKET_BUFFER_SIZEPablo Neira Ayuso2010-12-171-1/+1
| | | | | | | | This system call returns PAGE_SIZE which depends on the architecture. See linux/netlink.h for more information on the appropriate datagram size for netlink. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* attr: add put function that allows to check buffer sizePablo Neira Ayuso2010-12-171-0/+10
| | | | | | | | | | This patch adds a set of function that allows to check the size of the buffer. This is useful for attribute batching. This is strongly based on a patch from Jozsef. Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* header: add MNL_ARRAY_SIZE(x)Pablo Neira Ayuso2010-12-091-0/+4
| | | | | | | This patch adds MNL_ARRAY_SIZE(x) which likely to defined over and over again if you use mnl_cb_run2(...). Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* attr: add mnl_attr_nest_cancel()Pablo Neira Ayuso2010-11-221-0/+1
| | | | | | | This patch adds mnl_attr_nest_cancel() that allows to cancel the current nest that we are building. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* build: tag function headers rather than decls as exportedJan Engelhardt2010-11-191-54/+48
| | | | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* nlmsg: remove unexisting mnl_nlmsg_total_sizePablo Neira Ayuso2010-11-191-1/+0
| | | | | | | Remove function whose implementation does not exist. It seems to me like a leftover from the early days of the library. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* socket: propagate sendto/recvmsg's return typesJan Engelhardt2010-11-161-2/+2
| | | | | | | sendto/recvfrom return ssize_t, so libmnl should not truncate the result range. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* attr: avoid multiple definition of hidden variableJan Engelhardt2010-11-161-13/+11
| | | | | | | | | | When nesting two mnl_attr_for_each loops, the __len__ variable will be declared twice, eliciting a warning when -Wshadow is turned on. There can also be warnings in pre-C99 because declarations and code are mixed. Do without any temporaries that are not explicitly specified as macro parameters. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* include: use C++ headers in C++ modeJan Engelhardt2010-11-151-5/+8
| | | | | Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* src: implement both GCC visibility support and export scriptCristian Rodríguez2010-11-151-49/+55
| | | | | | | | | Read "How to write shared libraries" from Ulrich Drepper for more information on this patch. Specifically section 2.2: Export control and section 3: Maintaining APIs and ABIs. Signed-off-by: Cristian Rodríguez <cristian.rodriguez@opensuse.org> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* nlmsg: use bool for mnl_nlmsg_ok()Jan Engelhardt2010-11-111-2/+2
| | | | | Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* nlmsg: rework mnl_nlmsg_fprintfPablo Neira Ayuso2010-11-071-2/+2
| | | | | | | | This patch reworks mnl_nlmsg_fprintf. It breaks backward compatibility of this function, there was no way to improve it without doing so (and we are still in time to break thing, BTW). Signed-off-bu: Pablo Neira Ayuso <pablo@netfilter.org>
* attr: rename str_null from NULL awayJan Engelhardt2010-10-251-1/+1
| | | | | | | | | | A small little pedantism: NULL (as in, the pointer) isn't NUL (as in, the character with value zero, '\0'). I propose to rename it to strz, for the zero-terminated string (sometimes referred to as ASCIZ string, but of course C isn't tied to ASCII). Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* nlmsg: use bool return type for yes-no functionsJan Engelhardt2010-10-251-2/+5
| | | | | Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* include: add cplusplus guards for externJan Engelhardt2010-10-221-0/+8
| | | | Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* socket: use more appropriate types for mnl_socket_bindJan Engelhardt2010-10-221-1/+1
| | | | | | | groups, being a bitmask, should be unsigned; and let's also use pid_t for pid. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* callback: mnl_cb_run should use a void *Jan Engelhardt2010-10-221-2/+2
| | | | | | Because in most cases, it won't be a nul-terminated string :) Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* attr: string functions should take char *Jan Engelhardt2010-10-221-2/+2
| | | | | | | | I do not quite see the point of using strlen in conjunction with non-string data; so let's use char * as argument types to catch misuses. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* include: consistent usage of "extern"Jan Engelhardt2010-10-221-1/+1
| | | | Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
* src: define MNL_SOCKET_BUFFER_SIZE to 8192ULPablo Neira Ayuso2010-10-211-0/+1
| | | | | | | | | | | | | | | | Davem spotted during the Netfilter Workshop that user-space applications should use 8KB buffers for recv(). I accidentally found that NFLOG is not following this approach (in this case we're using 131072 bytes messages), we have to document this. Anyway, according to linux/netlink.h (and to complete this log message): "skb should fit one page. This choice is good for headerless malloc. But we should limit to 8K so that userspace does not have to use enormous buffer sizes on recvmsg() calls just to avoid MSG_TRUNC when PAGE_SIZE is very large." Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* socket: remove mnl_socket_sendmsg() and mnl_socket_recvmsg()Pablo Neira Ayuso2010-06-251-2/+0
| | | | | | | | These functions are too simple wrappers that bloat the library. We can use mnl_socket_get_fd() to obtain the file descriptor and invoke message-oriented system call instead. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* nlmsg: use size_t instead of int for several input parametersPablo Neira Ayuso2010-05-171-4/+4
| | | | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* add helpers to nest attributesPablo Neira Ayuso2010-04-301-0/+4
| | | | | | Based on code from Jozsef Kadlecsik and its ipset-5 implementation. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* remove references to 'generic' in header filePablo Neira Ayuso2010-04-221-3/+3
| | | | | | | The term 'Generic' is used in GeNetlink, we don't want any confusion with it. Better remove it. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* use size_t to indicate the buffer size in mnl_cb_run*()Pablo Neira Ayuso2010-04-221-2/+2
| | | | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* review data types for input parameters of mnl_attr_*() functionsPablo Neira Ayuso2010-04-221-10/+10
| | | | | | | | | | This patch includes the following changes: * use uint16_t for attribute types in mnl_attr_put_*() function * use uint16_t for maximun type in mnl_attr_type_valid(...) * use size_t for attribute size validation in mnl_attr_validate2(...) * use unsigned int for offset in mnl_attr_parse(...) instead of int Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* add mnl_nlmsg_fprintf() function for debugging purposesPablo Neira Ayuso2010-04-191-1/+2
| | | | | | This function is still quite preliminary, comments welcome! Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* fix for mnl_attr_for_each_nested()Jozsef Kadlecsik2010-04-161-2/+2
| | | | | Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* remove mnl_nlmsg_get_len() functionPablo Neira Ayuso2010-04-121-2/+1
| | | | | | | | | Remove mnl_nlmsg_get_len() since it returns a field of a structure that is public (struct nlmsghdr). We can directly access the header fields and they are not likely to change in the future (at least for this version of Netlink I think). Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* more consistency name issues: rename get_data*() to get_payload*()Pablo Neira Ayuso2010-04-051-6/+6
| | | | | | This includes renaming get_tail() to get_payload_tail() Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* rename mnl_nlmsg_payload_size() to mnl_nlmsg_get_payload_len() for consistencyPablo Neira Ayuso2010-04-051-2/+2
| | | | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
* rename mnl_attr_type_ok() by mnl_attr_type_valid() for consistencyPablo Neira Ayuso2010-04-051-1/+1
| | | | | | | better to rename this function since its return value is not similar to other _ok() functions, for consistency. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>