mirror of
https://github.com/systemd/systemd
synced 2025-09-28 08:14:46 +02:00
Compare commits
10 Commits
abcd208840
...
712fffd4b8
Author | SHA1 | Date | |
---|---|---|---|
![]() |
712fffd4b8 | ||
![]() |
0375cb546f | ||
![]() |
1536b7b2d0 | ||
![]() |
e2645ca619 | ||
![]() |
5adfb06d55 | ||
![]() |
79efcd0235 | ||
![]() |
b7ec9e719b | ||
![]() |
a7e508f899 | ||
![]() |
a66a402da4 | ||
![]() |
a533007815 |
4
README
4
README
@ -192,8 +192,8 @@ REQUIREMENTS:
|
||||
Any configuration options can be specified as -Darg=value... arguments
|
||||
to meson. After the build directory is initially configured, meson will
|
||||
refuse to run again, and options must be changed with:
|
||||
mesonconf -Darg=value...
|
||||
mesonconf without any arguments will print out available options and
|
||||
meson configure -Darg=value build/
|
||||
meson configure without any arguments will print out available options and
|
||||
their current values.
|
||||
|
||||
Useful commands:
|
||||
|
@ -190,6 +190,14 @@ mouse:usb:v413cp301a:name:PixArt Dell MS116 USB Optical Mouse:*
|
||||
mouse:usb:v0461p4d46:name:USB Optical Mouse:*
|
||||
MOUSE_DPI=1000@125
|
||||
|
||||
##########################################
|
||||
# Elecom
|
||||
#########################################
|
||||
|
||||
# Elecom HUGE TrackBall (M-HT1DR)
|
||||
mouse:usb:v056ep010d:name:ELECOM TrackBall Mouse HUGE TrackBall:*
|
||||
MOUSE_DPI=500@125 *1000@125 1500@125
|
||||
|
||||
##########################################
|
||||
# Fujitsu Siemens
|
||||
##########################################
|
||||
|
@ -1866,6 +1866,14 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
|
||||
<varname>DHCP=</varname> setting described above, or invoked by the IPv6 Router Advertisement:</para>
|
||||
|
||||
<variablelist class='network-directives'>
|
||||
<varlistentry>
|
||||
<term><varname>UseAddress=</varname></term>
|
||||
<listitem>
|
||||
<para>When true (the default), the IP addresses provided by the DHCPv6 server will be
|
||||
assigned.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>UseDNS=</varname></term>
|
||||
<term><varname>UseNTP=</varname></term>
|
||||
|
@ -456,9 +456,7 @@ DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(container, int);
|
||||
|
||||
int detect_container(void) {
|
||||
static thread_local int cached_found = _VIRTUALIZATION_INVALID;
|
||||
_cleanup_free_ char *m = NULL;
|
||||
_cleanup_free_ char *o = NULL;
|
||||
_cleanup_free_ char *p = NULL;
|
||||
_cleanup_free_ char *m = NULL, *o = NULL, *p = NULL;
|
||||
const char *e = NULL;
|
||||
int r;
|
||||
|
||||
@ -466,16 +464,23 @@ int detect_container(void) {
|
||||
return cached_found;
|
||||
|
||||
/* /proc/vz exists in container and outside of the container, /proc/bc only outside of the container. */
|
||||
if (access("/proc/vz", F_OK) >= 0 &&
|
||||
access("/proc/bc", F_OK) < 0) {
|
||||
r = VIRTUALIZATION_OPENVZ;
|
||||
goto finish;
|
||||
if (access("/proc/vz", F_OK) < 0) {
|
||||
if (errno != ENOENT)
|
||||
log_debug_errno(errno, "Failed to check if /proc/vz exists, ignoring: %m");
|
||||
} else if (access("/proc/bc", F_OK) < 0) {
|
||||
if (errno == ENOENT) {
|
||||
r = VIRTUALIZATION_OPENVZ;
|
||||
goto finish;
|
||||
}
|
||||
|
||||
log_debug_errno(errno, "Failed to check if /proc/bc exists, ignoring: %m");
|
||||
}
|
||||
|
||||
/* "Official" way of detecting WSL https://github.com/Microsoft/WSL/issues/423#issuecomment-221627364 */
|
||||
r = read_one_line_file("/proc/sys/kernel/osrelease", &o);
|
||||
if (r >= 0 &&
|
||||
(strstr(o, "Microsoft") || strstr(o, "WSL"))) {
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to read /proc/sys/kernel/osrelease, ignoring: %m");
|
||||
else if (strstr(o, "Microsoft") || strstr(o, "WSL")) {
|
||||
r = VIRTUALIZATION_WSL;
|
||||
goto finish;
|
||||
}
|
||||
@ -484,21 +489,30 @@ int detect_container(void) {
|
||||
* invocation without worrying about it being elsewhere.
|
||||
*/
|
||||
r = get_proc_field("/proc/self/status", "TracerPid", WHITESPACE, &p);
|
||||
if (r == 0 && !streq(p, "0")) {
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to read our own trace PID, ignoring: %m");
|
||||
else if (!streq(p, "0")) {
|
||||
pid_t ptrace_pid;
|
||||
|
||||
r = parse_pid(p, &ptrace_pid);
|
||||
if (r == 0) {
|
||||
const char *pf = procfs_file_alloca(ptrace_pid, "comm");
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to parse our own tracer PID, ignoring: %m");
|
||||
else {
|
||||
_cleanup_free_ char *ptrace_comm = NULL;
|
||||
const char *pf;
|
||||
|
||||
pf = procfs_file_alloca(ptrace_pid, "comm");
|
||||
r = read_one_line_file(pf, &ptrace_comm);
|
||||
if (r >= 0 && startswith(ptrace_comm, "proot")) {
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to read %s, ignoring: %m", pf);
|
||||
else if (startswith(ptrace_comm, "proot")) {
|
||||
r = VIRTUALIZATION_PROOT;
|
||||
goto finish;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The container manager might have placed this in the /run/host hierarchy for us, which is best
|
||||
/* The container manager might have placed this in the /run/host/ hierarchy for us, which is best
|
||||
* because we can be consumed just like that, without special privileges. */
|
||||
r = read_one_line_file("/run/host/container-manager", &m);
|
||||
if (r > 0) {
|
||||
@ -506,7 +520,7 @@ int detect_container(void) {
|
||||
goto translate_name;
|
||||
}
|
||||
if (!IN_SET(r, -ENOENT, 0))
|
||||
return log_debug_errno(r, "Failed to read /run/systemd/container-manager: %m");
|
||||
return log_debug_errno(r, "Failed to read /run/host/container-manager: %m");
|
||||
|
||||
if (getpid_cached() == 1) {
|
||||
/* If we are PID 1 we can just check our own environment variable, and that's authoritative.
|
||||
|
@ -1078,8 +1078,12 @@ static int dhcp6_address_acquired(Link *link) {
|
||||
int r;
|
||||
|
||||
assert(link);
|
||||
assert(link->network);
|
||||
assert(link->dhcp6_lease);
|
||||
|
||||
if (!link->network->dhcp6_use_address)
|
||||
return 0;
|
||||
|
||||
for (sd_dhcp6_lease_reset_address_iter(link->dhcp6_lease);;) {
|
||||
uint32_t lifetime_preferred, lifetime_valid;
|
||||
struct in6_addr ip6_addr;
|
||||
|
@ -221,6 +221,7 @@ DHCPv4.SendOption, config_parse_dhcp_send_option,
|
||||
DHCPv4.SendVendorOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_client_send_vendor_options)
|
||||
DHCPv4.RouteMTUBytes, config_parse_mtu, AF_INET, offsetof(Network, dhcp_route_mtu)
|
||||
DHCPv4.FallbackLeaseLifetimeSec, config_parse_dhcp_fallback_lease_lifetime, 0, 0
|
||||
DHCPv6.UseAddress, config_parse_bool, 0, offsetof(Network, dhcp6_use_address)
|
||||
DHCPv6.UseDNS, config_parse_dhcp_use_dns, 0, 0
|
||||
DHCPv6.UseNTP, config_parse_dhcp_use_ntp, 0, 0
|
||||
DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, dhcp6_rapid_commit)
|
||||
|
@ -352,10 +352,11 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
|
||||
.dhcp_use_timezone = false,
|
||||
.dhcp_ip_service_type = -1,
|
||||
|
||||
.dhcp6_use_address = true,
|
||||
.dhcp6_use_dns = true,
|
||||
.dhcp6_use_ntp = true,
|
||||
.dhcp6_rapid_commit = true,
|
||||
.dhcp6_route_metric = DHCP_ROUTE_METRIC,
|
||||
.dhcp6_use_ntp = true,
|
||||
.dhcp6_use_dns = true,
|
||||
|
||||
.dhcp6_pd = -1,
|
||||
.dhcp6_pd_announce = true,
|
||||
|
@ -146,6 +146,7 @@ struct Network {
|
||||
OrderedHashmap *dhcp_client_send_vendor_options;
|
||||
|
||||
/* DHCPv6 Client support*/
|
||||
bool dhcp6_use_address;
|
||||
bool dhcp6_use_dns;
|
||||
bool dhcp6_use_dns_set;
|
||||
bool dhcp6_use_ntp;
|
||||
|
@ -1,12 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <net/ethernet.h>
|
||||
#include <linux/nl80211.h>
|
||||
|
||||
#include "sd-bus.h"
|
||||
|
||||
#include "log.h"
|
||||
#include "netlink-util.h"
|
||||
#include "wifi-util.h"
|
||||
|
||||
int wifi_get_interface(sd_netlink *genl, int ifindex, enum nl80211_iftype *iftype, char **ssid) {
|
||||
@ -35,8 +29,10 @@ int wifi_get_interface(sd_netlink *genl, int ifindex, enum nl80211_iftype *iftyp
|
||||
}
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to request information about wifi interface %d: %m", ifindex);
|
||||
if (!reply)
|
||||
if (!reply) {
|
||||
log_debug_errno(r, "No reply received to request for information about wifi interface %d, ignoring.", ifindex);
|
||||
goto nodata;
|
||||
}
|
||||
|
||||
r = sd_netlink_message_get_errno(reply);
|
||||
if (r < 0)
|
||||
@ -62,8 +58,8 @@ int wifi_get_interface(sd_netlink *genl, int ifindex, enum nl80211_iftype *iftyp
|
||||
if (ssid) {
|
||||
r = sd_netlink_message_read_string_strdup(reply, NL80211_ATTR_SSID, ssid);
|
||||
if (r == -ENODATA)
|
||||
goto nodata;
|
||||
if (r < 0)
|
||||
*ssid = NULL;
|
||||
else if (r < 0)
|
||||
return log_debug_errno(r, "Failed to get NL80211_ATTR_SSID attribute: %m");
|
||||
}
|
||||
|
||||
@ -101,8 +97,10 @@ int wifi_get_station(sd_netlink *genl, int ifindex, struct ether_addr *bssid) {
|
||||
r = sd_netlink_call(genl, m, 0, &reply);
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to request information about wifi station: %m");
|
||||
if (!reply)
|
||||
if (!reply) {
|
||||
log_debug_errno(r, "No reply received to request for information about wifi station, ignoring.");
|
||||
goto nodata;
|
||||
}
|
||||
|
||||
r = sd_netlink_message_get_errno(reply);
|
||||
if (r < 0)
|
||||
|
@ -3,8 +3,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <linux/nl80211.h>
|
||||
#include <net/ethernet.h>
|
||||
|
||||
#include "netlink-util.h"
|
||||
#include "sd-netlink.h"
|
||||
|
||||
int wifi_get_interface(sd_netlink *genl, int ifindex, enum nl80211_iftype *iftype, char **ssid);
|
||||
int wifi_get_station(sd_netlink *genl, int ifindex, struct ether_addr *bssid);
|
||||
|
@ -125,6 +125,7 @@ MUDURL=
|
||||
RouteMTUBytes=
|
||||
FallbackLeaseLifetimeSec=
|
||||
[DHCPv6]
|
||||
UseAddress=
|
||||
UseNTP=
|
||||
UseDNS=
|
||||
RapidCommit=
|
||||
|
Loading…
x
Reference in New Issue
Block a user