socket: Add one more helper
This commit is contained in:
+4
-22
@@ -44,30 +44,12 @@ static int property_get_listen(
|
||||
|
||||
LIST_FOREACH(port, p, s->ports) {
|
||||
_cleanup_free_ char *address = NULL;
|
||||
const char *a;
|
||||
|
||||
switch (p->type) {
|
||||
case SOCKET_SOCKET: {
|
||||
r = socket_address_print(&p->address, &address);
|
||||
if (r)
|
||||
return r;
|
||||
r = socket_port_to_address(p, &address);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
a = address;
|
||||
break;
|
||||
}
|
||||
|
||||
case SOCKET_SPECIAL:
|
||||
case SOCKET_MQUEUE:
|
||||
case SOCKET_FIFO:
|
||||
case SOCKET_USB_FUNCTION:
|
||||
a = p->path;
|
||||
break;
|
||||
|
||||
default:
|
||||
assert_not_reached();
|
||||
}
|
||||
|
||||
r = sd_bus_message_append(reply, "(ss)", socket_port_type_to_string(p), a);
|
||||
r = sd_bus_message_append(reply, "(ss)", socket_port_type_to_string(p), address);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -2866,6 +2866,40 @@ static const char *socket_sub_state_to_string(Unit *u) {
|
||||
return socket_state_to_string(SOCKET(u)->state);
|
||||
}
|
||||
|
||||
int socket_port_to_address(const SocketPort *p, char **ret) {
|
||||
_cleanup_free_ char *address = NULL;
|
||||
int r;
|
||||
|
||||
assert(p);
|
||||
assert(ret);
|
||||
|
||||
switch (p->type) {
|
||||
case SOCKET_SOCKET: {
|
||||
r = socket_address_print(&p->address, &address);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case SOCKET_SPECIAL:
|
||||
case SOCKET_MQUEUE:
|
||||
case SOCKET_FIFO:
|
||||
case SOCKET_USB_FUNCTION:
|
||||
address = strdup(p->path);
|
||||
if (!address)
|
||||
return -ENOMEM;
|
||||
break;
|
||||
|
||||
default:
|
||||
assert_not_reached();
|
||||
}
|
||||
|
||||
*ret = TAKE_PTR(address);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char* socket_port_type_to_string(SocketPort *p) {
|
||||
|
||||
assert(p);
|
||||
|
||||
@@ -180,6 +180,8 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(SocketPort*, socket_port_free);
|
||||
|
||||
void socket_free_ports(Socket *s);
|
||||
|
||||
int socket_port_to_address(const SocketPort *s, char **ret);
|
||||
|
||||
int socket_load_service_unit(Socket *s, int cfd, Unit **ret);
|
||||
|
||||
char *socket_fdname(Socket *s);
|
||||
|
||||
Reference in New Issue
Block a user