core: implement SocketContext/Runtime for io.systemd.Unit.List
Add varlink context and runtime builders for .socket units: Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -75,6 +75,7 @@ libcore_sources = files(
|
||||
'varlink-mount.c',
|
||||
'varlink-path.c',
|
||||
'varlink-scope.c',
|
||||
'varlink-socket.c',
|
||||
'varlink-swap.c',
|
||||
'varlink-timer.c',
|
||||
'varlink-unit.c',
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "sd-json.h"
|
||||
|
||||
#include "ip-protocol-list.h"
|
||||
#include "json-util.h"
|
||||
#include "socket.h"
|
||||
#include "user-util.h"
|
||||
#include "varlink-common.h"
|
||||
#include "varlink-socket.h"
|
||||
|
||||
static int socket_listen_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
|
||||
Socket *s = ASSERT_PTR(SOCKET(userdata));
|
||||
int r;
|
||||
|
||||
assert(ret);
|
||||
|
||||
LIST_FOREACH(port, p, s->ports) {
|
||||
_cleanup_free_ char *address = NULL;
|
||||
|
||||
r = socket_port_to_address(p, &address);
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to call socket_port_to_address(): %m");
|
||||
|
||||
r = sd_json_variant_append_arraybo(
|
||||
&v,
|
||||
SD_JSON_BUILD_PAIR_STRING("type", socket_port_type_to_string(p)),
|
||||
SD_JSON_BUILD_PAIR_STRING("address", address));
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
*ret = TAKE_PTR(v);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int socket_context_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
Socket *s = ASSERT_PTR(SOCKET(userdata));
|
||||
|
||||
return sd_json_buildo(
|
||||
ASSERT_PTR(ret),
|
||||
JSON_BUILD_PAIR_CALLBACK_NON_NULL("Listen", socket_listen_build_json, s),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SocketProtocol", ip_protocol_to_name(s->socket_protocol)),
|
||||
JSON_BUILD_PAIR_ENUM("BindIPv6Only", socket_address_bind_ipv6_only_to_string(s->bind_ipv6_only)),
|
||||
SD_JSON_BUILD_PAIR_UNSIGNED("Backlog", s->backlog),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("BindToDevice", s->bind_to_device),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SocketUser", s->user),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SocketGroup", s->group),
|
||||
SD_JSON_BUILD_PAIR_UNSIGNED("SocketMode", s->socket_mode),
|
||||
SD_JSON_BUILD_PAIR_UNSIGNED("DirectoryMode", s->directory_mode),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("Accept", s->accept),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("Writable", s->writable),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("FlushPending", s->flush_pending),
|
||||
SD_JSON_BUILD_PAIR_UNSIGNED("MaxConnections", s->max_connections),
|
||||
SD_JSON_BUILD_PAIR_UNSIGNED("MaxConnectionsPerSource", s->max_connections_per_source),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("KeepAlive", s->keep_alive),
|
||||
JSON_BUILD_PAIR_FINITE_USEC_NON_ZERO("KeepAliveTimeUSec", s->keep_alive_time),
|
||||
JSON_BUILD_PAIR_FINITE_USEC_NON_ZERO("KeepAliveIntervalUSec", s->keep_alive_interval),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("KeepAliveProbes", s->keep_alive_cnt),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("NoDelay", s->no_delay),
|
||||
JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE("Priority", s->priority),
|
||||
JSON_BUILD_PAIR_FINITE_USEC_NON_ZERO("DeferAcceptUSec", s->defer_accept),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("ReceiveBuffer", s->receive_buffer),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("SendBuffer", s->send_buffer),
|
||||
JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE("IPTOS", s->ip_tos),
|
||||
JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE("IPTTL", s->ip_ttl),
|
||||
JSON_BUILD_PAIR_INTEGER_NON_NEGATIVE("Mark", s->mark),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("ReusePort", s->reuse_port),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SmackLabel", s->smack),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SmackLabelIPIn", s->smack_ip_in),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("SmackLabelIPOut", s->smack_ip_out),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("SELinuxContextFromNet", s->selinux_context_from_net),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("PipeSize", s->pipe_size),
|
||||
JSON_BUILD_PAIR_INTEGER_NON_ZERO("MessageQueueMaxMessages", s->mq_maxmsg),
|
||||
JSON_BUILD_PAIR_INTEGER_NON_ZERO("MessageQueueMessageSize", s->mq_msgsize),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("FreeBind", s->free_bind),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("Transparent", s->transparent),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("Broadcast", s->broadcast),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("PassCredentials", s->pass_cred),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("PassPIDFD", s->pass_pidfd),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("PassSecurity", s->pass_sec),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("PassPacketInfo", s->pass_pktinfo),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("AcceptFileDescriptors", s->pass_rights),
|
||||
JSON_BUILD_PAIR_ENUM("Timestamping", socket_timestamping_to_string(s->timestamping)),
|
||||
JSON_BUILD_PAIR_STRING_NON_EMPTY("TCPCongestion", s->tcp_congestion),
|
||||
JSON_BUILD_PAIR_CALLBACK_NON_NULL("ExecStartPre", exec_command_list_build_json, s->exec_command[SOCKET_EXEC_START_PRE]),
|
||||
JSON_BUILD_PAIR_CALLBACK_NON_NULL("ExecStartPost", exec_command_list_build_json, s->exec_command[SOCKET_EXEC_START_POST]),
|
||||
JSON_BUILD_PAIR_CALLBACK_NON_NULL("ExecStopPre", exec_command_list_build_json, s->exec_command[SOCKET_EXEC_STOP_PRE]),
|
||||
JSON_BUILD_PAIR_CALLBACK_NON_NULL("ExecStopPost", exec_command_list_build_json, s->exec_command[SOCKET_EXEC_STOP_POST]),
|
||||
JSON_BUILD_PAIR_FINITE_USEC("TimeoutUSec", s->timeout_usec),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("RemoveOnStop", s->remove_on_stop),
|
||||
JSON_BUILD_PAIR_STRV_NON_EMPTY("Symlinks", s->symlinks),
|
||||
SD_JSON_BUILD_PAIR_STRING("FileDescriptorName", socket_fdname(s)),
|
||||
JSON_BUILD_PAIR_RATELIMIT("TriggerLimit", &s->trigger_limit),
|
||||
JSON_BUILD_PAIR_RATELIMIT("PollLimit", &s->poll_limit),
|
||||
JSON_BUILD_PAIR_ENUM("DeferTrigger", socket_defer_trigger_to_string(s->defer_trigger)),
|
||||
JSON_BUILD_PAIR_FINITE_USEC_NON_ZERO("DeferTriggerMaxUSec", s->defer_trigger_max_usec),
|
||||
SD_JSON_BUILD_PAIR_BOOLEAN("PassFileDescriptorsToExec", s->pass_fds_to_exec));
|
||||
}
|
||||
|
||||
int socket_runtime_build_json(sd_json_variant **ret, const char *name, void *userdata) {
|
||||
Unit *u = ASSERT_PTR(userdata);
|
||||
Socket *s = ASSERT_PTR(SOCKET(u));
|
||||
|
||||
return sd_json_buildo(
|
||||
ASSERT_PTR(ret),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(pidref_is_set(&s->control_pid), "ControlPID", JSON_BUILD_PIDREF(&s->control_pid)),
|
||||
JSON_BUILD_PAIR_ENUM("Result", socket_result_to_string(s->result)),
|
||||
JSON_BUILD_PAIR_ENUM("CleanResult", socket_result_to_string(s->clean_result)),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("NConnections", s->n_connections),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("NAccepted", s->n_accepted),
|
||||
JSON_BUILD_PAIR_UNSIGNED_NON_ZERO("NRefused", s->n_refused),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(uid_is_valid(u->ref_uid), "UID", SD_JSON_BUILD_UNSIGNED(u->ref_uid)),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(gid_is_valid(u->ref_gid), "GID", SD_JSON_BUILD_UNSIGNED(u->ref_gid)));
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "core-forward.h"
|
||||
|
||||
int socket_context_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
int socket_runtime_build_json(sd_json_variant **ret, const char *name, void *userdata);
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "varlink-mount.h"
|
||||
#include "varlink-path.h"
|
||||
#include "varlink-scope.h"
|
||||
#include "varlink-socket.h"
|
||||
#include "varlink-swap.h"
|
||||
#include "varlink-timer.h"
|
||||
#include "varlink-unit.h"
|
||||
@@ -146,6 +147,7 @@ static int unit_context_build_json(sd_json_variant **ret, const char *name, void
|
||||
[UNIT_PATH] = path_context_build_json,
|
||||
[UNIT_SCOPE] = scope_context_build_json,
|
||||
[UNIT_SERVICE] = service_context_build_json,
|
||||
[UNIT_SOCKET] = socket_context_build_json,
|
||||
[UNIT_SWAP] = swap_context_build_json,
|
||||
[UNIT_TIMER] = timer_context_build_json,
|
||||
};
|
||||
@@ -315,6 +317,7 @@ static int unit_runtime_build_json(sd_json_variant **ret, const char *name, void
|
||||
[UNIT_MOUNT] = mount_runtime_build_json,
|
||||
[UNIT_PATH] = path_runtime_build_json,
|
||||
[UNIT_SCOPE] = scope_runtime_build_json,
|
||||
[UNIT_SOCKET] = socket_runtime_build_json,
|
||||
[UNIT_SWAP] = swap_runtime_build_json,
|
||||
[UNIT_TIMER] = timer_runtime_build_json,
|
||||
};
|
||||
|
||||
@@ -1041,6 +1041,181 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SD_VARLINK_FIELD_COMMENT("Result of scope operation"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Result, ScopeResult, 0));
|
||||
|
||||
/* SocketContext
|
||||
* https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html */
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
SocketBindIPv6Only,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(default),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(both),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(ipv6_only));
|
||||
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
SocketTimestamping,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(off),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(us),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(ns));
|
||||
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
SocketDeferTrigger,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(no),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(yes),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(patient));
|
||||
|
||||
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SocketListen,
|
||||
SD_VARLINK_FIELD_COMMENT("Socket type"),
|
||||
SD_VARLINK_DEFINE_FIELD(type, SD_VARLINK_STRING, 0),
|
||||
SD_VARLINK_FIELD_COMMENT("Socket address"),
|
||||
SD_VARLINK_DEFINE_FIELD(address, SD_VARLINK_STRING, 0));
|
||||
|
||||
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SocketContext,
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ListenStream="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Listen, SocketListen, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SocketProtocol="),
|
||||
SD_VARLINK_DEFINE_FIELD(SocketProtocol, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#BindIPv6Only="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(BindIPv6Only, SocketBindIPv6Only, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Backlog="),
|
||||
SD_VARLINK_DEFINE_FIELD(Backlog, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#BindToDevice="),
|
||||
SD_VARLINK_DEFINE_FIELD(BindToDevice, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SocketUser="),
|
||||
SD_VARLINK_DEFINE_FIELD(SocketUser, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SocketUser="),
|
||||
SD_VARLINK_DEFINE_FIELD(SocketGroup, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SocketMode="),
|
||||
SD_VARLINK_DEFINE_FIELD(SocketMode, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#DirectoryMode="),
|
||||
SD_VARLINK_DEFINE_FIELD(DirectoryMode, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Accept="),
|
||||
SD_VARLINK_DEFINE_FIELD(Accept, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Writable="),
|
||||
SD_VARLINK_DEFINE_FIELD(Writable, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#FlushPending="),
|
||||
SD_VARLINK_DEFINE_FIELD(FlushPending, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#MaxConnections="),
|
||||
SD_VARLINK_DEFINE_FIELD(MaxConnections, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#MaxConnectionsPerSource="),
|
||||
SD_VARLINK_DEFINE_FIELD(MaxConnectionsPerSource, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#KeepAlive="),
|
||||
SD_VARLINK_DEFINE_FIELD(KeepAlive, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#KeepAliveTimeSec="),
|
||||
SD_VARLINK_DEFINE_FIELD(KeepAliveTimeUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#KeepAliveIntervalSec="),
|
||||
SD_VARLINK_DEFINE_FIELD(KeepAliveIntervalUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#KeepAliveProbes="),
|
||||
SD_VARLINK_DEFINE_FIELD(KeepAliveProbes, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#NoDelay="),
|
||||
SD_VARLINK_DEFINE_FIELD(NoDelay, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Priority="),
|
||||
SD_VARLINK_DEFINE_FIELD(Priority, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#DeferAcceptSec="),
|
||||
SD_VARLINK_DEFINE_FIELD(DeferAcceptUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ReceiveBuffer="),
|
||||
SD_VARLINK_DEFINE_FIELD(ReceiveBuffer, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SendBuffer="),
|
||||
SD_VARLINK_DEFINE_FIELD(SendBuffer, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#IPTOS="),
|
||||
SD_VARLINK_DEFINE_FIELD(IPTOS, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#IPTTL="),
|
||||
SD_VARLINK_DEFINE_FIELD(IPTTL, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Mark="),
|
||||
SD_VARLINK_DEFINE_FIELD(Mark, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ReusePort="),
|
||||
SD_VARLINK_DEFINE_FIELD(ReusePort, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SmackLabel="),
|
||||
SD_VARLINK_DEFINE_FIELD(SmackLabel, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SmackLabelIPIn="),
|
||||
SD_VARLINK_DEFINE_FIELD(SmackLabelIPIn, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SmackLabelIPOut="),
|
||||
SD_VARLINK_DEFINE_FIELD(SmackLabelIPOut, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#SELinuxContextFromNet="),
|
||||
SD_VARLINK_DEFINE_FIELD(SELinuxContextFromNet, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PipeSize="),
|
||||
SD_VARLINK_DEFINE_FIELD(PipeSize, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#MessageQueueMaxMessages="),
|
||||
SD_VARLINK_DEFINE_FIELD(MessageQueueMaxMessages, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#MessageQueueMessageSize="),
|
||||
SD_VARLINK_DEFINE_FIELD(MessageQueueMessageSize, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#FreeBind="),
|
||||
SD_VARLINK_DEFINE_FIELD(FreeBind, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Transparent="),
|
||||
SD_VARLINK_DEFINE_FIELD(Transparent, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Broadcast="),
|
||||
SD_VARLINK_DEFINE_FIELD(Broadcast, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PassCredentials="),
|
||||
SD_VARLINK_DEFINE_FIELD(PassCredentials, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PassPIDFD="),
|
||||
SD_VARLINK_DEFINE_FIELD(PassPIDFD, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PassSecurity="),
|
||||
SD_VARLINK_DEFINE_FIELD(PassSecurity, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PassPacketInfo="),
|
||||
SD_VARLINK_DEFINE_FIELD(PassPacketInfo, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#AcceptFileDescriptors="),
|
||||
SD_VARLINK_DEFINE_FIELD(AcceptFileDescriptors, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Timestamping="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Timestamping, SocketTimestamping, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#TCPCongestion="),
|
||||
SD_VARLINK_DEFINE_FIELD(TCPCongestion, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ExecStartPre="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(ExecStartPre, ExecCommand, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ExecStartPost="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(ExecStartPost, ExecCommand, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ExecStopPre="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(ExecStopPre, ExecCommand, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#ExecStopPost="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(ExecStopPost, ExecCommand, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#TimeoutSec="),
|
||||
SD_VARLINK_DEFINE_FIELD(TimeoutUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#RemoveOnStop="),
|
||||
SD_VARLINK_DEFINE_FIELD(RemoveOnStop, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#Symlinks="),
|
||||
SD_VARLINK_DEFINE_FIELD(Symlinks, SD_VARLINK_STRING, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#FileDescriptorName="),
|
||||
SD_VARLINK_DEFINE_FIELD(FileDescriptorName, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#TriggerLimitIntervalSec="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(TriggerLimit, RateLimit, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PollLimitIntervalSec="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(PollLimit, RateLimit, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#DeferTrigger="),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DeferTrigger, SocketDeferTrigger, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#DeferTriggerMaxSec="),
|
||||
SD_VARLINK_DEFINE_FIELD(DeferTriggerMaxUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd.socket.html#PassFileDescriptorsToExec="),
|
||||
SD_VARLINK_DEFINE_FIELD(PassFileDescriptorsToExec, SD_VARLINK_BOOL, SD_VARLINK_NULLABLE));
|
||||
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
SocketResult,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(success),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(resources),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(timeout),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(exit_code),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(signal),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(core_dump),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(start_limit_hit),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(trigger_limit_hit),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(service_start_limit_hit));
|
||||
|
||||
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SocketRuntime,
|
||||
SD_VARLINK_FIELD_COMMENT("PID of the current socket control process"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(ControlPID, ProcessId, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Result of socket operation"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Result, SocketResult, 0),
|
||||
SD_VARLINK_FIELD_COMMENT("Result of cleaning operation"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(CleanResult, SocketResult, 0),
|
||||
SD_VARLINK_FIELD_COMMENT("Number of current connections"),
|
||||
SD_VARLINK_DEFINE_FIELD(NConnections, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Number of accepted connections"),
|
||||
SD_VARLINK_DEFINE_FIELD(NAccepted, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Number of refused connections"),
|
||||
SD_VARLINK_DEFINE_FIELD(NRefused, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Reference UID"),
|
||||
SD_VARLINK_DEFINE_FIELD(UID, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Reference GID"),
|
||||
SD_VARLINK_DEFINE_FIELD(GID, SD_VARLINK_INT, SD_VARLINK_NULLABLE));
|
||||
|
||||
/* SwapContext
|
||||
* https://www.freedesktop.org/software/systemd/man/latest/systemd.swap.html */
|
||||
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
@@ -1342,6 +1517,8 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Path, PathContext, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The scope context of the unit"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Scope, ScopeContext, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The socket context of the unit"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Socket, SocketContext, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The swap context of the unit"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Swap, SwapContext, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The timer context of the unit"),
|
||||
@@ -1524,6 +1701,8 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Path, PathRuntime, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The scope runtime of the unit"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Scope, ScopeRuntime, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The socket runtime of the unit"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Socket, SocketRuntime, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The swap runtime of the unit"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Swap, SwapRuntime, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("The timer runtime of the unit"),
|
||||
@@ -1698,6 +1877,13 @@ SD_VARLINK_DEFINE_INTERFACE(
|
||||
&vl_type_ScopeContext,
|
||||
&vl_type_ScopeResult,
|
||||
&vl_type_ScopeRuntime,
|
||||
&vl_type_SocketBindIPv6Only,
|
||||
&vl_type_SocketTimestamping,
|
||||
&vl_type_SocketDeferTrigger,
|
||||
&vl_type_SocketListen,
|
||||
&vl_type_SocketContext,
|
||||
&vl_type_SocketResult,
|
||||
&vl_type_SocketRuntime,
|
||||
&vl_type_SwapContext,
|
||||
&vl_type_SwapResult,
|
||||
&vl_type_SwapRuntime,
|
||||
|
||||
@@ -33,6 +33,10 @@ extern const sd_varlink_symbol vl_type_MountResult;
|
||||
extern const sd_varlink_symbol vl_type_PathType;
|
||||
extern const sd_varlink_symbol vl_type_PathResult;
|
||||
extern const sd_varlink_symbol vl_type_ScopeResult;
|
||||
extern const sd_varlink_symbol vl_type_SocketBindIPv6Only;
|
||||
extern const sd_varlink_symbol vl_type_SocketTimestamping;
|
||||
extern const sd_varlink_symbol vl_type_SocketDeferTrigger;
|
||||
extern const sd_varlink_symbol vl_type_SocketResult;
|
||||
extern const sd_varlink_symbol vl_type_SwapResult;
|
||||
extern const sd_varlink_symbol vl_type_TimerBase;
|
||||
extern const sd_varlink_symbol vl_type_TimerResult;
|
||||
|
||||
Reference in New Issue
Block a user