From 0b8aa3c5f07f27ce8e78733b81c1a142b99666aa Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Thu, 11 Jul 2013 12:46:53 +0200 Subject: configure, netsniff-ng: make netsniff-ng's geoip dependency optional Geoip dependency should not be mandatory as it's not a core part of netsniff-ng. This also facilitates compilation on platforms where geoip is not available. Signed-off-by: Daniel Borkmann --- configure | 11 ++++++- geoip.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++ netsniff-ng/Makefile | 10 +++++-- 3 files changed, 101 insertions(+), 4 deletions(-) diff --git a/configure b/configure index ec31bf2..53b5d03 100755 --- a/configure +++ b/configure @@ -14,6 +14,7 @@ TOOLS_NOBUILD="" HAVE_LIBPCAP=0 HAVE_HWTSTAMP=0 +HAVE_LIBGEOIP=0 [ -z $CC ] && CC=cc @@ -292,12 +293,14 @@ EOF $CC -o $TMPDIR/geoiptest $TMPDIR/geoiptest.c -lGeoIP >> $TMPDIR/config.log 2>&1 if [ ! -x $TMPDIR/geoiptest ] ; then echo "[NO]" + echo "CONFIG_LIBGEOIP=0" >> Config MISSING_DEFS=1 - tools_remove "netsniff-ng" tools_remove "astraceroute" tools_remove "flowtop" else echo "[YES]" + echo "CONFIG_LIBGEOIP=1" >> Config + HAVE_LIBGEOIP=1 fi } @@ -503,6 +506,7 @@ gen_config_hdr() { local _version="`git describe --always`" local _have_libpcap="" + local _have_libgeoip="" local _have_hwts="" echo "[*] Generating config.h ... " @@ -515,6 +519,10 @@ gen_config_hdr() _have_hwts="#define HAVE_HARDWARE_TIMESTAMPING 1" fi + if [ "$HAVE_LIBGEOIP" == "1" ] ; then + _have_libgeoip="#define HAVE_GEOIP 1" + fi + cat > config.h << EOF #ifndef CONFIG_H #define CONFIG_H @@ -525,6 +533,7 @@ gen_config_hdr() #define FILE_USERNAM ".curvetun/username" #define GITVERSION "$_version" $_have_libpcap +$_have_libgeoip $_have_hwts #endif /* CONFIG_H */ EOF diff --git a/geoip.h b/geoip.h index b6884e7..c84b335 100644 --- a/geoip.h +++ b/geoip.h @@ -1,8 +1,13 @@ #ifndef GEOIPH_H #define GEOIPH_H +#include #include +#include "config.h" +#include "die.h" + +#ifdef HAVE_GEOIP extern void init_geoip(int enforce); extern void update_geoip(void); extern int geoip_working(void); @@ -19,5 +24,84 @@ extern float geoip6_latitude(struct sockaddr_in6 sa); extern const char *geoip4_as_name(struct sockaddr_in sa); extern const char *geoip6_as_name(struct sockaddr_in6 sa); extern void destroy_geoip(void); +#else +static inline void init_geoip(int enforce) +{ +} + +static inline void destroy_geoip(void) +{ +} + +static inline void update_geoip(void) +{ + panic("No built-in geoip support!\n"); +} + +static inline int geoip_working(void) +{ + return 0; +} + +static inline const char *geoip4_city_name(struct sockaddr_in sa) +{ + return NULL; +} + +static inline const char *geoip6_city_name(struct sockaddr_in6 sa) +{ + return NULL; +} + +static inline const char *geoip4_region_name(struct sockaddr_in sa) +{ + return NULL; +} + +static inline const char *geoip6_region_name(struct sockaddr_in6 sa) +{ + return NULL; +} + +static inline const char *geoip4_country_name(struct sockaddr_in sa) +{ + return NULL; +} + +static inline const char *geoip6_country_name(struct sockaddr_in6 sa) +{ + return NULL; +} + +static inline float geoip4_longitude(struct sockaddr_in sa) +{ + return .0f; +} + +static inline float geoip4_latitude(struct sockaddr_in sa) +{ + return .0f; +} + +static inline float geoip6_longitude(struct sockaddr_in6 sa) +{ + return .0f; +} + +static inline float geoip6_latitude(struct sockaddr_in6 sa) +{ + return .0f; +} + +static inline const char *geoip4_as_name(struct sockaddr_in sa) +{ + return NULL; +} + +static inline const char *geoip6_as_name(struct sockaddr_in6 sa) +{ + return NULL; +} +#endif #endif /* GEOIPH_H */ diff --git a/netsniff-ng/Makefile b/netsniff-ng/Makefile index 2f64c0f..fb913d6 100644 --- a/netsniff-ng/Makefile +++ b/netsniff-ng/Makefile @@ -1,5 +1,4 @@ -netsniff-ng-libs = -lGeoIP \ - $(shell pkg-config --libs libnl-3.0) \ +netsniff-ng-libs = $(shell pkg-config --libs libnl-3.0) \ $(shell pkg-config --libs libnl-genl-3.0) \ -lpthread \ -lz @@ -7,6 +6,9 @@ netsniff-ng-libs = -lGeoIP \ ifeq ($(CONFIG_LIBPCAP), 1) netsniff-ng-libs += -lpcap endif +ifeq ($(CONFIG_LIBGEOIP), 1) +netsniff-ng-libs += -lGeoIP +endif netsniff-ng-objs = dissector.o \ dissector_eth.o \ @@ -58,13 +60,15 @@ netsniff-ng-objs = dissector.o \ ring.o \ tprintf.o \ timer.o \ - geoip.o \ mac80211.o \ netsniff-ng.o ifeq ($(CONFIG_LIBPCAP), 1) netsniff-ng-objs += bpf_comp.o endif +ifeq ($(CONFIG_LIBGEOIP), 1) +netsniff-ng-objs += geoip.o +endif ifeq ($(CONFIG_HWTSTAMP), 1) netsniff-ng-objs += tstamping.o endif -- cgit v1.2.3-54-g00ecf