]> xenbits.xensource.com Git - libvirt.git/commitdiff
Introduce virNetSocketRemoteAddrStringURI
authorJán Tomko <jtomko@redhat.com>
Mon, 20 Jun 2016 13:48:47 +0000 (15:48 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 23 Jun 2016 20:21:36 +0000 (22:21 +0200)
It will return the socket address and port in a URI-like
format: [::1]:1234
Add a test case to virnetsockettest.

src/libvirt_remote.syms
src/rpc/virnetsocket.c
src/rpc/virnetsocket.h
tests/virnetsockettest.c

index 1a88fff9db773fe83c699753469803d46483b16c..f3cf65d8bba44ad61b84b51500b7e43e10c65160 100644 (file)
@@ -227,6 +227,7 @@ virNetSocketPreExecRestart;
 virNetSocketRead;
 virNetSocketRecvFD;
 virNetSocketRemoteAddrString;
+virNetSocketRemoteAddrStringURI;
 virNetSocketRemoveIOCallback;
 virNetSocketSendFD;
 virNetSocketSetBlocking;
index d909b94d0fb5e437c15a0082245fbd13115adf28..f10b62b25f39b016b1bb56eb388d9fc536c5705f 100644 (file)
@@ -87,6 +87,7 @@ struct _virNetSocket {
     virSocketAddr remoteAddr;
     char *localAddrStr;
     char *remoteAddrStr;
+    char *remoteAddrStrURI;
 
 #if WITH_GNUTLS
     virNetTLSSessionPtr tlsSession;
@@ -269,6 +270,10 @@ static virNetSocketPtr virNetSocketNew(virSocketAddrPtr localAddr,
         !(sock->remoteAddrStr = virSocketAddrFormatFull(remoteAddr, true, ";")))
         goto error;
 
+    if (remoteAddr &&
+        !(sock->remoteAddrStrURI = virSocketAddrFormatFull(remoteAddr, true, NULL)))
+        goto error;
+
     sock->client = isClient;
 
     PROBE(RPC_SOCKET_NEW,
@@ -1204,6 +1209,7 @@ void virNetSocketDispose(void *obj)
 
     VIR_FREE(sock->localAddrStr);
     VIR_FREE(sock->remoteAddrStr);
+    VIR_FREE(sock->remoteAddrStrURI);
 }
 
 
@@ -1465,6 +1471,10 @@ const char *virNetSocketRemoteAddrString(virNetSocketPtr sock)
     return sock->remoteAddrStr;
 }
 
+const char *virNetSocketRemoteAddrStringURI(virNetSocketPtr sock)
+{
+    return sock->remoteAddrStrURI;
+}
 
 #if WITH_GNUTLS
 static ssize_t virNetSocketTLSSessionWrite(const char *buf,
index 5de3d926315ddb8fc1e2ee6799965eda1175cafc..25ca14eb3ff0a19ce0de9c1c2f5513f86a0f6248 100644 (file)
@@ -150,6 +150,7 @@ bool virNetSocketHasPendingData(virNetSocketPtr sock);
 
 const char *virNetSocketLocalAddrString(virNetSocketPtr sock);
 const char *virNetSocketRemoteAddrString(virNetSocketPtr sock);
+const char *virNetSocketRemoteAddrStringURI(virNetSocketPtr sock);
 
 int virNetSocketListen(virNetSocketPtr sock, int backlog);
 int virNetSocketAccept(virNetSocketPtr sock,
index 9df90a9e60f0a0d68645637ef77ce5bc985ef4bb..8cd8edecafe1aae1b8a16fd86681cd8159e4acd2 100644 (file)
@@ -275,6 +275,11 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED)
         goto cleanup;
     }
 
+    if (STRNEQ(virNetSocketRemoteAddrStringURI(csock), "127.0.0.1:0")) {
+        VIR_DEBUG("Unexpected remote address");
+        goto cleanup;
+    }
+
 
     if (virNetSocketAccept(lsock, &ssock) < 0) {
         VIR_DEBUG("Unexpected client socket missing");
@@ -292,6 +297,11 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED)
         goto cleanup;
     }
 
+    if (STRNEQ(virNetSocketRemoteAddrStringURI(ssock), "127.0.0.1:0")) {
+        VIR_DEBUG("Unexpected remote address");
+        goto cleanup;
+    }
+
 
     ret = 0;