commit 0e78bda4c13f689bf95400d7e9b4f76eebf38898
parent 30f0119c50248150d08503521b0720cad6139b52
Author: sin <sin@2f30.org>
Date:   Tue, 29 Mar 2016 09:41:25 +0100
use switch
Diffstat:
| M | stun.c |  |  | 56 | ++++++++++++++++++++++++++++++++------------------------ | 
1 file changed, 32 insertions(+), 24 deletions(-)
diff --git a/stun.c b/stun.c
@@ -264,22 +264,26 @@ writedev(int fd, unsigned char *buf, int len)
 	uint32_t type = htonl(AF_INET);
 	int n;
 
-	if (devtype == TAPDEV) {
+	switch (devtype) {
+	case TAPDEV:
 		n = write(fd, buf, len);
 		if (n < 0)
 			logerr("write failed");
-		return n;
+		break;
+	case TUNDEV:
+		iov[0].iov_base = &type;
+		iov[0].iov_len = sizeof(type);
+		iov[1].iov_base = buf;
+		iov[1].iov_len = len;
+		n = writev(fd, iov, 2);
+		if (n < 0)
+			logerr("writev failed");
+		else if (n > 0)
+			n -= sizeof(type);
+		break;
+	default:
+		logerr("invalid device type: %d", devtype);
 	}
-
-	iov[0].iov_base = &type;
-	iov[0].iov_len = sizeof(type);
-	iov[1].iov_base = buf;
-	iov[1].iov_len = len;
-	n = writev(fd, iov, 2);
-	if (n < 0)
-		logerr("writev failed");
-	else if (n > 0)
-		return n - sizeof(type);
 	return n;
 }
 
@@ -290,22 +294,26 @@ readdev(int fd, unsigned char *buf, int len)
 	uint32_t type;
 	int n;
 
-	if (devtype == TAPDEV) {
+	switch (devtype) {
+	case TAPDEV:
 		n = read(fd, buf, len);
 		if (n < 0)
 			logerr("read failed");
-		return n;
+		break;
+	case TUNDEV:
+		iov[0].iov_base = &type;
+		iov[0].iov_len = sizeof(type);
+		iov[1].iov_base = buf;
+		iov[1].iov_len = len;
+		n = readv(fd, iov, 2);
+		if (n < 0)
+			logerr("readv failed");
+		else if (n > 0)
+			n -= sizeof(type);
+		break;
+	default:
+		logerr("invalid device type: %d", devtype);
 	}
-
-	iov[0].iov_base = &type;
-	iov[0].iov_len = sizeof(type);
-	iov[1].iov_base = buf;
-	iov[1].iov_len = len;
-	n = readv(fd, iov, 2);
-	if (n < 0)
-		logerr("readv failed");
-	else if (n > 0)
-		return n - sizeof(type);
 	return n;
 }
 #endif