提交 a767af1a 编写于 作者: D Daniel P. Berrangé

util: add helper API for getting UNIX path from socket address

Reviewed-by: NJán Tomko <jtomko@redhat.com>
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 cfd955b0
......@@ -2887,6 +2887,7 @@ virSocketAddrFormat;
virSocketAddrFormatFull;
virSocketAddrGetIPPrefix;
virSocketAddrGetNumNetmaskBits;
virSocketAddrGetPath;
virSocketAddrGetPort;
virSocketAddrGetRange;
virSocketAddrIsNetmask;
......
......@@ -522,6 +522,47 @@ virSocketAddrGetPort(virSocketAddrPtr addr)
return -1;
}
/*
* virSocketGetPath:
* @addr: an initialized virSocketAddrPtr
*
* Returns the UNIX socket path of the given virtSocketAddr
*
* Returns -1 if @addr is invalid or does not refer to an
* address of type AF_UNIX;
*/
char *
virSocketAddrGetPath(virSocketAddrPtr addr ATTRIBUTE_UNUSED)
{
#ifndef WIN32
char *path = NULL;
if (addr == NULL) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("No socket address provided"));
return NULL;
}
if (addr->data.sa.sa_family != AF_UNIX) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("UNIX socket address is required"));
return NULL;
}
if (VIR_STRNDUP(path,
addr->data.un.sun_path,
sizeof(addr->data.un.sun_path)) < 0)
return NULL;
return path;
#else
virReportError(VIR_ERR_NO_SUPPORT, "%s",
_("UNIX sockets not supported on this platform"));
return NULL;
#endif
}
/**
* virSocketAddrIsNetmask:
* @netmask: the netmask address
......
......@@ -108,6 +108,8 @@ char *virSocketAddrFormatFull(const virSocketAddr *addr,
bool withService,
const char *separator);
char *virSocketAddrGetPath(virSocketAddrPtr addr);
int virSocketAddrSetPort(virSocketAddrPtr addr, int port);
int virSocketAddrGetPort(virSocketAddrPtr addr);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册