[prev in list] [next in list] [prev in thread] [next in thread]
List: systemd-devel
Subject: [systemd-devel] [PATCH] Add Listen* to dbus properties
From: alxchk () gmail ! com (Oleksii Shevchuk)
Date: 2013-03-31 15:23:24
Message-ID: 1364743404-30230-1-git-send-email-alxchk () gmail ! com
[Download RAW message or body]
---
src/core/dbus-socket.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c
index 2092a63..1dfac6d 100644
--- a/src/core/dbus-socket.c
+++ b/src/core/dbus-socket.c
@@ -63,6 +63,10 @@
" <property name=\"NConnections\" type=\"u\" access=\"read\"/>\n" \
" <property name=\"MessageQueueMaxMessages\" type=\"x\" \
access=\"read\"/>\n" \
" <property name=\"MessageQueueMessageSize\" type=\"x\" \
access=\"read\"/>\n" \ + " <property name=\"ListenSocket\" type=\"as\" \
access=\"read\"/>\n" \ + " <property name=\"ListenSpecial\" type=\"as\" \
access=\"read\"/>\n" \ + " <property name=\"ListenMessageQueue\" \
type=\"as\" access=\"read\"/>\n" \ + " <property name=\"ListenFIFO\" \
type=\"as\" access=\"read\"/>\n" \ " <property name=\"Result\" type=\"s\" \
access=\"read\"/>\n" \
" <property name=\"SmackLabel\" type=\"s\" access=\"read\"/>\n" \
" <property name=\"SmackLabelIPIn\" type=\"s\" access=\"read\"/>\n" \
@@ -98,6 +102,52 @@ const char bus_socket_invalidating_properties[] =
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_socket_append_bind_ipv6_only, \
socket_address_bind_ipv6_only, SocketAddressBindIPv6Only); static \
DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_socket_append_socket_result, socket_result, \
SocketResult);
+static int bus_socket_append_listen(DBusMessageIter *i, const char *property, void \
*data) { + Unit *u = data;
+ SocketPort *p;
+ Socket *s = SOCKET(u);
+ DBusMessageIter sub;
+
+ assert(data);
+ assert(s);
+
+ if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "s", &sub))
+ return -ENOMEM;
+
+ LIST_FOREACH(port, p, s->ports) {
+
+ if ((p->type == SOCKET_SOCKET) && (streq(property, "ListenSocket"))) \
{ + char *t, *k;
+ int r;
+
+ r = socket_address_print(&p->address, &t);
+ if (r && !k)
+ k = strerror(-errno);
+ else
+ k = t;
+
+ if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, \
&k)) + return -ENOMEM;
+
+ free(t);
+ } else if ((p->type == SOCKET_SPECIAL) && (streq(property, \
"ListenSpecial"))) { + if \
(!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &p->path)) + \
return -ENOMEM; + } else if ((p->type == SOCKET_MQUEUE) && \
(streq(property, "ListenMessageQueue"))) { + if \
(!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &p->path)) + \
return -ENOMEM; + } else if ((p->type == SOCKET_FIFO) && \
(streq(property, "ListenFIFO"))) { + if \
(!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &p->path)) + \
return -ENOMEM; + }
+ }
+
+ if (!dbus_message_iter_close_container(i, &sub))
+ return -ENOMEM;
+
+ return 0;
+}
+
static const BusProperty bus_socket_properties[] = {
{ "BindIPv6Only", bus_socket_append_bind_ipv6_only, "s", offsetof(Socket, \
bind_ipv6_only) },
{ "Backlog", bus_property_append_unsigned, "u", offsetof(Socket, \
backlog) }, @@ -123,6 +173,10 @@ static const BusProperty \
bus_socket_properties[] = {
{ "Broadcast", bus_property_append_bool, "b", offsetof(Socket, \
broadcast) },
{ "PassCredentials",bus_property_append_bool, "b", offsetof(Socket, \
pass_cred) },
{ "PassSecurity", bus_property_append_bool, "b", offsetof(Socket, \
pass_sec) }, + { "ListenSocket", bus_socket_append_listen, \
"as", 0, }, + { "ListenSpecial", \
bus_socket_append_listen, "as", 0, }, + \
{ "ListenMessageQueue", bus_socket_append_listen, "as", 0, \
}, + { "ListenFIFO", bus_socket_append_listen, "as", 0, \
},
{ "Mark", bus_property_append_int, "i", offsetof(Socket, \
mark) },
{ "MaxConnections", bus_property_append_unsigned, "u", offsetof(Socket, \
max_connections) },
{ "NConnections", bus_property_append_unsigned, "u", offsetof(Socket, \
n_connections) },
--
1.8.1.2
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic