summaryrefslogtreecommitdiffstats
path: root/src/kernel/net.c
diff options
context:
space:
mode:
authorJohann Latocha2012-05-08 23:40:35 +0200
committerJohann Latocha2012-05-08 23:40:35 +0200
commite94396f4cf420642f551b8815e031c45bd0aaa7f (patch)
tree8d85c04413802fcdc338a50c864c84785bc3bc51 /src/kernel/net.c
parent[KERNEL] rtt measurement improved (diff)
downloaddnbd3-e94396f4cf420642f551b8815e031c45bd0aaa7f.tar.gz
dnbd3-e94396f4cf420642f551b8815e031c45bd0aaa7f.tar.xz
dnbd3-e94396f4cf420642f551b8815e031c45bd0aaa7f.zip
[KERNEL] Set proper exit status on connection
Diffstat (limited to 'src/kernel/net.c')
-rw-r--r--src/kernel/net.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/kernel/net.c b/src/kernel/net.c
index bc2f510..0bfca6f 100644
--- a/src/kernel/net.c
+++ b/src/kernel/net.c
@@ -24,7 +24,7 @@
#include <linux/time.h>
-void dnbd3_net_connect(dnbd3_device_t *dev)
+int dnbd3_net_connect(dnbd3_device_t *dev)
{
struct sockaddr_in sin;
struct request *req0 = kmalloc(sizeof(struct request), GFP_ATOMIC);
@@ -39,18 +39,18 @@ void dnbd3_net_connect(dnbd3_device_t *dev)
{
printk("FATAL: Kmalloc failed.\n");
memset(dev->cur_server.host, '\0', sizeof(dev->cur_server.host));
- return;
+ return -1;
}
if (!dev->cur_server.host || !dev->cur_server.port || (dev->vid == 0))
{
printk("FATAL: Host, port or vid not set.\n");
memset(dev->cur_server.host, '\0', sizeof(dev->cur_server.host));
- return;
+ return -1;
}
if (dev->cur_server.sock)
{
printk("ERROR: Device %s is already connected to %s.\n", dev->disk->disk_name, dev->cur_server.host);
- return;
+ return -1;
}
printk("INFO: Connecting device %s to %s\n", dev->disk->disk_name, dev->cur_server.host);
@@ -61,7 +61,7 @@ void dnbd3_net_connect(dnbd3_device_t *dev)
printk("ERROR: Couldn't create socket.\n");
dev->cur_server.sock = NULL;
memset(dev->cur_server.host, '\0', sizeof(dev->cur_server.host));
- return;
+ return -1;
}
kernel_setsockopt(dev->cur_server.sock, SOL_SOCKET, SO_SNDTIMEO, (char *) &timeout, sizeof(timeout));
kernel_setsockopt(dev->cur_server.sock, SOL_SOCKET, SO_RCVTIMEO, (char *) &timeout, sizeof(timeout));
@@ -74,7 +74,7 @@ void dnbd3_net_connect(dnbd3_device_t *dev)
printk("ERROR: Couldn't connect to host %s:%s\n", dev->cur_server.host, dev->cur_server.port);
dev->cur_server.sock = NULL;
memset(dev->cur_server.host, '\0', sizeof(dev->cur_server.host));
- return;
+ return -1;
}
dev->panic = 0;
@@ -113,6 +113,7 @@ void dnbd3_net_connect(dnbd3_device_t *dev)
dev->hb_timer.expires = jiffies + TIMER_INTERVAL_HEARTBEAT;
add_timer(&dev->hb_timer);
+ return 0;
}
void dnbd3_net_disconnect(dnbd3_device_t *dev)