X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fnetdisk.c;h=2c89937bee997babd2cb6cbeea12e1980b64ee8f;hb=d0652a946b5d7dcee13c9d445b103f37284059aa;hp=60f71ffb306518a9e612f17942176f1332300b17;hpb=72420d58d18ec71d4777d029daaf0c6a1c820b32;p=palacios.git diff --git a/palacios/src/devices/netdisk.c b/palacios/src/devices/netdisk.c index 60f71ff..2c89937 100644 --- a/palacios/src/devices/netdisk.c +++ b/palacios/src/devices/netdisk.c @@ -19,9 +19,9 @@ #include #include -#include +#include -#ifndef CONFIG_DEBUG_IDE +#ifndef V3_CONFIG_DEBUG_IDE #undef PrintDebug #define PrintDebug(fmt, args...) #endif @@ -210,12 +210,16 @@ static struct v3_dev_blk_ops blk_ops = { -static int disk_free(struct vm_device * dev) { +static int disk_free(struct disk_state * disk) { + + v3_socket_close(disk->socket); + + V3_Free(disk); return 0; } static struct v3_device_ops dev_ops = { - .free = disk_free, + .free = (int (*)(void *))disk_free, }; @@ -226,7 +230,7 @@ static int socket_init(struct disk_state * disk) { disk->socket = v3_create_tcp_socket(disk->vm); - PrintDebug("DISK socket: %d\n", disk->socket); + PrintDebug("DISK socket: %p\n", disk->socket); PrintDebug("Connecting to: %s:%d\n", v3_inet_ntoa(disk->ip_addr), disk->port); v3_connect_to_ip(disk->socket, v3_ntohl(disk->ip_addr), disk->port); @@ -272,6 +276,11 @@ static int socket_init(struct disk_state * disk) { static int disk_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) { struct disk_state * disk = (struct disk_state *)V3_Malloc(sizeof(struct disk_state)); + if (!disk) { + PrintError("Cannot allocate in init\n"); + return -1; + } + char * ip_str = v3_cfg_val(cfg, "IP"); char * port_str = v3_cfg_val(cfg, "port"); char * disk_tag = v3_cfg_val(cfg, "tag");