Skip to content

[Bug] Linker error in txring.c using Android NDK version 23 #731

@NghiaNT1989

Description

@NghiaNT1989

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:

  1. after configuration, we will have
Supported Packet Injection Methods (*):
Linux TX_RING:              yes
Linux PF_PACKET:            yes
  1. 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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions