Index: uspace/app/netecho/netecho.c
===================================================================
--- uspace/app/netecho/netecho.c	(revision cd18cd150d0c5c21ddf7dcf79dc70df047fc3770)
+++ uspace/app/netecho/netecho.c	(revision 1393bbb9580f084075c057cedc39f77e37da345e)
@@ -225,5 +225,5 @@
 	uint8_t address_buf[sizeof(struct sockaddr_in6)];
 
-	socklen_t addrlen;
+	socklen_t addrlen = sizeof(struct sockaddr_in6);
 	int socket_id;
 	ssize_t rcv_size;
@@ -240,5 +240,4 @@
 	if (type == SOCK_STREAM) {
 		/* Accept a socket if a stream socket is used */
-		addrlen = sizeof(address_buf);
 		if (verbose)
 			printf("accept()\n");
@@ -280,5 +279,5 @@
 				case AF_INET6:
 					port = ntohs(address_in6->sin6_port);
-					address_start = (uint8_t *) &address_in6->sin6_addr.s6_addr;
+					address_start = (uint8_t *) address_in6->sin6_addr.s6_addr;
 					break;
 				default:
Index: uspace/app/nettest1/nettest.c
===================================================================
--- uspace/app/nettest1/nettest.c	(revision cd18cd150d0c5c21ddf7dcf79dc70df047fc3770)
+++ uspace/app/nettest1/nettest.c	(revision 1393bbb9580f084075c057cedc39f77e37da345e)
@@ -41,5 +41,4 @@
 #include "print_error.h"
 
-
 /** Creates new sockets.
  *
@@ -52,20 +51,20 @@
  * @return Other error codes as defined for the socket() function.
  */
-int sockets_create(int verbose, int *socket_ids, int sockets, int family, sock_type_t type)
-{
-	int index;
-
+int sockets_create(int verbose, int *socket_ids, unsigned int sockets,
+    uint16_t family, sock_type_t type)
+{
 	if (verbose)
 		printf("Create\t");
-		
-	fflush(stdout);
-	
-	for (index = 0; index < sockets; index++) {
+	
+	fflush(stdout);
+	
+	for (unsigned int index = 0; index < sockets; index++) {
 		socket_ids[index] = socket(family, type, 0);
 		if (socket_ids[index] < 0) {
-			printf("Socket %d (%d) error:\n", index, socket_ids[index]);
+			printf("Socket %u (%d) error:\n", index, socket_ids[index]);
 			socket_print_error(stderr, socket_ids[index], "Socket create: ", "\n");
 			return socket_ids[index];
 		}
+		
 		if (verbose)
 			print_mark(index);
@@ -83,21 +82,19 @@
  * @return Other error codes as defined for the closesocket() function.
  */
-int sockets_close(int verbose, int *socket_ids, int sockets)
-{
-	int index;
-	int rc;
-
+int sockets_close(int verbose, int *socket_ids, unsigned int sockets)
+{
 	if (verbose)
 		printf("\tClose\t");
-
-	fflush(stdout);
-	
-	for (index = 0; index < sockets; index++) {
-		rc = closesocket(socket_ids[index]);
+	
+	fflush(stdout);
+	
+	for (unsigned int index = 0; index < sockets; index++) {
+		int rc = closesocket(socket_ids[index]);
 		if (rc != EOK) {
-			printf("Socket %d (%d) error:\n", index, socket_ids[index]);
+			printf("Socket %u (%d) error:\n", index, socket_ids[index]);
 			socket_print_error(stderr, rc, "Socket close: ", "\n");
 			return rc;
 		}
+		
 		if (verbose)
 			print_mark(index);
@@ -117,9 +114,7 @@
  * @return Other error codes as defined for the connect() function.
  */
-int sockets_connect(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t addrlen)
-{
-	int index;
-	int rc;
-
+int sockets_connect(int verbose, int *socket_ids, unsigned int sockets,
+    struct sockaddr *address, socklen_t addrlen)
+{
 	if (verbose)
 		printf("\tConnect\t");
@@ -127,76 +122,93 @@
 	fflush(stdout);
 	
-	for (index = 0; index < sockets; index++) {
-		rc = connect(socket_ids[index], address, addrlen);
+	for (unsigned int index = 0; index < sockets; index++) {
+		int rc = connect(socket_ids[index], address, addrlen);
 		if (rc != EOK) {
 			socket_print_error(stderr, rc, "Socket connect: ", "\n");
 			return rc;
 		}
-		if (verbose)
-			print_mark(index);
-	}
-	
-	return EOK;
-}
-
-/** Sends data via sockets.
- *
- * @param[in] verbose A value indicating whether to print out verbose information.
- * @param[in] socket_ids A field of stored socket identifiers.
- * @param[in] sockets The number of sockets in the field. Should be at most the size of the field.
- * @param[in] address The destination host address to send data to.
- * @param[in] addrlen The length of the destination address in bytes.
- * @param[in] data The data to be sent.
- * @param[in] size The data size in bytes.
- * @param[in] messages The number of datagrams per socket to be sent.
+		
+		if (verbose)
+			print_mark(index);
+	}
+	
+	return EOK;
+}
+
+/** Send data via sockets.
+ *
+ * @param[in] verbose    Print out verbose information.
+ * @param[in] socket_ids Stored socket identifiers.
+ * @param[in] sockets    Number of sockets.
+ * @param[in] address    Destination host address to send data to.
+ * @param[in] addrlen    Length of the destination address in bytes.
+ * @param[in] data       Data to be sent.
+ * @param[in] size       Size of the data in bytes.
+ * @param[in] messages   Number of datagrams per socket to be sent.
+ * @param[in] type       Socket type.
+ *
  * @return EOK on success.
  * @return Other error codes as defined for the sendto() function.
- */
-int sockets_sendto(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t addrlen, char *data, int size, int messages)
-{
-	int index;
-	int message;
-	int rc;
-
+ *
+ */
+int sockets_sendto(int verbose, int *socket_ids, unsigned int sockets,
+    struct sockaddr *address, socklen_t addrlen, char *data, size_t size,
+    unsigned int messages, sock_type_t type)
+{
 	if (verbose)
 		printf("\tSendto\t");
-
-	fflush(stdout);
-	
-	for (index = 0; index < sockets; index++) {
-		for (message = 0; message < messages; message++) {
-			rc = sendto(socket_ids[index], data, size, 0, address, addrlen);
+	
+	fflush(stdout);
+	
+	for (unsigned int index = 0; index < sockets; index++) {
+		for (unsigned int message = 0; message < messages; message++) {
+			int rc;
+			
+			switch (type) {
+			case SOCK_STREAM:
+				rc = send(socket_ids[index], data, size, 0);
+				break;
+			case SOCK_DGRAM:
+				rc = sendto(socket_ids[index], data, size, 0, address, addrlen);
+				break;
+			default:
+				rc = EINVAL;
+			}
+			
 			if (rc != EOK) {
-				printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
+				printf("Socket %u (%d), message %u error:\n",
+				    index, socket_ids[index], message);
 				socket_print_error(stderr, rc, "Socket send: ", "\n");
 				return rc;
 			}
 		}
-		if (verbose)
-			print_mark(index);
-	}
-	
-	return EOK;
-}
-
-/** Receives data via sockets.
- *
- * @param[in] verbose A value indicating whether to print out verbose information.
- * @param[in] socket_ids A field of stored socket identifiers.
- * @param[in] sockets The number of sockets in the field. Should be at most the size of the field.
- * @param[in] address The source host address of received datagrams.
- * @param[in,out] addrlen The maximum length of the source address in bytes. The actual size of the source address is set instead.
- * @param[out] data The received data.
- * @param[in] size The maximum data size in bytes.
- * @param[in] messages The number of datagrams per socket to be received.
+		
+		if (verbose)
+			print_mark(index);
+	}
+	
+	return EOK;
+}
+
+/** Receive data via sockets.
+ *
+ * @param[in]     verbose    Print out verbose information.
+ * @param[in]     socket_ids Stored socket identifiers.
+ * @param[in]     sockets    Number of sockets.
+ * @param[in]     address    Source host address of received datagrams.
+ * @param[in,out] addrlen    Maximum length of the source address in bytes.
+ *                           The actual size of the source address is set.
+ * @param[out]    data       Received data.
+ * @param[in]     size       Maximum data size in bytes.
+ * @param[in]     messages   Number of datagrams per socket to be received.
+ *
  * @return EOK on success.
  * @return Other error codes as defined for the recvfrom() function.
- */
-int sockets_recvfrom(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t *addrlen, char *data, int size, int messages)
-{
-	int value;
-	int index;
-	int message;
-
+ *
+ */
+int sockets_recvfrom(int verbose, int *socket_ids, unsigned int sockets,
+    struct sockaddr *address, socklen_t *addrlen, char *data, size_t size,
+    unsigned int messages)
+{
 	if (verbose)
 		printf("\tRecvfrom\t");
@@ -204,62 +216,82 @@
 	fflush(stdout);
 	
-	for (index = 0; index < sockets; index++) {
-		for (message = 0; message < messages; message++) {
-			value = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
-			if (value < 0) {
-				printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
-				socket_print_error(stderr, value, "Socket receive: ", "\n");
-				return value;
-			}
-		}
-		if (verbose)
-			print_mark(index);
-	}
-	return EOK;
-}
-
-/** Sends and receives data via sockets.
+	for (unsigned int index = 0; index < sockets; index++) {
+		for (unsigned int message = 0; message < messages; message++) {
+			int rc = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
+			if (rc < 0) {
+				printf("Socket %u (%d), message %u error:\n",
+				    index, socket_ids[index], message);
+				socket_print_error(stderr, rc, "Socket receive: ", "\n");
+				return rc;
+			}
+		}
+		
+		if (verbose)
+			print_mark(index);
+	}
+	
+	return EOK;
+}
+
+/** Send and receive data via sockets.
  *
  * Each datagram is sent and a reply read consequently.
  * The next datagram is sent after the reply is received.
  *
- * @param[in] verbose A value indicating whether to print out verbose information.
- * @param[in] socket_ids A field of stored socket identifiers.
- * @param[in] sockets The number of sockets in the field. Should be at most the size of the field.
- * @param[in,out] address The destination host address to send data to. The source host address of received datagrams is set instead.
- * @param[in] addrlen The length of the destination address in bytes.
- * @param[in,out] data The data to be sent. The received data are set instead.
- * @param[in] size The data size in bytes.
- * @param[in] messages The number of datagrams per socket to be received.
+ * @param[in]     verbose    Print out verbose information.
+ * @param[in]     socket_ids Stored socket identifiers.
+ * @param[in]     sockets    Number of sockets.
+ * @param[in,out] address    Destination host address to send data to.
+ *                           The source host address of received datagrams is set.
+ * @param[in]     addrlen    Length of the destination address in bytes.
+ * @param[in,out] data       Data to be sent. The received data are set.
+ * @param[in]     size       Size of the data in bytes.
+ * @param[in]     messages   Number of datagrams per socket to be received.
+ * @param[in]     type       Socket type.
+ *
  * @return EOK on success.
  * @return Other error codes as defined for the recvfrom() function.
- */
-int sockets_sendto_recvfrom(int verbose, int *socket_ids, int sockets, struct sockaddr *address, socklen_t *addrlen, char *data, int size, int messages)
-{
-	int value;
-	int index;
-	int message;
-	int rc;
-
+ *
+ */
+int sockets_sendto_recvfrom(int verbose, int *socket_ids, unsigned int sockets,
+    struct sockaddr *address, socklen_t *addrlen, char *data,
+    size_t size, unsigned int messages, sock_type_t type)
+{
 	if (verbose)
 		printf("\tSendto and recvfrom\t");
-
-	fflush(stdout);
-	
-	for (index = 0; index < sockets; index++) {
-		for (message = 0; message < messages; message++) {
-			rc = sendto(socket_ids[index], data, size, 0, address, *addrlen);
+	
+	fflush(stdout);
+	
+	for (unsigned int index = 0; index < sockets; index++) {
+		for (unsigned int message = 0; message < messages; message++) {
+			int rc;
+			
+			switch (type) {
+			case SOCK_STREAM:
+				rc = send(socket_ids[index], data, size, 0);
+				break;
+			case SOCK_DGRAM:
+				rc = sendto(socket_ids[index], data, size, 0, address, *addrlen);
+				break;
+			default:
+				rc = EINVAL;
+			}
+			
 			if (rc != EOK) {
-				printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
+				printf("Socket %u (%d), message %u error:\n",
+				    index, socket_ids[index], message);
 				socket_print_error(stderr, rc, "Socket send: ", "\n");
 				return rc;
 			}
-			value = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
-			if (value < 0) {
-				printf("Socket %d (%d), message %d error:\n", index, socket_ids[index], message);
-				socket_print_error(stderr, value, "Socket receive: ", "\n");
-				return value;
-			}
-		}
+			
+			rc = recvfrom(socket_ids[index], data, size, 0, address, addrlen);
+			if (rc < 0) {
+				printf("Socket %u (%d), message %u error:\n",
+				    index, socket_ids[index], message);
+				socket_print_error(stderr, rc, "Socket receive: ", "\n");
+				return rc;
+			}
+		}
+		
 		if (verbose)
 			print_mark(index);
@@ -274,6 +306,7 @@
  *
  * @param[in] index The index of the mark to be printed.
- */
-void print_mark(int index)
+ *
+ */
+void print_mark(unsigned int index)
 {
 	if ((index + 1) % 10)
@@ -281,4 +314,5 @@
 	else
 		printf("|");
+	
 	fflush(stdout);
 }
Index: uspace/app/nettest1/nettest.h
===================================================================
--- uspace/app/nettest1/nettest.h	(revision cd18cd150d0c5c21ddf7dcf79dc70df047fc3770)
+++ uspace/app/nettest1/nettest.h	(revision 1393bbb9580f084075c057cedc39f77e37da345e)
@@ -40,11 +40,15 @@
 #include <net/socket.h>
 
-extern void print_mark(int);
-extern int sockets_create(int, int *, int, int, sock_type_t);
-extern int sockets_close(int, int *, int);
-extern int sockets_connect(int, int *, int, struct sockaddr *, socklen_t);
-extern int sockets_sendto(int, int *, int, struct sockaddr *, socklen_t, char *, int, int);
-extern int sockets_recvfrom(int, int *, int, struct sockaddr *, socklen_t *, char *, int, int);
-extern int sockets_sendto_recvfrom(int, int *, int, struct sockaddr *, socklen_t *, char *, int, int);
+extern void print_mark(unsigned int);
+extern int sockets_create(int, int *, unsigned int, uint16_t, sock_type_t);
+extern int sockets_close(int, int *, unsigned int);
+extern int sockets_connect(int, int *, unsigned int, struct sockaddr *,
+    socklen_t);
+extern int sockets_sendto(int, int *, unsigned int, struct sockaddr *,
+    socklen_t, char *, size_t, unsigned int, sock_type_t);
+extern int sockets_recvfrom(int, int *, unsigned int, struct sockaddr *,
+    socklen_t *, char *, size_t, unsigned int);
+extern int sockets_sendto_recvfrom(int, int *, unsigned int, struct sockaddr *,
+    socklen_t *, char *, size_t, unsigned int, sock_type_t);
 
 #endif
Index: uspace/app/nettest1/nettest1.c
===================================================================
--- uspace/app/nettest1/nettest1.c	(revision cd18cd150d0c5c21ddf7dcf79dc70df047fc3770)
+++ uspace/app/nettest1/nettest1.c	(revision 1393bbb9580f084075c057cedc39f77e37da345e)
@@ -253,5 +253,5 @@
 	
 	rc = sockets_sendto_recvfrom(verbose, socket_ids, nsockets, address,
-	    &addrlen, data, size, nmessages);
+	    &addrlen, data, size, nmessages, type);
 	if (rc != EOK)
 		return rc;
@@ -278,5 +278,5 @@
 	
 	rc = sockets_sendto(verbose, socket_ids, nsockets, address, addrlen,
-	    data, size, nmessages);
+	    data, size, nmessages, type);
 	if (rc != EOK)
 		return rc;
Index: uspace/app/nettest2/nettest2.c
===================================================================
--- uspace/app/nettest2/nettest2.c	(revision cd18cd150d0c5c21ddf7dcf79dc70df047fc3770)
+++ uspace/app/nettest2/nettest2.c	(revision 1393bbb9580f084075c057cedc39f77e37da345e)
@@ -375,5 +375,5 @@
 	
 	rc = sockets_sendto_recvfrom(verbose, socket_ids, sockets, address,
-	    &addrlen, data, size, messages);
+	    &addrlen, data, size, messages, type);
 	if (rc != EOK)
 		return rc;
@@ -399,5 +399,5 @@
 	
 	rc = sockets_sendto(verbose, socket_ids, sockets, address, addrlen,
-	    data, size, messages);
+	    data, size, messages, type);
 	if (rc != EOK)
 		return rc;
