[PATCH] Network engine fixes

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/engines/net.c b/engines/net.c
index 222624d..3967959 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -124,7 +124,7 @@
 
 		hent = gethostbyname(host);
 		if (!hent) {
-			td_vmsg(td, errno, "gethostbyname");
+			td_verror(td, errno);
 			return 1;
 		}
 
@@ -132,14 +132,14 @@
 	}
 
 	for_each_file(td, f, i) {
-		f->fd = socket(AF_INET, SOCK_STREAM, 0);
+		f->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 		if (f->fd < 0) {
-			td_vmsg(td, errno, "socket");
+			td_verror(td, errno);
 			return 1;
 		}
 
 		if (connect(f->fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
-			td_vmsg(td, errno, "connect");
+			td_verror(td, errno);
 			return 1;
 		}
 	}
@@ -155,17 +155,23 @@
 	struct fio_file *f;
 	int fd, opt, i;
 
-	fd = socket(AF_INET, SOCK_STREAM, 0);
+	fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 	if (fd < 0) {
-		td_vmsg(td, errno, "socket");
+		td_verror(td, errno);
 		return 1;
 	}
 
 	opt = 1;
 	if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
-		td_vmsg(td, errno, "setsockopt");
+		td_verror(td, errno);
 		return 1;
 	}
+#ifdef SO_REUSEPORT
+	if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt)) < 0) {
+		td_verror(td, errno);
+		return 1;
+	}
+#endif
 
 	memset(&addr, 0, sizeof(addr));
 	addr.sin_family = AF_INET;
@@ -173,11 +179,11 @@
 	addr.sin_port = htons(port);
 
 	if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
-		td_vmsg(td, errno, "bind");
+		td_verror(td, errno);
 		return 1;
 	}
 	if (listen(fd, 1) < 0) {
-		td_vmsg(td, errno, "listen");
+		td_verror(td, errno);
 		return 1;
 	}
 
@@ -187,7 +193,7 @@
 	for_each_file(td, f, i) {
 		f->fd = accept(fd, (struct sockaddr *) &addr, &socklen);
 		if (f->fd < 0) {
-			td_vmsg(td, errno, "accept");
+			td_verror(td, errno);
 			return 1;
 		}
 	}