Initial import from ToT git.

Bug: 9469682
Change-Id: I6fc32550557dc5e94e9ecbbb57b0ec30a844adb4
Upstream: git://git.linux-ipv6.org/gitroot/iputils.git
Commit: 608419a7804caf36a359875d2fdae0b3eb181387
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..89249f5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,252 @@
+#
+# Configuration
+#
+
+# CC
+CC=gcc
+# Path to parent kernel include files directory
+LIBC_INCLUDE=/usr/include
+# Libraries
+ADDLIB=
+# Linker flags
+LDFLAG_STATIC=-Wl,-Bstatic
+LDFLAG_DYNAMIC=-Wl,-Bdynamic
+LDFLAG_CAP=-lcap
+LDFLAG_GNUTLS=-lgnutls-openssl
+LDFLAG_CRYPTO=-lcrypto
+LDFLAG_IDN=-lidn
+LDFLAG_RESOLV=-lresolv
+LDFLAG_SYSFS=-lsysfs
+
+#
+# Options
+#
+
+# Capability support (with libcap) [yes|static|no]
+USE_CAP=yes
+# sysfs support (with libsysfs - deprecated) [no|yes|static]
+USE_SYSFS=no
+# IDN support (experimental) [no|yes|static]
+USE_IDN=no
+
+# Do not use getifaddrs [no|yes|static]
+WITHOUT_IFADDRS=no
+# arping default device (e.g. eth0) []
+ARPING_DEFAULT_DEVICE=
+
+# GNU TLS library for ping6 [yes|no|static]
+USE_GNUTLS=yes
+# Crypto library for ping6 [shared|static]
+USE_CRYPTO=shared
+# Resolv library for ping6 [yes|static]
+USE_RESOLV=yes
+# ping6 source routing (deprecated by RFC5095) [no|yes|RFC3542]
+ENABLE_PING6_RTHDR=no
+
+# rdisc server (-r option) support [no|yes]
+ENABLE_RDISC_SERVER=no
+
+# -------------------------------------
+# What a pity, all new gccs are buggy and -Werror does not work. Sigh.
+# CCOPT=-fno-strict-aliasing -Wstrict-prototypes -Wall -Werror -g
+CCOPT=-fno-strict-aliasing -Wstrict-prototypes -Wall -g
+CCOPTOPT=-O3
+GLIBCFIX=-D_GNU_SOURCE
+DEFINES=
+LDLIB=
+
+FUNC_LIB = $(if $(filter static,$(1)),$(LDFLAG_STATIC) $(2) $(LDFLAG_DYNAMIC),$(2))
+
+# USE_GNUTLS: DEF_GNUTLS, LIB_GNUTLS
+# USE_CRYPTO: LIB_CRYPTO
+ifneq ($(USE_GNUTLS),no)
+	LIB_CRYPTO = $(call FUNC_LIB,$(USE_GNUTLS),$(LDFLAG_GNUTLS))
+	DEF_CRYPTO = -DUSE_GNUTLS
+else
+	LIB_CRYPTO = $(call FUNC_LIB,$(USE_CRYPTO),$(LDFLAG_CRYPTO))
+endif
+
+# USE_RESOLV: LIB_RESOLV
+LIB_RESOLV = $(call FUNC_LIB,$(USE_RESOLV),$(LDFLAG_RESOLV))
+
+# USE_CAP:  DEF_CAP, LIB_CAP
+ifneq ($(USE_CAP),no)
+	DEF_CAP = -DCAPABILITIES
+	LIB_CAP = $(call FUNC_LIB,$(USE_CAP),$(LDFLAG_CAP))
+endif
+
+# USE_SYSFS: DEF_SYSFS, LIB_SYSFS
+ifneq ($(USE_SYSFS),no)
+	DEF_SYSFS = -DUSE_SYSFS
+	LIB_SYSFS = $(call FUNC_LIB,$(USE_SYSFS),$(LDFLAG_SYSFS))
+endif
+
+# USE_IDN: DEF_IDN, LIB_IDN
+ifneq ($(USE_IDN),no)
+	DEF_IDN = -DUSE_IDN
+	LIB_IDN = $(call FUNC_LIB,$(USE_IDN),$(LDFLAG_IDN))
+endif
+
+# WITHOUT_IFADDRS: DEF_WITHOUT_IFADDRS
+ifneq ($(WITHOUT_IFADDRS),no)
+	DEF_WITHOUT_IFADDRS = -DWITHOUT_IFADDRS
+endif
+
+# ENABLE_RDISC_SERVER: DEF_ENABLE_RDISC_SERVER
+ifneq ($(ENABLE_RDISC_SERVER),no)
+	DEF_ENABLE_RDISC_SERVER = -DRDISC_SERVER
+endif
+
+# ENABLE_PING6_RTHDR: DEF_ENABLE_PING6_RTHDR
+ifneq ($(ENABLE_PING6_RTHDR),no)
+	DEF_ENABLE_PING6_RTHDR = -DPING6_ENABLE_RTHDR
+ifeq ($(ENABLE_PING6_RTHDR),RFC3542)
+	DEF_ENABLE_PING6_RTHDR += -DPINR6_ENABLE_RTHDR_RFC3542
+endif
+endif
+
+# -------------------------------------
+IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
+IPV6_TARGETS=tracepath6 traceroute6 ping6
+TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
+
+CFLAGS=$(CCOPTOPT) $(CCOPT) $(GLIBCFIX) $(DEFINES)
+LDLIBS=$(LDLIB) $(ADDLIB)
+
+UNAME_N:=$(shell uname -n)
+LASTTAG:=$(shell git describe HEAD | sed -e 's/-.*//')
+TODAY=$(shell date +%Y/%m/%d)
+DATE=$(shell date --date $(TODAY) +%Y%m%d)
+TAG:=$(shell date --date=$(TODAY) +s%Y%m%d)
+
+
+# -------------------------------------
+.PHONY: all ninfod clean distclean man html check-kernel modules snapshot
+
+all: $(TARGETS)
+
+%.s: %.c
+	$(COMPILE.c) $< $(DEF_$(patsubst %.o,%,$@)) -S -o $@
+%.o: %.c
+	$(COMPILE.c) $< $(DEF_$(patsubst %.o,%,$@)) -o $@
+$(TARGETS): %: %.o
+	$(LINK.o) $^ $(LIB_$@) $(LDLIBS) -o $@
+
+# -------------------------------------
+# arping
+DEF_arping = $(DEF_SYSFS) $(DEF_CAP) $(DEF_IDN) $(DEF_WITHOUT_IFADDRS)
+LIB_arping = $(LIB_SYSFS) $(LIB_CAP) $(LIB_IDN)
+
+ifneq ($(ARPING_DEFAULT_DEVICE),)
+DEF_arping += -DDEFAULT_DEVICE=\"$(ARPING_DEFAULT_DEVICE)\"
+endif
+
+# clockdiff
+DEF_clockdiff = $(DEF_CAP)
+LIB_clockdiff = $(LIB_CAP)
+
+# ping / ping6
+DEF_ping_common = $(DEF_CAP) $(DEF_IDN)
+DEF_ping  = $(DEF_CAP) $(DEF_IDN) $(DEF_WITHOUT_IFADDRS)
+LIB_ping  = $(LIB_CAP) $(LIB_IDN)
+DEF_ping6 = $(DEF_CAP) $(DEF_IDN) $(DEF_WITHOUT_IFADDRS) $(DEF_ENABLE_PING6_RTHDR) $(DEF_CRYPTO)
+LIB_ping6 = $(LIB_CAP) $(LIB_IDN) $(LIB_RESOLV) $(LIB_CRYPTO)
+
+ping: ping_common.o
+ping6: ping_common.o
+ping.o ping_common.o: ping_common.h
+ping6.o: ping_common.h in6_flowlabel.h
+
+# rarpd
+DEF_rarpd =
+LIB_rarpd =
+
+# rdisc
+DEF_rdisc = $(DEF_ENABLE_RDISC_SERVER)
+LIB_rdisc =
+
+# tracepath
+DEF_tracepath = $(DEF_IDN)
+LIB_tracepath = $(LIB_IDN)
+
+# tracepath6
+DEF_tracepath6 = $(DEF_IDN)
+LIB_tracepath6 =
+
+# traceroute6
+DEF_traceroute6 = $(DEF_CAP) $(DEF_IDN)
+LIB_traceroute6 = $(LIB_CAP) $(LIB_IDN)
+
+# tftpd
+DEF_tftpd =
+DEF_tftpsubs =
+LIB_tftpd =
+
+tftpd: tftpsubs.o
+tftpd.o tftpsubs.o: tftp.h
+
+# -------------------------------------
+# ninfod
+ninfod:
+	@set -e; \
+		if [ ! -f ninfod/Makefile ]; then \
+			cd ninfod; \
+			./configure; \
+			cd ..; \
+		fi; \
+		$(MAKE) -C ninfod
+
+# -------------------------------------
+# modules / check-kernel are only for ancient kernels; obsolete
+check-kernel:
+ifeq ($(KERNEL_INCLUDE),)
+	@echo "Please, set correct KERNEL_INCLUDE"; false
+else
+	@set -e; \
+	if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \
+		echo "Please, set correct KERNEL_INCLUDE"; false; fi
+endif
+
+modules: check-kernel
+	$(MAKE) KERNEL_INCLUDE=$(KERNEL_INCLUDE) -C Modules
+
+# -------------------------------------
+man:
+	$(MAKE) -C doc man
+
+html:
+	$(MAKE) -C doc html
+
+clean:
+	@rm -f *.o $(TARGETS)
+	@$(MAKE) -C Modules clean
+	@$(MAKE) -C doc clean
+	@set -e; \
+		if [ -f ninfod/Makefile ]; then \
+			$(MAKE) -C ninfod clean; \
+		fi
+
+distclean: clean
+	@set -e; \
+		if [ -f ninfod/Makefile ]; then \
+			$(MAKE) -C ninfod distclean; \
+		fi
+
+# -------------------------------------
+snapshot:
+	@if [ x"$(UNAME_N)" != x"pleiades" ]; then echo "Not authorized to advance snapshot"; exit 1; fi
+	@echo "[$(TAG)]" > RELNOTES.NEW
+	@echo >>RELNOTES.NEW
+	@git log --no-merges $(LASTTAG).. | git shortlog >> RELNOTES.NEW
+	@echo >> RELNOTES.NEW
+	@cat RELNOTES >> RELNOTES.NEW
+	@mv RELNOTES.NEW RELNOTES
+	@sed -e "s/^%define ssdate .*/%define ssdate $(DATE)/" iputils.spec > iputils.spec.tmp
+	@mv iputils.spec.tmp iputils.spec
+	@echo "static char SNAPSHOT[] = \"$(TAG)\";" > SNAPSHOT.h
+	@$(MAKE) -C doc snapshot
+	@$(MAKE) man
+	@git commit -a -m "iputils-$(TAG)"
+	@git tag -s -m "iputils-$(TAG)" $(TAG)
+	@git archive --format=tar --prefix=iputils-$(TAG)/ $(TAG) | bzip2 -9 > ../iputils-$(TAG).tar.bz2
+