From 5eccb850aa5c45a8d28f3ef8cee431cbc4adbdc5 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Mon, 28 Jan 2013 12:03:28 +0100 Subject: [PATCH] make: conditionally include hw-timestamping Signed-off-by: Daniel Borkmann --- Makefile | 14 ++++++++------ ring.h | 16 +++++++++++----- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index f570a8aa..9f6f9896 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,9 @@ CFLAGS += -D_REENTRANT CFLAGS += -D_FILE_OFFSET_BITS=64 CFLAGS += -D_LARGEFILE_SOURCE CFLAGS += -D_LARGEFILE64_SOURCE -#CFLAGS += -D__WITH_HARDWARE_TIMESTAMPING=1 +ifneq ($(wildcard /usr/include/linux/net_tstamp.h),) + CFLAGS += -D__WITH_HARDWARE_TIMESTAMPING +endif CFLAGS += -DVERSION_STRING=\"$(VERSION_STRING)\" CFLAGS += -std=gnu99 @@ -124,7 +126,7 @@ else endif RM = echo -e " RM\t$(1)" && rm -rf $(1) RMDIR = echo -e " RM\t$(1)" && rmdir --ignore-fail-on-non-empty $(1) 2> /dev/null || true -GIT_ARCHIVE = cd .. && git archive --prefix=netsniff-ng-$(VERSION_STRING)/ $(VERSION_STRING) | \ +GIT_ARCHIVE = git archive --prefix=netsniff-ng-$(VERSION_STRING)/ $(VERSION_STRING) | \ $(1) > ../netsniff-ng-$(VERSION_STRING).tar.$(2) GIT_TAG = git tag -a $(VERSION_STRING) -m "$(VERSION_STRING) release" @@ -185,11 +187,11 @@ allbutmausezahn: $(filter-out mausezahn,$(TOOLS)) toolkit: $(TOOLS) install: install_all install_all: $(foreach tool,$(TOOLS),$(tool)_install) - $(Q)$(foreach file,$(DOC_FILES),$(call INST,../Documentation/$(file),$(DOCDIRE));) + $(Q)$(foreach file,$(DOC_FILES),$(call INST,Documentation/$(file),$(DOCDIRE));) install_allbutcurvetun: $(foreach tool,$(filter-out curvetun,$(TOOLS)),$(tool)_install) - $(Q)$(foreach file,$(DOC_FILES),$(call INST,../Documentation/$(file),$(DOCDIRE));) + $(Q)$(foreach file,$(DOC_FILES),$(call INST,Documentation/$(file),$(DOCDIRE));) install_allbutmausezahn: $(foreach tool,$(filter-out mausezahn,$(TOOLS)),$(tool)_install) - $(Q)$(foreach file,$(DOC_FILES),$(call INST,../Documentation/$(file),$(DOCDIRE));) + $(Q)$(foreach file,$(DOC_FILES),$(call INST,Documentation/$(file),$(DOCDIRE));) clean mostlyclean: $(foreach tool,$(TOOLS),$(tool)_clean) realclean distclean clobber: $(foreach tool,$(TOOLS),$(tool)_distclean) $(Q)$(foreach file,$(DOC_FILES),$(call RM,$(DOCDIRE)/$(file));) @@ -211,7 +213,7 @@ define TOOL_templ $(1)_check: $(1)_prehook_check $$(patsubst %.o,%.x,$$($(1)-objs)) $(1)_install: $(1)_install_custom $(Q)$$(call INSTX,$(1)/$(1),$$(SBINDIR)) - $(Q)$$(call INST,../Documentation/$$(shell echo $(1) | sed 's/\([a-z]\)\(.*\)/\u\1\2/g'),$$(DOCDIRE)) + $(Q)$$(call INST,Documentation/$$(shell echo $(1) | sed 's/\([a-z]\)\(.*\)/\u\1\2/g'),$$(DOCDIRE)) $(1)_distclean: $(1)_distclean_custom $(Q)$$(call RM,$$(SBINDIR)/$(1)) $(Q)$$(call RM,$$(DOCDIRE)/$$(shell echo $(1) | sed 's/\([a-z]\)\(.*\)/\u\1\2/g')) diff --git a/ring.h b/ring.h index f0599210..cbb81443 100644 --- a/ring.h +++ b/ring.h @@ -137,7 +137,7 @@ static inline void set_sockopt_tpacket(int sock) panic("Cannot set tpacketv2!\n"); } -#if defined(__WITH_HARDWARE_TIMESTAMPING) +#ifdef __WITH_HARDWARE_TIMESTAMPING # include static inline void set_sockopt_hwtimestamp(int sock, const char *dev) @@ -146,6 +146,9 @@ static inline void set_sockopt_hwtimestamp(int sock, const char *dev) struct hwtstamp_config hwconfig; struct ifreq ifr; + if (!strncmp("any", dev, strlen("any"))) + return; + memset(&hwconfig, 0, sizeof(hwconfig)); hwconfig.tx_type = HWTSTAMP_TX_ON; hwconfig.rx_filter = HWTSTAMP_FILTER_ALL; @@ -155,20 +158,23 @@ static inline void set_sockopt_hwtimestamp(int sock, const char *dev) ifr.ifr_data = &hwconfig; ret = ioctl(sock, SIOCSHWTSTAMP, &ifr); - if (ret < 0) - return; + if (ret < 0) { + if (errno == EOPNOTSUPP) + return; + panic("Cannot set timestamping: %s\n", strerror(errno)); + } timesource = SOF_TIMESTAMPING_RAW_HARDWARE; ret = setsockopt(sock, SOL_PACKET, PACKET_TIMESTAMP, ×ource, sizeof(timesource)); if (ret) - panic("Cannot set timestamping!\n"); + panic("Cannot set timestamping: %s!\n", strerror(errno)); } #else static inline void set_sockopt_hwtimestamp(int sock, const char *dev) { return; } -#endif /* defined(__WITH_HARDWARE_TIMESTAMPING) */ +#endif #endif /* RING_H */ -- 2.11.4.GIT