diff --git a/.gitignore b/.gitignore
index e262716..454a504 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/initscripts-9.49.39.tar.gz
+SOURCES/initscripts-9.49.41.tar.gz
diff --git a/.initscripts.metadata b/.initscripts.metadata
index a79f9ff..d2378b9 100644
--- a/.initscripts.metadata
+++ b/.initscripts.metadata
@@ -1 +1 @@
-5b1ff27004dc3f61a476341f5eeea4b0bdfe8acf SOURCES/initscripts-9.49.39.tar.gz
+6ad159c0e3fe019429c365fc74f41a3b54f1bac7 SOURCES/initscripts-9.49.41.tar.gz
diff --git a/SOURCES/initscripts-9.49.39-introduce-ARPUDATE.patch b/SOURCES/initscripts-9.49.39-introduce-ARPUDATE.patch
deleted file mode 100644
index 500bd81..0000000
--- a/SOURCES/initscripts-9.49.39-introduce-ARPUDATE.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From a81b5e8ec984ca2a8ee7167eb87f6fc9db737843 Mon Sep 17 00:00:00 2001
-From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
-Date: Mon, 10 Jul 2017 18:16:35 +0200
-Subject: [PATCH] ARPUPDATE introduced
-
-  The ARPUPDATE option has been introduced. It defaults to 'yes'.
-
-  By setting the ARPUPDATE to 'no', administrator can disable
-  updating neighbouring computers with ARP information about current
-  NIC. This is especially needed when using LVS Load Balancing with
-  Direct routing enabled.
----
- sysconfig.txt                               | 5 +++++
- sysconfig/network-scripts/ifup-aliases      | 4 +++-
- sysconfig/network-scripts/ifup-eth          | 2 +-
- sysconfig/network-scripts/network-functions | 6 ++++++
- 4 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/sysconfig.txt b/sysconfig.txt
-index a4c05da..7adc381 100644
---- a/sysconfig.txt
-+++ b/sysconfig.txt
-@@ -586,6 +586,11 @@ Files in /etc/sysconfig/network-scripts/
-       If set to 'no', ifup will not try to determine, if requested ip address
-       is used by other machine in network.
-       Defaults to 'yes'.
-+    ARPUPDATE=yes|no
-+      If set to 'no' the neighbours in current network will not be updated with
-+      ARP information about this NIC. This is especially handy using LVS Load
-+      Balancing with Direct Routing enabled.
-+      Defaults to 'yes'.
-     IPV4_FAILURE_FATAL=yes|no
-       If set to yes, ifup-eth will end immediately after ipv4 dhclient fails.
-       Defaults to 'no'.
-diff --git a/sysconfig/network-scripts/ifup-aliases b/sysconfig/network-scripts/ifup-aliases
-index fbc1547..52d43ea 100755
---- a/sysconfig/network-scripts/ifup-aliases
-+++ b/sysconfig/network-scripts/ifup-aliases
-@@ -127,6 +127,7 @@ eval ` (
-     echo default_GATEWAY=$GATEWAY\;;
-     echo default_NO_ALIASROUTING=$NO_ALIASROUTING\;;
-     echo default_ARPCHECK=$ARPCHECK\;;
-+    echo default_ARPUPDATE=$ARPUPDATE\;;
- ) `
- [ -z "$default_GATEWAY" ] && default_GATEWAY=$network_GATEWAY
- 
-@@ -142,6 +143,7 @@ function ini_env ()
-     NO_ALIASROUTING=$default_NO_ALIASROUTING
-     ONPARENT=""
-     ARPCHECK=$default_ARPCHECK
-+    ARPUPDATE=$default_ARPUPDATE
- }
- 
- function is_default_gateway ()
-@@ -279,7 +281,7 @@ function new_interface ()
-             dev ${parent_device} label ${DEVICE}
- 
-         # update ARP cache of neighboring computers:
--        if [ "${REALDEVICE}" != "lo" ]; then
-+        if ! is_false "${ARPUPDATE}" && [ "${REALDEVICE}" != "lo" ]; then
-             /sbin/arping -q -A -c 1 -I ${parent_device} ${IPADDR}
-             ( sleep 2; /sbin/arping -q -U -c 1 -I ${parent_device} ${IPADDR} ) > /dev/null 2>&1 < /dev/null &
-         fi
-diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth
-index 3da5c16..5096a5d 100755
---- a/sysconfig/network-scripts/ifup-eth
-+++ b/sysconfig/network-scripts/ifup-eth
-@@ -274,7 +274,7 @@ else
-             fi
- 
-             # update ARP cache of neighboring computers
--            if [ "${REALDEVICE}" != "lo" ]; then
-+            if ! is_false "${arpupdate[$idx]}" && [ "${REALDEVICE}" != "lo" ]; then
-                 /sbin/arping -q -A -c 1 -I ${REALDEVICE} ${ipaddr[$idx]}
-                 ( sleep 2;
-                 /sbin/arping -q -U -c 1 -I ${REALDEVICE} ${ipaddr[$idx]} ) > /dev/null 2>&1 < /dev/null &
-diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
-index 1867c38..7f5dfb0 100644
---- a/sysconfig/network-scripts/network-functions
-+++ b/sysconfig/network-scripts/network-functions
-@@ -222,6 +222,7 @@ expand_config ()
-         netmask[$i]=$(eval echo '$'NETMASK$idx)
-         broadcast[$i]=$(eval echo '$'BROADCAST$idx)
-         arpcheck[$i]=$(eval echo '$'ARPCHECK$idx)
-+        arpupdate[$i]=$(eval echo '$'ARPUPDATE$idx)
- 
-         if [ "${prefix[$i]}x" != "x" ]; then
-             val=$(/bin/ipcalc --netmask "${ipaddr[$i]}/${prefix[$i]}")
-@@ -248,6 +249,11 @@ expand_config ()
-             arpcheck[$i]=${arpcheck[$i],,*}
-         fi
- 
-+        if [ "${arpupdate[$i]}x" != "x" ]; then
-+            arpupdate[$i]=${arpupdate[$i]##ARPUPDATE=}
-+            arpupdate[$i]=${arpupdate[$i],,*}
-+        fi
-+
-         i=$((i+1))
-     done
- 
--- 
-2.9.5
-
diff --git a/SPECS/initscripts.spec b/SPECS/initscripts.spec
index 5ed992f..e96290a 100644
--- a/SPECS/initscripts.spec
+++ b/SPECS/initscripts.spec
@@ -1,10 +1,10 @@
 Summary: The inittab file and the /etc/init.d scripts
 Name: initscripts
-Version: 9.49.39
+Version: 9.49.41
 # ppp-watch is GPLv2+, everything else is GPLv2
 License: GPLv2 and GPLv2+
 Group: System Environment/Base
-Release: 1%{?dist}.1
+Release: 1%{?dist}
 URL: https://github.com/fedora-sysv/initscripts
 Source: https://github.com/fedora-sysv/initscripts/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -22,8 +22,8 @@ Conflicts: lvm2 < 2.02.100-5
 Conflicts: dmraid < 1.0.0.rc16-18
 Requires: systemd
 Requires: iproute, /sbin/arping, findutils
-# Not strictly required, but nothing else requires it
-Requires: /etc/system-release
+Requires: redhat-release
+Conflicts: redhat-release < 7.5-0.11
 Requires: udev >= 125-1
 Requires: cpio
 Requires: hostname
@@ -32,11 +32,10 @@ Conflicts: NetworkManager < 0.9.9.0-37.git20140131.el7
 Requires(pre): /usr/sbin/groupadd
 Requires(post): /sbin/chkconfig, coreutils
 Requires(preun): /sbin/chkconfig
-BuildRequires: glib2-devel popt-devel gettext pkgconfig
+%{?systemd_requires}
+BuildRequires: glib2-devel popt-devel gettext pkgconfig systemd
 Provides: /sbin/service
 
-Patch0001: initscripts-9.49.39-introduce-ARPUDATE.patch
-
 %description
 The initscripts package contains basic system scripts used
 during a boot of the system. It also contains scripts which
@@ -55,7 +54,6 @@ Currently, this consists of various memory checking code.
 
 %prep
 %setup -q
-%patch001 -p1
 
 %build
 make
@@ -81,6 +79,8 @@ chmod 600 $RPM_BUILD_ROOT/etc/crypttab
 /usr/sbin/groupadd -g 22 -r -f utmp
 
 %post
+%systemd_post brandbot.path rhel-autorelabel.service rhel-autorelabel-mark.service rhel-configure.service rhel-dmesg.service rhel-domainname.service rhel-import-state.service rhel-loadmodules.service rhel-readonly.service
+
 touch /var/log/wtmp /var/run/utmp /var/log/btmp
 chown root:utmp /var/log/wtmp /var/run/utmp /var/log/btmp
 chmod 664 /var/log/wtmp /var/run/utmp
@@ -88,24 +88,23 @@ chmod 600 /var/log/btmp
 
 /usr/sbin/chkconfig --add network
 /usr/sbin/chkconfig --add netconsole
-if [ $1 -eq 1 ]; then
-        /usr/bin/systemctl daemon-reload > /dev/null 2>&1 || :
-fi
 
 %preun
+%systemd_preun brandbot.path rhel-autorelabel.service rhel-autorelabel-mark.service rhel-configure.service rhel-dmesg.service rhel-domainname.service rhel-import-state.service rhel-loadmodules.service rhel-readonly.service
+
 if [ $1 = 0 ]; then
   /usr/sbin/chkconfig --del network
   /usr/sbin/chkconfig --del netconsole
 fi
 
-%triggerun -- initscripts < 7.62
-/usr/sbin/chkconfig --del random
-/usr/sbin/chkconfig --del rawdevices
-exit 0
-
 %postun
-if [ $1 -ge 1 ]; then
-  /usr/bin/systemctl daemon-reload > /dev/null 2>&1 || :
+%systemd_postun brandbot.path rhel-autorelabel.service rhel-autorelabel-mark.service rhel-configure.service rhel-dmesg.service rhel-domainname.service rhel-import-state.service rhel-loadmodules.service rhel-readonly.service
+
+# We need to keep this in initscripts until the EOL of RHEL-7.2-EUS:
+%triggerun -- initscripts < 9.49.40
+if [ $1 -gt 1 ]; then
+  systemctl enable brandbot.path rhel-autorelabel.service rhel-autorelabel-mark.service rhel-configure.service rhel-dmesg.service rhel-domainname.service rhel-import-state.service rhel-loadmodules.service rhel-readonly.service &> /dev/null || :
+  echo -e "\nUPGRADE: Automatically re-enabling default systemd units:\n\tbrandbot.path\n\trhel-autorelabel.service\n\trhel-autorelabel-mark.service\n\trhel-configure.service\n\trhel-dmesg.service\n\trhel-domainname.service\n\trhel-import-state.service\n\trhel-loadmodules.service\n\trhel-readonly.service\n" || :
 fi
 
 %clean
@@ -221,8 +220,22 @@ rm -rf $RPM_BUILD_ROOT
 /etc/profile.d/debug*
 
 %changelog
-* Fri Nov 03 2017 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 9.49.39-1.el7_4.1
-- ARUPDATE option introduced
+* Tue Jan 02 2018 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 9.49.41-1
+- ifdown-post: fix logical error in commit 5d61564
+- network-functions: use POSIX forwarding instead of bash-ism
+
+* Fri Nov 03 2017 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 9.49.40-1
+- require 'redhat-release' instead of /etc/system-release & conflict with older versions
+- ifup-post: always update 'nameserver' & 'search' entries in /etc/resolv.conf
+- systemd/system: symlinks for initscripts' services removed
+- *.old extension added to list of ignored files
+- ifup-eth: wait for STP to complete setup on bridge if $DELAY is not set
+- init.d/functions: convert2sec() function added
+- init.d/functions: is_true() & is_false() extended by ON/OFF support
+- usleep(1) calls replaced with sleep(1) calls
+- network-scripts: DBus calls forwarded to /dev/null
+- network-scripts: firewall-cmd replaced with DBus calls
+- ARPUDATE option introduced
 
 * Wed May 03 2017 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 9.49.39-1
 - sysconfig.txt: mention previously introduced NO_DHCP_HOSTNAME option