qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH v3 9/9] repagent: Moved to use qemu-socket inste


From: Ori Mamluk
Subject: [Qemu-devel] [RFC PATCH v3 9/9] repagent: Moved to use qemu-socket instead of platform dependent.
Date: Thu, 5 Apr 2012 15:20:49 +0300

Used as repagent patch v3

 

---

block/repagent/repagent.c        |    4 ++--

block/repagent/repagent.h        |    2 +-

block/repagent/repagent_client.c |   35 ++++++++---------------------------

3 files changed, 11 insertions(+), 30 deletions(-)

 

diff --git a/block/repagent/repagent.c b/block/repagent/repagent.c

index a5c0636..5dd26dd 100644

--- a/block/repagent/repagent.c

+++ b/block/repagent/repagent.c

@@ -214,7 +214,7 @@ static void repagent_report_volumes_to_hub(void)

     }

}

 

-bool repaget_start_protect(RepCmdStartProtect *pcmd,

+bool repagent_start_protect(RepCmdStartProtect *pcmd,

         RepCmdDataStartProtect *pcmd_data)

{

     printf("Start protect vol %s, ID %llu\n", pcmd_data->volume_name,

@@ -262,7 +262,7 @@ bool repagent_remote_io(RepCmdRemoteIoReq *pcmd, uint8_t *pdata)

     RepagentVolume *vol = repagent_get_volume_by_id(pcmd->volume_id);

     int size_bytes = pcmd->size_sectors * 512;

     if (vol == NULL) {

-        printf("Vol read - Could not find vol id %llx\n",

+        printf("Remote IO - Could not find vol id %llx\n",

                 (unsigned long long int) pcmd->volume_id);

         RepCmdRemoteIoRes *p_res_cmd = (RepCmdRemoteIoRes *) repcmd_new(

                 REPHUB_CMD_REMOTE_IO_RES, 0, NULL);

diff --git a/block/repagent/repagent.h b/block/repagent/repagent.h

index 157a9b6..66c63d2 100644

--- a/block/repagent/repagent.h

+++ b/block/repagent/repagent.h

@@ -43,7 +43,7 @@ void repagent_handle_protected_write(BlockDriverState *bs,

void repagent_register_drive(const char *drive_path,

         BlockDriverState *driver_ptr);

void repagent_deregister_drive(BlockDriverState *driver_ptr);

-bool repaget_start_protect(RepCmdStartProtect *pcmd,

+bool repagent_start_protect(RepCmdStartProtect *pcmd,

         RepCmdDataStartProtect *pcmd_data);

bool repagent_remote_io(struct RepCmdRemoteIoReq *pcmd, uint8_t *pdata);

void repagent_client_connected(void);

diff --git a/block/repagent/repagent_client.c b/block/repagent/repagent_client.c

index 2e57ed0..bfd1778 100644

--- a/block/repagent/repagent_client.c

+++ b/block/repagent/repagent_client.c

@@ -27,15 +27,12 @@

#include "repagent_client.h"

#include "repagent.h"

#include "main-loop.h"

+#include "qemu_socket.h"

 

 #include <string.h>

#include <stdlib.h>

#include <errno.h>

#include <stdio.h>

-#include <resolv.h>

-#include <sys/socket.h>

-#include <arpa/inet.h>

-#include <netinet/in.h>

#include <unistd.h>

 

 #define ZERO_MEM_OBJ(pObj) memset(pObj, 0, sizeof(*pObj))

@@ -70,38 +67,22 @@ void *repagent_listen(void *pParam)

     printf("Creating repagent listener thread...\n");

     g_free(pServerParams);

 

-    struct sockaddr_in my_addr;

-

     int err;

     int retries = 0;

 

-    g_client_state.hsock = socket(AF_INET, SOCK_STREAM, 0);

+    g_client_state.hsock = qemu_socket(AF_INET, SOCK_STREAM, 0);

     if (g_client_state.hsock == -1) {

         printf("Error initializing socket %d\n", errno);

         return (void *) -1;

     }

 

-    int param = 1;

-

-    if ((setsockopt(g_client_state.hsock, SOL_SOCKET, SO_REUSEADDR,

-            (char *) &param, sizeof(int)) == -1)

-            || (setsockopt(g_client_state.hsock, SOL_SOCKET, SO_KEEPALIVE,

-                    (char *) &param, sizeof(int)) == -1)) {

-        printf("Error setting options %d\n", errno);

-        return (void *) -1;

-    }

-

-    my_addr.sin_family = AF_INET;

-    my_addr.sin_port = htons(host_port);

-    memset(&(my_addr.sin_zero), 0, 8);

-

-    my_addr.sin_addr.s_addr = inet_addr(host_name);

-

+    int opts_str_len = strlen(host_name) + 2 + 10;

+    char opts[opts_str_len];

+    snprintf(opts, opts_str_len, "%s:%u", host_name, pServerParams->port);

    /* Reconnect loop */

     while (!g_client_state.is_terminate_receive) {

-

-        if (connect(g_client_state.hsock, (struct sockaddr *) &my_addr,

-                sizeof(my_addr)) == -1) {

+        g_client_state.hsock = inet_connect(opts, SOCK_STREAM);

+        if (g_client_state.hsock < 0) {

             err = errno;

             if (err != EINPROGRESS) {

                 retries++;

@@ -144,7 +125,7 @@ void repagent_process_cmd(RepCmd *pcmd, uint8_t *pdata, void *clientPtr)

     printf("Repagent got cmd %d\n", pcmd->hdr.cmdid);

     switch (pcmd->hdr.cmdid) {

     case REPHUB_CMD_START_PROTECT: {

-        is_free_data = repaget_start_protect((RepCmdStartProtect *) pcmd,

+        is_free_data = repagent_start_protect((RepCmdStartProtect *) pcmd,

                 (RepCmdDataStartProtect *) pdata);

     }

         break;

--

1.7.6.5

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]