summaryrefslogtreecommitdiff
path: root/built_in.h
AgeCommit message (Collapse)AuthorFilesLines
2018-03-06all: drop fmem{cpy,set}Tobias Klauser1-8/+0
There is no need to explicity use the builtins. According to [1], GCC will recognize mem{cpy,set} as built-in functions, unless the corresponding -fno-builtin-* option is specified (which is not the case for netsniff-ng). [1] https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2017-05-12built_in: don't redefine memcpy/memsetTobias Klauser1-6/+0
Redefining memset/memcpy causes problems when building with fortified headers on Alpine Linux. Instead of uncoditionally defining these, explicitely use fmemcpy/fmemset in performance critical paths and otherwise let the compiler decide about optimizations. Fixes #173 Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2017-05-10all: use <net/*> headers instead of <linux/*> where possibleTobias Klauser1-0/+16
The musl libc headers redefine some of the structs in linux/if_arp.h and linux/if_ether.h, leading to compilation errors. Fix those by using the libc provided versions of these headers and provide compatibility defines for those that aren't present in older glibc versions. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2016-02-03built_in: Include stddef.h to avoid redefinition of offsetof() macroTobias Klauser1-1/+2
The stddef.h header might define the offsetof() macro unconditionally, leading to the macro being redefined if built_in.h is included _before_ stddef.h. This will lead sparse to complain as follows: /usr/lib/gcc/x86_64-linux-gnu/4.8//include/stddef.h:413:9: warning: preprocessor token offsetof redefined ./built_in.h:151:10: this was the original definition Fix this by explicitly including stddef.h in built_in.h Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2015-04-07xmalloc: Add attribute warn_unused_result to allocation functionsTobias Klauser1-1/+5
Add the warn_unused_result GCC function attribute to all allocation functions in xmalloc. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2014-09-29built_in: Remove unused macro force_castTobias Klauser1-4/+0
The macro is unused and explicit cast should be used anyway. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2014-09-29netsniff-ng: Fix tpacketv2-only capturingTobias Klauser1-0/+7
We need to set up the RX ring depending on whether tpacket v3 is available or not. Otherwise end up setting its structure up for tpacket v3, even though only tpacket v2 is available. This should fix packet capturing for tpacket v2 (i.e. corrupted frames in pcap). Reported-by: Mike Reeves <luke@geekempire.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2014-08-15netsniff-ng: Conditionally define POLLRDNORM where it is usedTobias Klauser1-12/+0
Instead of defining POLLRDNORM in built_in.h if it isn't provided by system/kernel headers, define it in ring.h where its only user is. This way we make sure that <poll.h> is included before checking #ifndef POLLRDNORM. This fixes the following sparse warning: /usr/include/bits/poll.h:32:10: warning: preprocessor token POLLRDNORM redefined built_in.h:378:10: this was the original definition Also remove the defines for POLLWRNORM and POLLRDHUP which are not used anywhere in the code. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2014-04-12built_in: changed RUNTIME_PAGE_SIZE to use sysconf(_SC_PAGE_SIZE) instead of ↵Christian Wiese1-1/+1
getpagesize() getpagesize(2) is considered legacy and has been dropped with POSIX.1-2001. See discussion: https://github.com/netsniff-ng/netsniff-ng/pull/112 Signed-off-by: Christian Wiese <chris@opensde.org> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2014-04-12built_in: changed to use RUNTIME_PAGE_SIZE instead of PAGE_SIZEChristian Wiese1-5/+3
References: https://github.com/netsniff-ng/netsniff-ng/commit/453f6eb9d79dd5aa2812ef956b22723f0a493086 https://github.com/netsniff-ng/netsniff-ng/pull/112 Signed-off-by: Christian Wiese <chris@opensde.org> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2014-04-11built_in: changed to not unconditionally define PAGE_SIZEChristian Wiese1-1/+3
When building against musl libc I encountered following issue: --------------------------------------------------------------------------- In file included from xmalloc.h:6:0, from xmalloc.c:17: built_in.h:181:0: warning: "PAGE_SIZE" redefined [enabled by default] In file included from /usr/include/limits.h:8:0 --------------------------------------------------------------------------- According to the POSIX standard PAGE_SIZE should be defined in <limits.h> [1] which is the case with musl libc if for example _GNU_SOURCE or _BSD_SOURCE are defined which both is the case in netsniff-ng sources. On my i686 test build the interesting part of <bits/limits.h> which itself gets included by <limits.h> looks like this: --------------------------------------------------------------------------- #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #define PAGE_SIZE 4096 #define LONG_BIT 64 #endif --------------------------------------------------------------------------- Note: Besides that I noticed that currently getpagesize(2) is used, which is considered legacy and has been dropped with POSIX.1-2001 [2]. According to getpagesize(2) [2] portable applications should use sysconf(3) [3] By using getpagesize(2) unconditionally the intention was maybe to always use the run time configuration value of PAGE_SIZE as returned by the kernel. At least in the case of musl libc and applying this change this would not be the case anymore as the static PAGE_SIZE value from the header would be used! References: [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html [2] http://man7.org/linux/man-pages/man2/getpagesize.2.html [3] http://man7.org/linux/man-pages/man3/sysconf.3.html Signed-off-by: Christian Wiese <chris@opensde.org> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2014-04-10built_in: improved to define DEFFILEMODE if not provided by the libcChristian Wiese1-0/+4
musl libc doesn't provide the non-standard macros for common mode bit masks, which other libc implementations like glibc define in <sys/stat.h>. Compile time error when building against musl libc: -------------------------------------------------------------------------- netsniff-ng.c: In function 'read_pcap': netsniff-ng.c:592:33: error: 'DEFFILEMODE' undeclared (first use in this function) -------------------------------------------------------------------------- This change improves built_in.h to check if DEFFILEMODE is defined and if not it defines it to be available internally. Signed-off-by: Christian Wiese <chris@opensde.org> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2014-04-10dissector: display packet direction for tap'ing on netlink devices (nlmon)Daniel Borkmann1-0/+8
Linux kernel provides nlmon device (ARPHRD_NETLINK) driver that can tap on netlink traffic, e.g.: Setup: modprobe nlmon ip link add type nlmon ip link set nlmon0 up Capture: netsniff-ng -i nlmon0 ... (or -i any) Teardown: ip link set nlmon0 down ip link del dev nlmon0 rmmod nlmon Provide information about the packet direction (user space or kernel space), so that dissector will show that properly. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-12-12trafgen: take advantage of PACKET_QDISC_BYPASS sock optionJesper Dangaard Brouer1-0/+4
Since Linux 3.14, the kernel supports a socket option PACKET_QDISC_BYPASS, which trafgen enables by default. That allow us to bypass the kernels normal qdisc (traffic control) layer. An option -q, --qdisc-path is added to allow enabling the qdisc path explicity, useful for testing purposes. This will be avail in kernels >= 3.14 via commit d346a3fae3 (packet: introduce PACKET_QDISC_BYPASS socket option). Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
2013-08-02built_in: Add min_t() and max_t() macros and use themTobias Klauser1-0/+18
Introduce non-typechecking versions of min_t() and max_t() and use them where a cast would be needed. The macros were taken from the Linux Kernel, release under GPL v2. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-07-23built_in: fix build if ARPHRD_IEEE802154_MONITOR is undefinedDaniel Borkmann1-0/+4
Some 3.x kernel versions seem not to ship yet the definition of ARPHRD_IEEE802154_MONITOR. Add it into built_in.h to let the tools build. Reported-by: Pablo Henrique <phenrique@gmail.com> Reported-by: Tobias Kalbitz <tobias.kalbitz@gmail.com> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-07-03pcap: fix build errorDaniel Borkmann1-0/+8
Various fixes for last commit. Sorry for that. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-06-04misc: cleanup header commentsDaniel Borkmann1-7/+2
Remove header comments where appropriate. And also clean up colorize a bit. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-05-30ring: prepare setup_rx_ring_layout for support in v2/v3Daniel Borkmann1-0/+4
Prepare setup_rx_ring_layout for both, v2 and v3. Also do some checks during compile time if offsets stay the same as we operate on different union mappings. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-05-30ring: move poll related fallback define to built_in.hDaniel Borkmann1-0/+12
It rather belongs to built_in.h, and not here. Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-05-27ifpps: Don't assume a maximum of 32 CPUsTobias Klauser1-4/+0
There are people with machines containing far more than 32 CPUs. In their case ifpps didn't work until now because of a limitation to 32 CPUs. Rework ifpps to support an arbitrary number of CPUs. In order to still remain within the display space, if more than 10 (TOP_CPUS) CPUs are available, only the 10 top hitting (in terms of usr and sys time or irqs respectively) are displayed. Suggested-by: Daniel Borkmann <borkmann@iogearbox.net> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-05-17built_in: Add __noreturn markerTobias Klauser1-0/+4
This can be used to mark functions which will call exit() by themselves. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2013-04-29dissector: show sw/hw timestamp sourceDaniel Borkmann1-0/+12
Now, with PF_PACKET's extension, we can see what kind of sw/hw timestamp is being reported to us [1]. Thus, report it in the dissector. [1] http://thread.gmane.org/gmane.linux.network/266878/ Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
2013-03-15all: import netsniff-ng 0.5.8-rc0 sourceDaniel Borkmann1-0/+344
We decided to get rid of the old Git history and start a new one for several reasons: *) Allow / enforce only high-quality commits (which was not the case for many commits in the history), have a policy that is more close to the one from the Linux kernel. With high quality commits, we mean code that is logically split into commits and commit messages that are signed-off and have a proper subject and message body. We do not allow automatic Github merges anymore, since they are total bullshit. However, we will either cherry-pick your patches or pull them manually. *) The old archive was about ~27MB for no particular good reason. This basically derived from the bad decision that also some PDF files where stored there. From this moment onwards, no binary objects are allowed to be stored in this repository anymore. The old archive is not wiped away from the Internet. You will still be able to find it, e.g. on git.cryptoism.org etc. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Tobias Klauser <tklauser@distanz.ch>