提交 2da6a13e 编写于 作者: J Ján Tomko

Introduce virNetSocketRemoteAddrStringURI

It will return the socket address and port in a URI-like
format: [::1]:1234
Add a test case to virnetsockettest.
上级 0f7eeb20
...@@ -227,6 +227,7 @@ virNetSocketPreExecRestart; ...@@ -227,6 +227,7 @@ virNetSocketPreExecRestart;
virNetSocketRead; virNetSocketRead;
virNetSocketRecvFD; virNetSocketRecvFD;
virNetSocketRemoteAddrString; virNetSocketRemoteAddrString;
virNetSocketRemoteAddrStringURI;
virNetSocketRemoveIOCallback; virNetSocketRemoveIOCallback;
virNetSocketSendFD; virNetSocketSendFD;
virNetSocketSetBlocking; virNetSocketSetBlocking;
......
...@@ -87,6 +87,7 @@ struct _virNetSocket { ...@@ -87,6 +87,7 @@ struct _virNetSocket {
virSocketAddr remoteAddr; virSocketAddr remoteAddr;
char *localAddrStr; char *localAddrStr;
char *remoteAddrStr; char *remoteAddrStr;
char *remoteAddrStrURI;
#if WITH_GNUTLS #if WITH_GNUTLS
virNetTLSSessionPtr tlsSession; virNetTLSSessionPtr tlsSession;
...@@ -269,6 +270,10 @@ static virNetSocketPtr virNetSocketNew(virSocketAddrPtr localAddr, ...@@ -269,6 +270,10 @@ static virNetSocketPtr virNetSocketNew(virSocketAddrPtr localAddr,
!(sock->remoteAddrStr = virSocketAddrFormatFull(remoteAddr, true, ";"))) !(sock->remoteAddrStr = virSocketAddrFormatFull(remoteAddr, true, ";")))
goto error; goto error;
if (remoteAddr &&
!(sock->remoteAddrStrURI = virSocketAddrFormatFull(remoteAddr, true, NULL)))
goto error;
sock->client = isClient; sock->client = isClient;
PROBE(RPC_SOCKET_NEW, PROBE(RPC_SOCKET_NEW,
...@@ -1204,6 +1209,7 @@ void virNetSocketDispose(void *obj) ...@@ -1204,6 +1209,7 @@ void virNetSocketDispose(void *obj)
VIR_FREE(sock->localAddrStr); VIR_FREE(sock->localAddrStr);
VIR_FREE(sock->remoteAddrStr); VIR_FREE(sock->remoteAddrStr);
VIR_FREE(sock->remoteAddrStrURI);
} }
...@@ -1465,6 +1471,10 @@ const char *virNetSocketRemoteAddrString(virNetSocketPtr sock) ...@@ -1465,6 +1471,10 @@ const char *virNetSocketRemoteAddrString(virNetSocketPtr sock)
return sock->remoteAddrStr; return sock->remoteAddrStr;
} }
const char *virNetSocketRemoteAddrStringURI(virNetSocketPtr sock)
{
return sock->remoteAddrStrURI;
}
#if WITH_GNUTLS #if WITH_GNUTLS
static ssize_t virNetSocketTLSSessionWrite(const char *buf, static ssize_t virNetSocketTLSSessionWrite(const char *buf,
......
...@@ -150,6 +150,7 @@ bool virNetSocketHasPendingData(virNetSocketPtr sock); ...@@ -150,6 +150,7 @@ bool virNetSocketHasPendingData(virNetSocketPtr sock);
const char *virNetSocketLocalAddrString(virNetSocketPtr sock); const char *virNetSocketLocalAddrString(virNetSocketPtr sock);
const char *virNetSocketRemoteAddrString(virNetSocketPtr sock); const char *virNetSocketRemoteAddrString(virNetSocketPtr sock);
const char *virNetSocketRemoteAddrStringURI(virNetSocketPtr sock);
int virNetSocketListen(virNetSocketPtr sock, int backlog); int virNetSocketListen(virNetSocketPtr sock, int backlog);
int virNetSocketAccept(virNetSocketPtr sock, int virNetSocketAccept(virNetSocketPtr sock,
......
...@@ -275,6 +275,11 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED) ...@@ -275,6 +275,11 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED)
goto cleanup; goto cleanup;
} }
if (STRNEQ(virNetSocketRemoteAddrStringURI(csock), "127.0.0.1:0")) {
VIR_DEBUG("Unexpected remote address");
goto cleanup;
}
if (virNetSocketAccept(lsock, &ssock) < 0) { if (virNetSocketAccept(lsock, &ssock) < 0) {
VIR_DEBUG("Unexpected client socket missing"); VIR_DEBUG("Unexpected client socket missing");
...@@ -292,6 +297,11 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED) ...@@ -292,6 +297,11 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED)
goto cleanup; goto cleanup;
} }
if (STRNEQ(virNetSocketRemoteAddrStringURI(ssock), "127.0.0.1:0")) {
VIR_DEBUG("Unexpected remote address");
goto cleanup;
}
ret = 0; ret = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册