summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS61
-rw-r--r--hwdb/70-pointingstick.hwdb2
-rw-r--r--shell-completion/bash/systemctl.in22
-rw-r--r--src/libsystemd/sd-bus/test-bus-creds.c6
-rw-r--r--src/login/logind-dbus.c31
-rw-r--r--src/network/networkd-dhcp4.c6
-rw-r--r--src/network/networkd-manager.c6
-rw-r--r--src/test/test-engine.c2
-rw-r--r--src/test/test-path.c2
-rw-r--r--src/test/test-sched-prio.c2
-rw-r--r--units/systemd-bus-proxyd.service.m4.in5
11 files changed, 121 insertions, 24 deletions
diff --git a/NEWS b/NEWS
index 1baa9aa112..56bdf46876 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,66 @@
systemd System and Service Manager
+CHANGES WITH 226:
+
+ * The DHCP implementation of systemd-networkd gained a set of new
+ features:
+
+ - Server and client now support transmission and reception of
+ timezone information. It can be configured via the newly introduced
+ network options 'DHCP.UseTimezone=', 'DHCPServer.EmitTimezone=',
+ and 'DHCPServer.Timezone='.
+ Transmission of timezone information is enabled for containers by
+ default now. Furthermore, if systemd-timesyncd is running, it will
+ be updated with the received information.
+
+ - The DHCP server now supports emitting DNS and NTP information. It
+ can be enabled and configured via 'EmitDNS=', 'DNS=', 'EmitNTP=',
+ and 'NTP='.
+ If transmission of DNS and NTP information is enabled, but no
+ specific data-set is configured, the uplink information is used.
+
+ - Lease timeouts can now be configured via 'MaxLeaseTimeSec=' and
+ 'DefaultLeaseTimeSec='.
+
+ - The DHCP server now supports improved predictability of leases.
+ Clients are more likely to get the same lease information back,
+ even if the server loses state.
+
+ - The DHCP server supports two new configuration options to specify
+ the lease pool, 'PoolOffset=' and 'PoolSize='.
+
+ * The encapsulation limit of tunnels in systemd-networkd can now be
+ configured via 'EncapsulationLimit='. It allows modifying the maximum
+ additional levels of encapsulation that are permitted to be prepended
+ to a packet.
+
+ * systemd now supports the concept of user-buses over session-buses, if
+ used with dbus-1.10 (and enabled via dbus --enable-user-session).
+
+ * systemd-networkd now supports predictable interface names for virtio
+ devices.
+
+ * systemd now optionally supports the unified cgroup hierarchy. If
+ enabled via the kernel command-line option
+ 'systemd.unified_cgroup_hierarchy=1', systemd will try to mount the
+ unified cgroup hierarchy directly on /sys/fs/cgroup. If not enabled,
+ or not available, systemd will fall back to legacy cgroups.
+ Host system and containers can mix and match legacy and unified
+ hierarchies as they wish. By default, nspawn will use the same
+ hierarchy as the host.
+ Please note that the unified hierarchy is an experimental kernel
+ feature and is likely to change in one of the next kernel releases.
+ Therefore, it should not be enabled by default.
+
+ Contributions from: Cristian Rodríguez, Daniel Mack, David Herrmann,
+ Eugene Yakubovich, Evgeny Vereshchagin, Filipe Brandenburger, Jan
+ Alexander Steffens (heftig), Jan Synacek, Kay Sievers, Lennart
+ Poettering, Mangix, Marcel Holtmann, Martin Pitt, Michal Sekletar, Peter
+ Hutterer, Piotr Drąg, reverendhomer, Robin Hack, Susant Sahani, Sylvain
+ Pasche, Thomas Hindoe Paaboel Andersen, Tom Gundersen
+
+ -- Berlin, 2015-09-XX
+
CHANGES WITH 225:
* machinectl gained a new verb 'shell' which opens a fresh shell on the
diff --git a/hwdb/70-pointingstick.hwdb b/hwdb/70-pointingstick.hwdb
index b36c897bd6..8e674b1123 100644
--- a/hwdb/70-pointingstick.hwdb
+++ b/hwdb/70-pointingstick.hwdb
@@ -98,6 +98,8 @@ evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX240
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT440s:*
# Lenovo Thinkpad T540p
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT540p:*
+# Lenovo Thinkpad T550 / W550s
+evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT550:*
POINTINGSTICK_SENSITIVITY=200
POINTINGSTICK_CONST_ACCEL=1.0
diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
index 21c79cae8e..4d63e2870f 100644
--- a/shell-completion/bash/systemctl.in
+++ b/shell-completion/bash/systemctl.in
@@ -85,6 +85,12 @@ __get_masked_units () { __systemctl $1 list-unit-files \
| { while read -r a b c ; do [[ $b == "masked" ]] && echo " $a"; done; }; }
__get_all_unit_files () { { __systemctl $1 list-unit-files; } | { while read -r a b; do echo " $a"; done; }; }
+__get_machines() {
+ local a b
+ (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager) | \
+ { while read a b; do echo " $a"; done; } | sort -u;
+}
+
_systemctl () {
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
local i verb comps mode
@@ -92,8 +98,10 @@ _systemctl () {
local -A OPTS=(
[STANDALONE]='--all -a --reverse --after --before --defaults --failed --force -f --full -l --global
--help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall
- --quiet -q --privileged -P --system --user --version --runtime --recursive -r --firmware-setup'
- [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root'
+ --quiet -q --privileged -P --system --user --version --runtime --recursive -r --firmware-setup
+ --show-types -i --ignore-inhibitors --plain'
+ [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root
+ --preset-mode -n --lines -o --output -M --machine'
)
if __contains_word "--user" ${COMP_WORDS[*]}; then
@@ -132,6 +140,16 @@ _systemctl () {
--property|-p)
comps=$(__systemd_properties $mode)
;;
+ --preset-mode)
+ comps='full enable-only disable-only'
+ ;;
+ --output|-o)
+ comps='short short-iso short-precise short-monotonic verbose export json
+ json-pretty json-sse cat'
+ ;;
+ --machine|-M)
+ comps=$( __get_machines )
+ ;;
esac
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
return 0
diff --git a/src/libsystemd/sd-bus/test-bus-creds.c b/src/libsystemd/sd-bus/test-bus-creds.c
index edd5033db2..580117165a 100644
--- a/src/libsystemd/sd-bus/test-bus-creds.c
+++ b/src/libsystemd/sd-bus/test-bus-creds.c
@@ -22,11 +22,17 @@
#include "sd-bus.h"
#include "bus-dump.h"
#include "bus-util.h"
+#include "cgroup-util.h"
int main(int argc, char *argv[]) {
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
int r;
+ if (cg_unified() == -ENOEXEC) {
+ puts("Skipping test: /sys/fs/cgroup/ not available");
+ return EXIT_TEST_SKIP;
+ }
+
r = sd_bus_creds_new_from_pid(&creds, 0, _SD_BUS_CREDS_ALL);
assert_se(r >= 0);
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 5b2b36b9c0..e433549cb9 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -1339,8 +1339,7 @@ static int bus_manager_log_shutdown(
InhibitWhat w,
const char *unit_name) {
- const char *p;
- const char *q;
+ const char *p, *q;
assert(m);
assert(unit_name);
@@ -1365,8 +1364,8 @@ static int bus_manager_log_shutdown(
q = NULL;
}
- if (m->wall_message)
- p = strjoina(p, " (", m->wall_message, ")", NULL);
+ if (!isempty(m->wall_message))
+ p = strjoina(p, " (", m->wall_message, ")");
return log_struct(LOG_NOTICE,
LOG_MESSAGE_ID(SD_MESSAGE_SHUTDOWN),
@@ -1797,9 +1796,11 @@ static int update_schedule_file(Manager *m) {
if (r < 0)
return log_error_errno(r, "Failed to create shutdown subdirectory: %m");
- t = cescape(m->wall_message);
- if (!t)
- return log_oom();
+ if (!isempty(m->wall_message)) {
+ t = cescape(m->wall_message);
+ if (!t)
+ return log_oom();
+ }
r = fopen_temporary("/run/systemd/shutdown/scheduled", &f, &temp_path);
if (r < 0)
@@ -1815,7 +1816,7 @@ static int update_schedule_file(Manager *m) {
m->enable_wall_messages,
m->scheduled_shutdown_type);
- if (!isempty(m->wall_message))
+ if (t)
fprintf(f, "WALL_MESSAGE=%s\n", t);
r = fflush_and_check(f);
@@ -2294,7 +2295,7 @@ static int method_set_wall_message(
int r;
Manager *m = userdata;
char *wall_message;
- bool enable_wall_messages;
+ int enable_wall_messages;
assert(message);
assert(m);
@@ -2310,15 +2311,19 @@ static int method_set_wall_message(
UID_INVALID,
&m->polkit_registry,
error);
-
if (r < 0)
return r;
if (r == 0)
return 1; /* Will call us back */
- r = free_and_strdup(&m->wall_message, wall_message);
- if (r < 0)
- return log_oom();
+ if (isempty(wall_message))
+ m->wall_message = mfree(m->wall_message);
+ else {
+ r = free_and_strdup(&m->wall_message, wall_message);
+ if (r < 0)
+ return log_oom();
+ }
+
m->enable_wall_messages = enable_wall_messages;
return sd_bus_reply_method_return(message, NULL);
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
index 36601367bf..4ffb01382f 100644
--- a/src/network/networkd-dhcp4.c
+++ b/src/network/networkd-dhcp4.c
@@ -60,7 +60,7 @@ static int link_set_dhcp_routes(Link *link) {
assert(link->dhcp_lease);
r = sd_dhcp_lease_get_router(link->dhcp_lease, &gateway);
- if (r < 0 && r != -ENOENT)
+ if (r < 0 && r != -ENODATA)
return log_link_warning_errno(link, r, "DHCP error: could not get gateway: %m");
if (r >= 0) {
@@ -112,7 +112,7 @@ static int link_set_dhcp_routes(Link *link) {
}
n = sd_dhcp_lease_get_routes(link->dhcp_lease, &static_routes);
- if (n == -ENOENT)
+ if (n == -ENODATA)
return 0;
if (n < 0)
return log_link_warning_errno(link, n, "DHCP error: could not get routes: %m");
@@ -378,7 +378,7 @@ static int dhcp_lease_acquired(sd_dhcp_client *client, Link *link) {
prefixlen = in_addr_netmask_to_prefixlen(&netmask);
r = sd_dhcp_lease_get_router(lease, &gateway);
- if (r < 0 && r != -ENOENT)
+ if (r < 0 && r != -ENODATA)
return log_link_error_errno(link, r, "DHCP error: Could not get gateway: %m");
if (r >= 0)
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index 16f732f244..92b607297d 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -757,7 +757,7 @@ int manager_save(Manager *m) {
r = set_put_in_addrv(dns, addresses, r);
if (r < 0)
return r;
- } else if (r < 0 && r != -ENOENT)
+ } else if (r < 0 && r != -ENODATA)
return r;
}
@@ -769,7 +769,7 @@ int manager_save(Manager *m) {
r = set_put_in_addrv(ntp, addresses, r);
if (r < 0)
return r;
- } else if (r < 0 && r != -ENOENT)
+ } else if (r < 0 && r != -ENODATA)
return r;
}
@@ -781,7 +781,7 @@ int manager_save(Manager *m) {
r = set_put_strdup(domains, domainname);
if (r < 0)
return r;
- } else if (r != -ENOENT)
+ } else if (r != -ENODATA)
return r;
}
}
diff --git a/src/test/test-engine.c b/src/test/test-engine.c
index a7ab21a415..6596069ade 100644
--- a/src/test/test-engine.c
+++ b/src/test/test-engine.c
@@ -38,7 +38,7 @@ int main(int argc, char *argv[]) {
/* prepare the test */
assert_se(set_unit_path(TEST_DIR) >= 0);
r = manager_new(MANAGER_USER, true, &m);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT)) {
+ if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT, -ENOEXEC)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return EXIT_TEST_SKIP;
}
diff --git a/src/test/test-path.c b/src/test/test-path.c
index 5d190378f1..676c9f1793 100644
--- a/src/test/test-path.c
+++ b/src/test/test-path.c
@@ -40,7 +40,7 @@ static int setup_test(Manager **m) {
assert_se(m);
r = manager_new(MANAGER_USER, true, &tmp);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT)) {
+ if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT, -ENOEXEC)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return -EXIT_TEST_SKIP;
}
diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c
index f915539e00..ebc9110c4d 100644
--- a/src/test/test-sched-prio.c
+++ b/src/test/test-sched-prio.c
@@ -35,7 +35,7 @@ int main(int argc, char *argv[]) {
/* prepare the test */
assert_se(set_unit_path(TEST_DIR) >= 0);
r = manager_new(MANAGER_USER, true, &m);
- if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT)) {
+ if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT, -ENOEXEC)) {
printf("Skipping test: manager_new: %s", strerror(-r));
return EXIT_TEST_SKIP;
}
diff --git a/units/systemd-bus-proxyd.service.m4.in b/units/systemd-bus-proxyd.service.m4.in
index 64f5ac7d17..e75cdb1a59 100644
--- a/units/systemd-bus-proxyd.service.m4.in
+++ b/units/systemd-bus-proxyd.service.m4.in
@@ -18,3 +18,8 @@ PrivateDevices=yes
PrivateNetwork=yes
ProtectSystem=full
ProtectHome=yes
+
+# The proxy manages connections of all users, so it needs an elevated file
+# limit. It does proper per-user accounting (indirectly via kdbus), therefore,
+# the effective per-user limits stay the same.
+LimitNOFILE=16384