blob: 764935d908eb98a4ebcec471aa2a70fb89a4bd14 [file] [log] [blame]
From 3c5e296ceea909346e20033e8b4e4421d58bc13d Mon Sep 17 00:00:00 2001
From: Peter Qiu <zqiu@chromium.org>
Date: Thu, 10 Jun 2021 16:49:39 +0000
Subject: [PATCH 11/19] Add ability to disable hook scripts
This allow dhcpcd to be installed without hook scripts and bypassing
the hook script processing code.
---
Makefile | 9 ++++++++-
configure | 17 ++++++++++++----
src/Makefile | 2 +-
src/script-stub.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 71 insertions(+), 6 deletions(-)
create mode 100644 src/script-stub.c
diff --git a/Makefile b/Makefile
index a39b0f89..56e188a4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,11 @@
-SUBDIRS= src hooks
+TOP?= .
+include ${TOP}/iconfig.mk
+
+SUBDIRS= src
+
+ifneq ($(HOOKSCRIPTS),)
+SUBDIRS+= hooks
+endif
VERSION!= sed -n 's/\#define VERSION[[:space:]]*"\(.*\)".*/\1/p' src/defs.h
diff --git a/configure b/configure
index b4d6c267..66a96040 100755
--- a/configure
+++ b/configure
@@ -78,7 +78,9 @@ for x do
CPPFLAGS) CPPFLAGS=$var;;
PKG_CONFIG) PKG_CONFIG=$var;;
--with-hook) HOOKSCRIPTS="$HOOKSCRIPTS${HOOKSCRIPTS:+ }$var";;
- --with-hooks|HOOKSCRIPTS) HOOKSCRIPTS=$var; HOOKSET=true;;
+ --with-hooks|HOOKSCRIPTS)
+ if [ "$opt" != "$var" ]; then HOOKSCRIPTS=$var; fi
+ HOOKSET=true;;
--build) BUILD=$var;;
--host) HOST=$var; HOSTCC=$var-;;
--target) TARGET=$var;;
@@ -687,7 +689,7 @@ elif $XCC _inet_ntoa.c -lnsl -o _inet_ntoa 2>&3; then
echo "LDADD+= -lnsl" >>$CONFIG_MK
elif $XCC _inet_ntoa.c -lsocket -o _inet_ntoa 2>&3; then
echo "yes (-lsocket)"
- echo "LDADD+= -lsocket" >>$CONFIG_MK
+ echo "LDADD+= -lsocket" >>$CONFIG_MK
else
echo "no"
echo "libc support for inet_ntoa is required - aborting" >&2
@@ -1430,7 +1432,7 @@ fi
echo "STATUSARG= $STATUSARG" >>config.mk
HOOKS=
-if ! $HOOKSET; then
+if $HOOKSET; then
printf "Checking for ntpd ... "
NTPD=$(_which ntpd)
if [ -n "$NTPD" ]; then
@@ -1519,6 +1521,13 @@ if cd hooks; then
done
cd ..
fi
+
+if [ -z "$HOOKS" ]; then
+ echo "DHCPCD_SRCS+= script-stub.c" >>$CONFIG_MK
+else
+ echo "SCRIPTSINSTALL= _scriptsinstall" >>$CONFIG_MK
+ echo "DHCPCD_SRCS+= script.c" >>$CONFIG_MK
+fi
echo "HOOKSCRIPTS= $HOOKS" >>$CONFIG_MK
echo "EGHOOKSCRIPTS= $EGHOOKS" >>$CONFIG_MK
@@ -1528,7 +1537,7 @@ echo " SBINDIR = $SBINDIR"
echo " LIBDIR = $LIBDIR"
echo " LIBEXECDIR = $LIBEXECDIR"
echo " DBDIR = $DBDIR"
-echo " RUNDIR = $RUNDIR"
+echo " RUNDIR = $RUNDIR"
echo " MANDIR = $MANDIR"
echo " DATADIR = $DATADIR"
echo " HOOKSCRIPTS = $HOOKS"
diff --git a/src/Makefile b/src/Makefile
index c916bcc1..d5b100a8 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -3,7 +3,7 @@
PROG= dhcpcd
SRCS= common.c control.c dhcpcd.c duid.c eloop.c logerr.c
SRCS+= if.c if-options.c sa.c route.c
-SRCS+= dhcp-common.c script.c rpc-stub.c
+SRCS+= dhcp-common.c rpc-stub.c
CFLAGS?= -O2
SUBDIRS+= ${MKDIRS}
diff --git a/src/script-stub.c b/src/script-stub.c
new file mode 100644
index 00000000..ed2a4747
--- /dev/null
+++ b/src/script-stub.c
@@ -0,0 +1,49 @@
+/*
+ * dhcpcd - DHCP client daemon
+ * Copyright (c) 2006-2015 Roy Marples <roy@marples.name>
+ * All rights reserved
+
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "common.h"
+#include "script.h"
+
+void
+if_printoptions(void)
+{
+ /* Stub implementation. */
+}
+
+int
+send_interface(struct fd_list *fd, const struct interface *ifp)
+{
+ /* Stub implementation. */
+ return 0;
+}
+
+int
+script_runreason(const struct interface *ifp, const char *reason)
+{
+ /* Stub implementation. */
+ return 0;
+}
--
2.33.0.800.g4c38ced690-goog