qemu-sockets: introduce socket_address_parse_named_fd()
Add function that transforms named fd inside SocketAddress structure into number representation. This way it may be then used in a context where current monitor is not available. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20210610100802.5888-6-vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> [eblake: comment tweak] Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
fb392b548e
commit
c542370418
@ -111,4 +111,15 @@ SocketAddress *socket_remote_address(int fd, Error **errp);
|
||||
*/
|
||||
SocketAddress *socket_address_flatten(SocketAddressLegacy *addr);
|
||||
|
||||
/**
|
||||
* socket_address_parse_named_fd:
|
||||
*
|
||||
* Modify @addr, replacing a named fd by its corresponding number.
|
||||
* Needed for callers that plan to pass @addr to a context where the
|
||||
* current monitor is not available.
|
||||
*
|
||||
* Return 0 on success.
|
||||
*/
|
||||
int socket_address_parse_named_fd(SocketAddress *addr, Error **errp);
|
||||
|
||||
#endif /* QEMU_SOCKETS_H */
|
||||
|
@ -1164,6 +1164,25 @@ static int socket_get_fd(const char *fdstr, Error **errp)
|
||||
return fd;
|
||||
}
|
||||
|
||||
int socket_address_parse_named_fd(SocketAddress *addr, Error **errp)
|
||||
{
|
||||
int fd;
|
||||
|
||||
if (addr->type != SOCKET_ADDRESS_TYPE_FD) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
fd = socket_get_fd(addr->u.fd.str, errp);
|
||||
if (fd < 0) {
|
||||
return fd;
|
||||
}
|
||||
|
||||
g_free(addr->u.fd.str);
|
||||
addr->u.fd.str = g_strdup_printf("%d", fd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int socket_connect(SocketAddress *addr, Error **errp)
|
||||
{
|
||||
int fd;
|
||||
|
Loading…
Reference in New Issue
Block a user