diff --git a/.gitignore b/.gitignore index bad5e311f..64507e92e 100644 --- a/.gitignore +++ b/.gitignore @@ -179,6 +179,7 @@ policy/org.freedesktop.network-manager-settings.system.policy policy/org.freedesktop.NetworkManager.policy data/NetworkManager.service +data/NetworkManager-wait-online.service data/org.freedesktop.NetworkManager.service cli/src/nmcli diff --git a/data/Makefile.am b/data/Makefile.am index f91d3a825..2a1d1cf4f 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,10 +1,15 @@ if HAVE_SYSTEMD -systemdsystemunit_DATA = NetworkManager.service +systemdsystemunit_DATA = \ + NetworkManager.service \ + NetworkManager-wait-online.service NetworkManager.service: NetworkManager.service.in $(edit) $< >$@ +NetworkManager-wait-online.service: NetworkManager-wait-online.service.in + $(edit) $< >$@ + servicedir = $(datadir)/dbus-1/system-services service_in_files = org.freedesktop.NetworkManager.service.in service_DATA = $(service_in_files:.service.in=.service) @@ -14,13 +19,14 @@ $(service_DATA): $(service_in_files) Makefile endif edit = sed \ + -e 's|@bindir[@]|$(bindir)|g' \ -e 's|@sbindir[@]|$(sbindir)|g' \ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \ -e 's|@localstatedir[@]|$(localstatedir)|g' EXTRA_DIST = \ NetworkManager.service.in \ + NetworkManager-wait-online.service.in \ org.freedesktop.NetworkManager.service.in -CLEANFILES = NetworkManager.service org.freedesktop.NetworkManager.service - +CLEANFILES = NetworkManager.service NetworkManager-wait-online.service org.freedesktop.NetworkManager.service diff --git a/data/NetworkManager-wait-online.service.in b/data/NetworkManager-wait-online.service.in new file mode 100644 index 000000000..1a43d1744 --- /dev/null +++ b/data/NetworkManager-wait-online.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=Network Manager Wait Online +Requires=NetworkManager.service +Wants=network.target +Before=network.target + +[Service] +Type=oneshot +ExecStart=@bindir@/nm-online -q --timeout=30 + +[Install] +WantedBy=multi-user.target diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in index d93fc6709..bb169fb47 100644 --- a/data/NetworkManager.service.in +++ b/data/NetworkManager.service.in @@ -1,6 +1,8 @@ [Unit] Description=Network Manager After=syslog.target +Wants=network.target +Before=network.target [Service] Type=dbus @@ -8,5 +10,5 @@ BusName=org.freedesktop.NetworkManager ExecStart=@sbindir@/NetworkManager --no-daemon [Install] -WantedBy=network.target multi-user.target +WantedBy=multi-user.target Alias=dbus-org.freedesktop.NetworkManager.service