-
Notifications
You must be signed in to change notification settings - Fork 290
Closed
Labels
Description
Describe the bug
A clear and concise description of what the bug is.
Linker error in txring.c using Android NDK version 23
ld: error: undefined symbol: txring_put
>>> referenced by sendpacket.c:303
>>> sendpacket.o:(sendpacket) in archive ./common/libcommon.a
ld: error: undefined symbol: txring_init
>>> referenced by sendpacket.c:990
>>> sendpacket.o:(sendpacket_open) in archive ./common/libcommon.a
To Reproduce
Steps to reproduce the behavior:
- after configuration, we will have
Supported Packet Injection Methods (*):
Linux TX_RING: yes
Linux PF_PACKET: yes
- run : make
Expected behavior
Make should be finished without any error
Screenshots
System (please complete the following information):
- OS: Ubuntu
- OS 18.04 LTS
- Tcpreplay Version : latest release in master branch with commit : 09f0774
Additional context
The macro HAVE_TX_RING is defined in config.h
/* Do we have Linux TX_RING socket support? */
#define HAVE_TX_RING 1
in header file : txring.h, we include config.h then check ifdef HAVE_TX_RING, it's OK, definition of HAVE_TX_RING is now available in txring.h.
#include "config.h"
#include "defines.h"
#ifdef HAVE_TX_RING
However, in txring.c, check ifdef HAVE_TX_RING is added firstly but it's not yet defined.
#ifdef HAVE_TX_RING
#include "err.h"
#include "utils.h"
#include "txring.h"
#include <unistd.h>
#include <string.h>
#include <sys/mman.h>
#include <errno.h>
we need to move ifdef HAVE_TX_RING after header inclusion, like this
#include "err.h"
#include "utils.h"
#include "txring.h"
#include <unistd.h>
#include <string.h>
#include <sys/mman.h>
#include <errno.h>
#ifdef HAVE_TX_RING
Reactions are currently unavailable