diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/ima-setup.c | 8 | ||||
-rw-r--r-- | src/core/target.c | 5 | ||||
-rw-r--r-- | src/coredump/coredump.c | 8 | ||||
-rw-r--r-- | src/journal-remote/journal-remote.c | 6 | ||||
-rw-r--r-- | src/journal-remote/journal-upload.c | 6 | ||||
-rw-r--r-- | src/journal/journald-server.c | 8 | ||||
-rw-r--r-- | src/kernel-install/50-depmod.install | 12 | ||||
-rw-r--r-- | src/login/logind.c | 8 | ||||
-rw-r--r-- | src/network/netdev/netdev-gperf.gperf | 1 | ||||
-rw-r--r-- | src/network/netdev/vlan.c | 16 | ||||
-rw-r--r-- | src/network/netdev/vlan.h | 2 | ||||
-rw-r--r-- | src/network/networkd-conf.c | 8 | ||||
-rw-r--r-- | src/network/networkd-network-gperf.gperf | 1 | ||||
-rw-r--r-- | src/network/networkd-route.c | 41 | ||||
-rw-r--r-- | src/network/networkd-route.h | 1 | ||||
-rw-r--r-- | src/resolve/resolved-conf.c | 8 | ||||
-rw-r--r-- | src/shared/sleep-config.c | 6 | ||||
-rw-r--r-- | src/timesync/timesyncd-conf.c | 8 |
18 files changed, 115 insertions, 38 deletions
diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c index 94ae429f46..7b5c98a57c 100644 --- a/src/core/ima-setup.c +++ b/src/core/ima-setup.c @@ -49,6 +49,11 @@ int ima_setup(void) { return 0; } + if (access(IMA_POLICY_PATH, F_OK) < 0) { + log_debug("No IMA custom policy file "IMA_POLICY_PATH", ignoring."); + return 0; + } + imafd = open(IMA_SECFS_POLICY, O_WRONLY|O_CLOEXEC); if (imafd < 0) { log_error_errno(errno, "Failed to open the IMA kernel interface "IMA_SECFS_POLICY", ignoring: %m"); @@ -62,8 +67,7 @@ int ima_setup(void) { /* fall back to copying the policy line-by-line */ input = fopen(IMA_POLICY_PATH, "re"); if (!input) { - log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, errno, - "Failed to open the IMA custom policy file "IMA_POLICY_PATH", ignoring: %m"); + log_warning_errno(errno, "Failed to open the IMA custom policy file "IMA_POLICY_PATH", ignoring: %m"); return 0; } diff --git a/src/core/target.c b/src/core/target.c index ff0d764fb5..2a58dd394d 100644 --- a/src/core/target.c +++ b/src/core/target.c @@ -63,6 +63,9 @@ static int target_add_default_dependencies(Target *t) { assert(t); + if (!UNIT(t)->default_dependencies) + return 0; + /* Imply ordering for requirement dependencies on target * units. Note that when the user created a contradicting * ordering manually we won't add anything in here to make @@ -93,7 +96,7 @@ static int target_load(Unit *u) { return r; /* This is a new unit? Then let's add in some extras */ - if (u->load_state == UNIT_LOADED && u->default_dependencies) { + if (u->load_state == UNIT_LOADED) { r = target_add_default_dependencies(t); if (r < 0) return r; diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index 5828e949e3..894feae4c7 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -144,10 +144,10 @@ static int parse_config(void) { }; return config_parse_many_nulstr(PKGSYSCONFDIR "/coredump.conf", - CONF_PATHS_NULSTR("systemd/coredump.conf.d"), - "Coredump\0", - config_item_table_lookup, items, - false, NULL); + CONF_PATHS_NULSTR("systemd/coredump.conf.d"), + "Coredump\0", + config_item_table_lookup, items, + false, NULL); } static inline uint64_t storage_size_max(void) { diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c index 890b7c8180..36c1a32dcd 100644 --- a/src/journal-remote/journal-remote.c +++ b/src/journal-remote/journal-remote.c @@ -1200,9 +1200,9 @@ static int parse_config(void) { {}}; return config_parse_many_nulstr(PKGSYSCONFDIR "/journal-remote.conf", - CONF_PATHS_NULSTR("systemd/journal-remote.conf.d"), - "Remote\0", config_item_table_lookup, items, - false, NULL); + CONF_PATHS_NULSTR("systemd/journal-remote.conf.d"), + "Remote\0", config_item_table_lookup, items, + false, NULL); } static void help(void) { diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c index 371b6acc64..e0858dda7b 100644 --- a/src/journal-remote/journal-upload.c +++ b/src/journal-remote/journal-upload.c @@ -541,9 +541,9 @@ static int parse_config(void) { {}}; return config_parse_many_nulstr(PKGSYSCONFDIR "/journal-upload.conf", - CONF_PATHS_NULSTR("systemd/journal-upload.conf.d"), - "Upload\0", config_item_table_lookup, items, - false, NULL); + CONF_PATHS_NULSTR("systemd/journal-upload.conf.d"), + "Upload\0", config_item_table_lookup, items, + false, NULL); } static void help(void) { diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 6466e46ccc..667dfa00ff 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -1637,10 +1637,10 @@ static int server_parse_config_file(Server *s) { assert(s); return config_parse_many_nulstr(PKGSYSCONFDIR "/journald.conf", - CONF_PATHS_NULSTR("systemd/journald.conf.d"), - "Journal\0", - config_item_perf_lookup, journald_gperf_lookup, - false, s); + CONF_PATHS_NULSTR("systemd/journald.conf.d"), + "Journal\0", + config_item_perf_lookup, journald_gperf_lookup, + false, s); } static int server_dispatch_sync(sd_event_source *es, usec_t t, void *userdata) { diff --git a/src/kernel-install/50-depmod.install b/src/kernel-install/50-depmod.install index 68c24bed7a..56925c8a5d 100644 --- a/src/kernel-install/50-depmod.install +++ b/src/kernel-install/50-depmod.install @@ -2,7 +2,15 @@ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh -[[ $1 == "add" ]] || exit 0 [[ $2 ]] || exit 1 -exec depmod -a "$2" +case "$1" in + add) + exec depmod -a "$2" + ;; + remove) + exec rm -f /lib/modules/"$2"/modules.{alias{,.bin},builtin.bin,dep{,.bin},devname,softdep,symbols{,.bin}} + ;; + *) + exit 0 +esac diff --git a/src/login/logind.c b/src/login/logind.c index 19bae294a4..1e2acc838b 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1004,10 +1004,10 @@ static int manager_parse_config_file(Manager *m) { assert(m); return config_parse_many_nulstr(PKGSYSCONFDIR "/logind.conf", - CONF_PATHS_NULSTR("systemd/logind.conf.d"), - "Login\0", - config_item_perf_lookup, logind_gperf_lookup, - false, m); + CONF_PATHS_NULSTR("systemd/logind.conf.d"), + "Login\0", + config_item_perf_lookup, logind_gperf_lookup, + false, m); } static int manager_dispatch_reload_signal(sd_event_source *s, const struct signalfd_siginfo *si, void *userdata) { diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf index 925af1c579..077fbc1d5c 100644 --- a/src/network/netdev/netdev-gperf.gperf +++ b/src/network/netdev/netdev-gperf.gperf @@ -36,6 +36,7 @@ NetDev.Kind, config_parse_netdev_kind, 0, NetDev.MTUBytes, config_parse_iec_size, 0, offsetof(NetDev, mtu) NetDev.MACAddress, config_parse_hwaddr, 0, offsetof(NetDev, mac) VLAN.Id, config_parse_vlanid, 0, offsetof(VLan, id) +VLAN.GVRP, config_parse_tristate, 0, offsetof(VLan, gvrp) MACVLAN.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) MACVTAP.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode) IPVLAN.Mode, config_parse_ipvlan_mode, 0, offsetof(IPVlan, mode) diff --git a/src/network/netdev/vlan.c b/src/network/netdev/vlan.c index 28c061fa4f..718b627b2b 100644 --- a/src/network/netdev/vlan.c +++ b/src/network/netdev/vlan.c @@ -17,12 +17,14 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <linux/if_vlan.h> #include <net/if.h> #include "netdev/vlan.h" #include "vlan-util.h" static int netdev_vlan_fill_message_create(NetDev *netdev, Link *link, sd_netlink_message *req) { + struct ifla_vlan_flags flags = {}; VLan *v; int r; @@ -38,6 +40,19 @@ static int netdev_vlan_fill_message_create(NetDev *netdev, Link *link, sd_netlin if (r < 0) return log_netdev_error_errno(netdev, r, "Could not append IFLA_VLAN_ID attribute: %m"); + if (v->gvrp != -1) { + flags.mask |= VLAN_FLAG_GVRP; + + if (v->gvrp) + flags.flags |= VLAN_FLAG_GVRP; + else + flags.flags &= ~VLAN_FLAG_GVRP; + } + + r = sd_netlink_message_append_data(req, IFLA_VLAN_FLAGS, &flags, sizeof(struct ifla_vlan_flags)); + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VLAN_FLAGS attribute: %m"); + return 0; } @@ -66,6 +81,7 @@ static void vlan_init(NetDev *netdev) { assert(v); v->id = VLANID_INVALID; + v->gvrp = -1; } const NetDevVTable vlan_vtable = { diff --git a/src/network/netdev/vlan.h b/src/network/netdev/vlan.h index fade899997..19a62b76c1 100644 --- a/src/network/netdev/vlan.h +++ b/src/network/netdev/vlan.h @@ -27,6 +27,8 @@ struct VLan { NetDev meta; uint16_t id; + + int gvrp; }; DEFINE_NETDEV_CAST(VLAN, VLan); diff --git a/src/network/networkd-conf.c b/src/network/networkd-conf.c index aaa27f311d..e28e018116 100644 --- a/src/network/networkd-conf.c +++ b/src/network/networkd-conf.c @@ -32,10 +32,10 @@ int manager_parse_config_file(Manager *m) { assert(m); return config_parse_many_nulstr(PKGSYSCONFDIR "/networkd.conf", - CONF_PATHS_NULSTR("systemd/networkd.conf.d"), - "DHCP\0", - config_item_perf_lookup, networkd_gperf_lookup, - false, m); + CONF_PATHS_NULSTR("systemd/networkd.conf.d"), + "DHCP\0", + config_item_perf_lookup, networkd_gperf_lookup, + false, m); } static const char* const duid_type_table[_DUID_TYPE_MAX] = { diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index 9658978651..abd921ee1a 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -86,6 +86,7 @@ Route.Metric, config_parse_route_priority, Route.Scope, config_parse_route_scope, 0, 0 Route.PreferredSource, config_parse_preferred_src, 0, 0 Route.Table, config_parse_route_table, 0, 0 +Route.GatewayOnlink, config_parse_gateway_onlink, 0, 0 DHCP.ClientIdentifier, config_parse_dhcp_client_identifier, 0, offsetof(Network, dhcp_client_identifier) DHCP.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp_use_dns) DHCP.UseNTP, config_parse_bool, 0, offsetof(Network, dhcp_use_ntp) diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 570083f180..e2a5c77ed1 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -939,3 +939,44 @@ int config_parse_route_table(const char *unit, return 0; } + +int config_parse_gateway_onlink(const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + Network *network = userdata; + _cleanup_route_free_ Route *n = NULL; + int r; + + assert(filename); + assert(section); + assert(lvalue); + assert(rvalue); + assert(data); + + r = route_new_static(network, filename, section_line, &n); + if (r < 0) + return r; + + r = parse_boolean(rvalue); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, + "Could not parse gateway onlink \"%s\", ignoring assignment: %m", rvalue); + return 0; + } + + if (r) + n->flags |= RTNH_F_ONLINK; + else + n->flags &= ~RTNH_F_ONLINK; + + n = NULL; + + return 0; +} diff --git a/src/network/networkd-route.h b/src/network/networkd-route.h index 4ebfa0f0bd..e2446b3e92 100644 --- a/src/network/networkd-route.h +++ b/src/network/networkd-route.h @@ -75,3 +75,4 @@ int config_parse_destination(const char *unit, const char *filename, unsigned li int config_parse_route_priority(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_route_scope(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_route_table(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_gateway_onlink(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/resolve/resolved-conf.c b/src/resolve/resolved-conf.c index abf3263178..97334a0af7 100644 --- a/src/resolve/resolved-conf.c +++ b/src/resolve/resolved-conf.c @@ -233,10 +233,10 @@ int manager_parse_config_file(Manager *m) { assert(m); r = config_parse_many_nulstr(PKGSYSCONFDIR "/resolved.conf", - CONF_PATHS_NULSTR("systemd/resolved.conf.d"), - "Resolve\0", - config_item_perf_lookup, resolved_gperf_lookup, - false, m); + CONF_PATHS_NULSTR("systemd/resolved.conf.d"), + "Resolve\0", + config_item_perf_lookup, resolved_gperf_lookup, + false, m); if (r < 0) return r; diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c index ed31a80c8d..8c1624ff46 100644 --- a/src/shared/sleep-config.c +++ b/src/shared/sleep-config.c @@ -59,9 +59,9 @@ int parse_sleep_config(const char *verb, char ***_modes, char ***_states) { }; config_parse_many_nulstr(PKGSYSCONFDIR "/sleep.conf", - CONF_PATHS_NULSTR("systemd/sleep.conf.d"), - "Sleep\0", config_item_table_lookup, items, - false, NULL); + CONF_PATHS_NULSTR("systemd/sleep.conf.d"), + "Sleep\0", config_item_table_lookup, items, + false, NULL); if (streq(verb, "suspend")) { /* empty by default */ diff --git a/src/timesync/timesyncd-conf.c b/src/timesync/timesyncd-conf.c index bf25b112e1..99bdb55e98 100644 --- a/src/timesync/timesyncd-conf.c +++ b/src/timesync/timesyncd-conf.c @@ -99,8 +99,8 @@ int manager_parse_config_file(Manager *m) { assert(m); return config_parse_many_nulstr(PKGSYSCONFDIR "/timesyncd.conf", - CONF_PATHS_NULSTR("systemd/timesyncd.conf.d"), - "Time\0", - config_item_perf_lookup, timesyncd_gperf_lookup, - false, m); + CONF_PATHS_NULSTR("systemd/timesyncd.conf.d"), + "Time\0", + config_item_perf_lookup, timesyncd_gperf_lookup, + false, m); } |