Compare commits

..

No commits in common. "a149d4a95eabe39f36e913f0a0ad9c84007b4e4f" and "c37a43d2ddf7a380ade9b7233817c280e2a51fd1" have entirely different histories.

15 changed files with 30 additions and 117 deletions

View File

@ -3968,8 +3968,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
@org.freedesktop.DBus.Property.EmitsChangedSignal("const") @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b PassPacketInfo = ...; readonly b PassPacketInfo = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const") @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly s Timestamping = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b RemoveOnStop = ...; readonly b RemoveOnStop = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const") @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly a(ss) Listen = [...]; readonly a(ss) Listen = [...];
@ -4525,8 +4523,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<!--property PassPacketInfo is not documented!--> <!--property PassPacketInfo is not documented!-->
<!--property Timestamping is not documented!-->
<!--property RemoveOnStop is not documented!--> <!--property RemoveOnStop is not documented!-->
<!--property Listen is not documented!--> <!--property Listen is not documented!-->
@ -5069,8 +5065,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<variablelist class="dbus-property" generated="True" extra-ref="PassPacketInfo"/> <variablelist class="dbus-property" generated="True" extra-ref="PassPacketInfo"/>
<variablelist class="dbus-property" generated="True" extra-ref="Timestamping"/>
<variablelist class="dbus-property" generated="True" extra-ref="RemoveOnStop"/> <variablelist class="dbus-property" generated="True" extra-ref="RemoveOnStop"/>
<variablelist class="dbus-property" generated="True" extra-ref="Listen"/> <variablelist class="dbus-property" generated="True" extra-ref="Listen"/>

View File

@ -253,10 +253,11 @@
<varlistentry> <varlistentry>
<term><varname>ListenFIFO=</varname></term> <term><varname>ListenFIFO=</varname></term>
<listitem><para>Specifies a file system FIFO (see <citerefentry <listitem><para>Specifies a file system FIFO to listen on.
project='man-pages'><refentrytitle>fifo</refentrytitle><manvolnum>7</manvolnum></citerefentry> for This expects an absolute file system path as argument.
details) to listen on. This expects an absolute file system path as argument. Behavior otherwise is Behavior otherwise is very similar to the
very similar to the <varname>ListenDatagram=</varname> directive above.</para></listitem> <varname>ListenDatagram=</varname> directive
above.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
@ -284,12 +285,12 @@
<varlistentry> <varlistentry>
<term><varname>ListenMessageQueue=</varname></term> <term><varname>ListenMessageQueue=</varname></term>
<listitem><para>Specifies a POSIX message queue name to listen on (see <citerefentry <listitem><para>Specifies a POSIX message queue name to listen
project='man-pages'><refentrytitle>mq_overview</refentrytitle><manvolnum>7</manvolnum></citerefentry> on. This expects a valid message queue name (i.e. beginning
for details). This expects a valid message queue name (i.e. beginning with with /). Behavior otherwise is very similar to the
<literal>/</literal>). Behavior otherwise is very similar to the <varname>ListenFIFO=</varname> <varname>ListenFIFO=</varname> directive above. On Linux
directive above. On Linux message queue descriptors are actually file descriptors and can be message queue descriptors are actually file descriptors and
inherited between processes.</para></listitem> can be inherited between processes.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
@ -697,20 +698,10 @@
<varlistentry> <varlistentry>
<term><varname>PassPacketInfo=</varname></term> <term><varname>PassPacketInfo=</varname></term>
<listitem><para>Takes a boolean value. This controls the <constant>IP_PKTINFO</constant>, <listitem><para>Takes a boolean value. This controls the <constant>IP_PKTINFO</constant>,
<constant>IPV6_RECVPKTINFO</constant>, <constant>NETLINK_PKTINFO</constant> or <constant>IPV6_RECVPKTINFO</constant> and <constant>NETLINK_PKTINFO</constant> socket options, which
<constant>PACKET_AUXDATA</constant> socket options, which enable reception of additional per-packet enable reception of additional per-packet metadata as ancillary message, on
metadata as ancillary message, on <constant>AF_INET</constant>, <constant>AF_INET6</constant>, <constant>AF_INET</constant>, <constant>AF_INET6</constant> and <constant>AF_UNIX</constant> sockets.
<constant>AF_UNIX</constant> and <constant>AF_PACKET</constant> sockets. Defaults to Defaults to <option>false</option>.</para></listitem>
<option>false</option>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>Timestamping=</varname></term>
<listitem><para>Takes one of <literal>off</literal>, <literal>us</literal> (alias:
<literal>usec</literal>, <literal>µs</literal>) or <literal>ns</literal> (alias:
<literal>nsec</literal>). This controls the <constant>SO_TIMESTAMP</constant> or
<constant>SO_TIMESTAMPNS</constant> socket options, and enables whether ingress network traffic shall
carry timestamping metadata. Defaults to <option>off</option>.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -1240,9 +1240,6 @@ int socket_set_recvpktinfo(int fd, int af, bool b) {
case AF_NETLINK: case AF_NETLINK:
return setsockopt_int(fd, SOL_NETLINK, NETLINK_PKTINFO, b); return setsockopt_int(fd, SOL_NETLINK, NETLINK_PKTINFO, b);
case AF_PACKET:
return setsockopt_int(fd, SOL_PACKET, PACKET_AUXDATA, b);
default: default:
return -EAFNOSUPPORT; return -EAFNOSUPPORT;
} }

View File

@ -20,7 +20,6 @@
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result, socket_result, SocketResult); static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result, socket_result, SocketResult);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_bind_ipv6_only, socket_address_bind_ipv6_only, SocketAddressBindIPv6Only); static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_bind_ipv6_only, socket_address_bind_ipv6_only, SocketAddressBindIPv6Only);
static BUS_DEFINE_PROPERTY_GET(property_get_fdname, "s", Socket, socket_fdname); static BUS_DEFINE_PROPERTY_GET(property_get_fdname, "s", Socket, socket_fdname);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_timestamping, socket_timestamping, SocketTimestamping);
static int property_get_listen( static int property_get_listen(
sd_bus *bus, sd_bus *bus,
@ -107,7 +106,6 @@ const sd_bus_vtable bus_socket_vtable[] = {
SD_BUS_PROPERTY("PassCredentials", "b", bus_property_get_bool, offsetof(Socket, pass_cred), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("PassCredentials", "b", bus_property_get_bool, offsetof(Socket, pass_cred), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PassSecurity", "b", bus_property_get_bool, offsetof(Socket, pass_sec), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("PassSecurity", "b", bus_property_get_bool, offsetof(Socket, pass_sec), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PassPacketInfo", "b", bus_property_get_bool, offsetof(Socket, pass_pktinfo), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("PassPacketInfo", "b", bus_property_get_bool, offsetof(Socket, pass_pktinfo), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Timestamping", "s", property_get_timestamping, offsetof(Socket, timestamping), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("RemoveOnStop", "b", bus_property_get_bool, offsetof(Socket, remove_on_stop), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("RemoveOnStop", "b", bus_property_get_bool, offsetof(Socket, remove_on_stop), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Listen", "a(ss)", property_get_listen, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Listen", "a(ss)", property_get_listen, 0, SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("Symlinks", "as", NULL, offsetof(Socket, symlinks), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Symlinks", "as", NULL, offsetof(Socket, symlinks), SD_BUS_VTABLE_PROPERTY_CONST),
@ -161,7 +159,6 @@ static BUS_DEFINE_SET_TRANSIENT_STRING_WITH_CHECK(fdname, fdname_is_valid);
static BUS_DEFINE_SET_TRANSIENT_STRING_WITH_CHECK(ifname, ifname_valid); static BUS_DEFINE_SET_TRANSIENT_STRING_WITH_CHECK(ifname, ifname_valid);
static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(ip_tos, "i", int32_t, int, "%" PRIi32, ip_tos_to_string_alloc); static BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(ip_tos, "i", int32_t, int, "%" PRIi32, ip_tos_to_string_alloc);
static BUS_DEFINE_SET_TRANSIENT_TO_STRING(socket_protocol, "i", int32_t, int, "%" PRIi32, socket_protocol_to_string); static BUS_DEFINE_SET_TRANSIENT_TO_STRING(socket_protocol, "i", int32_t, int, "%" PRIi32, socket_protocol_to_string);
static BUS_DEFINE_SET_TRANSIENT_PARSE(socket_timestamping, SocketTimestamping, socket_timestamping_from_string_harder);
static int bus_socket_set_transient_property( static int bus_socket_set_transient_property(
Socket *s, Socket *s,
@ -213,9 +210,6 @@ static int bus_socket_set_transient_property(
if (streq(name, "PassPacketInfo")) if (streq(name, "PassPacketInfo"))
return bus_set_transient_bool(u, name, &s->pass_pktinfo, message, flags, error); return bus_set_transient_bool(u, name, &s->pass_pktinfo, message, flags, error);
if (streq(name, "Timestamping"))
return bus_set_transient_socket_timestamping(u, name, &s->timestamping, message, flags, error);
if (streq(name, "ReusePort")) if (streq(name, "ReusePort"))
return bus_set_transient_bool(u, name, &s->reuse_port, message, flags, error); return bus_set_transient_bool(u, name, &s->reuse_port, message, flags, error);

View File

@ -419,7 +419,6 @@ Socket.Broadcast, config_parse_bool,
Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred) Socket.PassCredentials, config_parse_bool, 0, offsetof(Socket, pass_cred)
Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec) Socket.PassSecurity, config_parse_bool, 0, offsetof(Socket, pass_sec)
Socket.PassPacketInfo, config_parse_bool, 0, offsetof(Socket, pass_pktinfo) Socket.PassPacketInfo, config_parse_bool, 0, offsetof(Socket, pass_pktinfo)
Socket.Timestamping, config_parse_socket_timestamping, 0, offsetof(Socket, timestamping)
Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion) Socket.TCPCongestion, config_parse_string, 0, offsetof(Socket, tcp_congestion)
Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuse_port) Socket.ReusePort, config_parse_bool, 0, offsetof(Socket, reuse_port)
Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg) Socket.MessageQueueMaxMessages, config_parse_long, 0, offsetof(Socket, mq_maxmsg)

View File

@ -140,7 +140,6 @@ DEFINE_CONFIG_PARSE_PTR(config_parse_cpu_shares, cg_cpu_shares_parse, uint64_t,
DEFINE_CONFIG_PARSE_PTR(config_parse_exec_mount_flags, mount_propagation_flags_from_string, unsigned long, "Failed to parse mount flag"); DEFINE_CONFIG_PARSE_PTR(config_parse_exec_mount_flags, mount_propagation_flags_from_string, unsigned long, "Failed to parse mount flag");
DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(config_parse_numa_policy, mpol, int, -1, "Invalid NUMA policy type"); DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(config_parse_numa_policy, mpol, int, -1, "Invalid NUMA policy type");
DEFINE_CONFIG_PARSE_ENUM(config_parse_status_unit_format, status_unit_format, StatusUnitFormat, "Failed to parse status unit format"); DEFINE_CONFIG_PARSE_ENUM(config_parse_status_unit_format, status_unit_format, StatusUnitFormat, "Failed to parse status unit format");
DEFINE_CONFIG_PARSE_ENUM_FULL(config_parse_socket_timestamping, socket_timestamping_from_string_harder, SocketTimestamping, "Failed to parse timestamping precision");
int config_parse_unit_deps( int config_parse_unit_deps(
const char *unit, const char *unit,

View File

@ -136,7 +136,6 @@ CONFIG_PARSER_PROTOTYPE(config_parse_crash_chvt);
CONFIG_PARSER_PROTOTYPE(config_parse_timeout_abort); CONFIG_PARSER_PROTOTYPE(config_parse_timeout_abort);
CONFIG_PARSER_PROTOTYPE(config_parse_swap_priority); CONFIG_PARSER_PROTOTYPE(config_parse_swap_priority);
CONFIG_PARSER_PROTOTYPE(config_parse_mount_images); CONFIG_PARSER_PROTOTYPE(config_parse_mount_images);
CONFIG_PARSER_PROTOTYPE(config_parse_socket_timestamping);
/* gperf prototypes */ /* gperf prototypes */
const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, GPERF_LEN_TYPE length); const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, GPERF_LEN_TYPE length);

View File

@ -629,11 +629,6 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) {
prefix, socket_fdname(s), prefix, socket_fdname(s),
prefix, yes_no(s->selinux_context_from_net)); prefix, yes_no(s->selinux_context_from_net));
if (s->timestamping != SOCKET_TIMESTAMPING_OFF)
fprintf(f,
"%sTimestamping: %s\n",
prefix, socket_timestamping_to_string(s->timestamping));
if (s->control_pid > 0) if (s->control_pid > 0)
fprintf(f, fprintf(f,
"%sControl PID: "PID_FMT"\n", "%sControl PID: "PID_FMT"\n",
@ -1056,14 +1051,6 @@ static void socket_apply_socket_options(Socket *s, SocketPort *p, int fd) {
log_unit_warning_errno(UNIT(s), r, "Failed to enable packet info socket option: %m"); log_unit_warning_errno(UNIT(s), r, "Failed to enable packet info socket option: %m");
} }
if (s->timestamping != SOCKET_TIMESTAMPING_OFF) {
r = setsockopt_int(fd, SOL_SOCKET,
s->timestamping == SOCKET_TIMESTAMPING_NS ? SO_TIMESTAMPNS : SO_TIMESTAMP,
true);
if (r < 0)
log_unit_warning_errno(UNIT(s), r, "Failed to enable timestamping socket option, ignoring: %m");
}
if (s->priority >= 0) { if (s->priority >= 0) {
r = setsockopt_int(fd, SOL_SOCKET, SO_PRIORITY, s->priority); r = setsockopt_int(fd, SOL_SOCKET, SO_PRIORITY, s->priority);
if (r < 0) if (r < 0)
@ -3422,39 +3409,6 @@ static const char* const socket_result_table[_SOCKET_RESULT_MAX] = {
DEFINE_STRING_TABLE_LOOKUP(socket_result, SocketResult); DEFINE_STRING_TABLE_LOOKUP(socket_result, SocketResult);
static const char* const socket_timestamping_table[_SOCKET_TIMESTAMPING_MAX] = {
[SOCKET_TIMESTAMPING_OFF] = "off",
[SOCKET_TIMESTAMPING_US] = "us",
[SOCKET_TIMESTAMPING_NS] = "ns",
};
DEFINE_STRING_TABLE_LOOKUP(socket_timestamping, SocketTimestamping);
SocketTimestamping socket_timestamping_from_string_harder(const char *p) {
SocketTimestamping t;
int r;
if (!p)
return _SOCKET_TIMESTAMPING_INVALID;
t = socket_timestamping_from_string(p);
if (t >= 0)
return t;
/* Let's alternatively support the various other aliases parse_time() accepts for ns and µs here,
* too. */
if (streq(p, "nsec"))
return SOCKET_TIMESTAMPING_NS;
if (STR_IN_SET(p, "usec", "µs"))
return SOCKET_TIMESTAMPING_US;
r = parse_boolean(p);
if (r < 0)
return _SOCKET_TIMESTAMPING_INVALID;
return r ? SOCKET_TIMESTAMPING_NS : SOCKET_TIMESTAMPING_OFF; /* If boolean yes, default to ns accuracy */
}
const UnitVTable socket_vtable = { const UnitVTable socket_vtable = {
.object_size = sizeof(Socket), .object_size = sizeof(Socket),
.exec_context_offset = offsetof(Socket, exec_context), .exec_context_offset = offsetof(Socket, exec_context),

View File

@ -58,14 +58,6 @@ typedef struct SocketPort {
LIST_FIELDS(struct SocketPort, port); LIST_FIELDS(struct SocketPort, port);
} SocketPort; } SocketPort;
typedef enum SocketTimestamping {
SOCKET_TIMESTAMPING_OFF,
SOCKET_TIMESTAMPING_US, /* SO_TIMESTAMP */
SOCKET_TIMESTAMPING_NS, /* SO_TIMESTAMPNS */
_SOCKET_TIMESTAMPING_MAX,
_SOCKET_TIMESTAMPING_INVALID = -1,
} SocketTimestamping;
struct Socket { struct Socket {
Unit meta; Unit meta;
@ -131,7 +123,6 @@ struct Socket {
bool pass_cred; bool pass_cred;
bool pass_sec; bool pass_sec;
bool pass_pktinfo; bool pass_pktinfo;
SocketTimestamping timestamping;
/* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */ /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */
SocketAddressBindIPv6Only bind_ipv6_only; SocketAddressBindIPv6Only bind_ipv6_only;
@ -191,8 +182,4 @@ SocketResult socket_result_from_string(const char *s) _pure_;
const char* socket_port_type_to_string(SocketPort *p) _pure_; const char* socket_port_type_to_string(SocketPort *p) _pure_;
SocketType socket_port_type_from_string(const char *p) _pure_; SocketType socket_port_type_from_string(const char *p) _pure_;
const char* socket_timestamping_to_string(SocketTimestamping p) _const_;
SocketTimestamping socket_timestamping_from_string(const char *p) _pure_;
SocketTimestamping socket_timestamping_from_string_harder(const char *p) _pure_;
DEFINE_CAST(SOCKET, Socket); DEFINE_CAST(SOCKET, Socket);

View File

@ -483,11 +483,13 @@ int server_open_native_socket(Server *s, const char *native_socket) {
if (r < 0) if (r < 0)
return log_error_errno(r, "SO_PASSCRED failed: %m"); return log_error_errno(r, "SO_PASSCRED failed: %m");
#if HAVE_SELINUX
if (mac_selinux_use()) { if (mac_selinux_use()) {
r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSSEC, true); r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSSEC, true);
if (r < 0) if (r < 0)
log_warning_errno(r, "SO_PASSSEC failed: %m"); log_warning_errno(r, "SO_PASSSEC failed: %m");
} }
#endif
r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, true); r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, true);
if (r < 0) if (r < 0)

View File

@ -70,8 +70,9 @@ static void forward_syslog_iovec(
msghdr.msg_controllen = cmsg->cmsg_len; msghdr.msg_controllen = cmsg->cmsg_len;
} }
/* Forward the syslog message we received via /dev/log to /run/systemd/syslog. Unfortunately we /* Forward the syslog message we received via /dev/log to
* currently can't set the SO_TIMESTAMP auxiliary data, and hence we don't. */ * /run/systemd/syslog. Unfortunately we currently can't set
* the SO_TIMESTAMP auxiliary data, and hence we don't. */
if (sendmsg(s->syslog_fd, &msghdr, MSG_NOSIGNAL) >= 0) if (sendmsg(s->syslog_fd, &msghdr, MSG_NOSIGNAL) >= 0)
return; return;
@ -483,11 +484,13 @@ int server_open_syslog_socket(Server *s, const char *syslog_socket) {
if (r < 0) if (r < 0)
return log_error_errno(r, "SO_PASSCRED failed: %m"); return log_error_errno(r, "SO_PASSCRED failed: %m");
#if HAVE_SELINUX
if (mac_selinux_use()) { if (mac_selinux_use()) {
r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, true); r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, true);
if (r < 0) if (r < 0)
log_warning_errno(r, "SO_PASSSEC failed: %m"); log_warning_errno(r, "SO_PASSSEC failed: %m");
} }
#endif
r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, true); r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, true);
if (r < 0) if (r < 0)

View File

@ -2037,8 +2037,7 @@ static int bus_append_socket_property(sd_bus_message *m, const char *field, cons
"BindIPv6Only", "BindIPv6Only",
"FileDescriptorName", "FileDescriptorName",
"SocketUser", "SocketUser",
"SocketGroup", "SocketGroup"))
"Timestamping"))
return bus_append_string(m, field, eq); return bus_append_string(m, field, eq);
if (streq(field, "Symlinks")) if (streq(field, "Symlinks"))

View File

@ -193,7 +193,7 @@ typedef enum Disabled {
return 0; \ return 0; \
} }
#define DEFINE_CONFIG_PARSE_ENUM_FULL(function, from_string, type, msg) \ #define DEFINE_CONFIG_PARSE_ENUM(function, name, type, msg) \
CONFIG_PARSER_PROTOTYPE(function) { \ CONFIG_PARSER_PROTOTYPE(function) { \
type *i = data, x; \ type *i = data, x; \
\ \
@ -202,7 +202,7 @@ typedef enum Disabled {
assert(rvalue); \ assert(rvalue); \
assert(data); \ assert(data); \
\ \
x = from_string(rvalue); \ x = name##_from_string(rvalue); \
if (x < 0) { \ if (x < 0) { \
log_syntax(unit, LOG_WARNING, filename, line, 0, \ log_syntax(unit, LOG_WARNING, filename, line, 0, \
msg ", ignoring: %s", rvalue); \ msg ", ignoring: %s", rvalue); \
@ -213,9 +213,6 @@ typedef enum Disabled {
return 0; \ return 0; \
} }
#define DEFINE_CONFIG_PARSE_ENUM(function, name, type, msg) \
DEFINE_CONFIG_PARSE_ENUM_FULL(function, name##_from_string, type, msg)
#define DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(function, name, type, default_value, msg) \ #define DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT(function, name, type, default_value, msg) \
CONFIG_PARSER_PROTOTYPE(function) { \ CONFIG_PARSER_PROTOTYPE(function) { \
type *i = data, x; \ type *i = data, x; \

View File

@ -19,13 +19,12 @@ Before=sockets.target
IgnoreOnIsolate=yes IgnoreOnIsolate=yes
[Socket] [Socket]
Service=systemd-journald.service
ListenDatagram=/run/systemd/journal/dev-log ListenDatagram=/run/systemd/journal/dev-log
Symlinks=/dev/log
SocketMode=0666
PassCredentials=yes PassCredentials=yes
PassSecurity=yes PassSecurity=yes
Service=systemd-journald.service
SocketMode=0666
Symlinks=/dev/log
Timestamping=us
# Increase both the send and receive buffer, so that things don't # Increase both the send and receive buffer, so that things don't
# block early. Note that journald internally uses the this socket both # block early. Note that journald internally uses the this socket both

View File

@ -19,11 +19,10 @@ Before=sockets.target
IgnoreOnIsolate=yes IgnoreOnIsolate=yes
[Socket] [Socket]
ListenDatagram=/run/systemd/journal/socket
ListenStream=/run/systemd/journal/stdout ListenStream=/run/systemd/journal/stdout
ListenDatagram=/run/systemd/journal/socket
SocketMode=0666
PassCredentials=yes PassCredentials=yes
PassSecurity=yes PassSecurity=yes
ReceiveBuffer=8M ReceiveBuffer=8M
Service=systemd-journald.service Service=systemd-journald.service
SocketMode=0666
Timestamping=us