Index: uspace/srv/net/socket/socket_messages.h
===================================================================
--- uspace/srv/net/socket/socket_messages.h	(revision 60ab6c32bdd1487d23ce71b9720e1b79f4c121ed)
+++ uspace/srv/net/socket/socket_messages.h	(revision 5d2e97689cd929002b9a705ff7bca577f89a544f)
@@ -115,30 +115,30 @@
  *  @param[out] answer The message answer structure.
  */
-#define SOCKET_SET_SOCKET_ID(answer)			(int *) &IPC_GET_ARG1(answer)
+#define SOCKET_SET_SOCKET_ID(answer)		&IPC_GET_ARG1(answer)
 
 /** Returns the socket identifier message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_SOCKET_ID(call)			(int) IPC_GET_ARG1(call)
+#define SOCKET_GET_SOCKET_ID(call)		(int) IPC_GET_ARG1(call)
 
 /** Sets the read data length in the message answer.
  *  @param[out] answer The message answer structure.
  */
-#define SOCKET_SET_READ_DATA_LENGTH(answer)	(int *) &IPC_GET_ARG1(answer)
+#define SOCKET_SET_READ_DATA_LENGTH(answer)	&IPC_GET_ARG1(answer)
 
 /** Returns the read data length message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_READ_DATA_LENGTH(call)		(int) IPC_GET_ARG1(call)
+#define SOCKET_GET_READ_DATA_LENGTH(call)	(int) IPC_GET_ARG1(call)
 
 /** Returns the backlog message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_BACKLOG(call)				(int) IPC_GET_ARG2(call)
+#define SOCKET_GET_BACKLOG(call)		(int) IPC_GET_ARG2(call)
 
 /** Returns the option level message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_OPT_LEVEL(call)			(int) IPC_GET_ARG2(call)
+#define SOCKET_GET_OPT_LEVEL(call)		(int) IPC_GET_ARG2(call)
 
 /** Returns the data fragment size message parameter.
@@ -150,10 +150,10 @@
  *  @param[out] answer The message answer structure.
  */
-#define SOCKET_SET_DATA_FRAGMENT_SIZE(answer)	(size_t *) &IPC_GET_ARG2(answer)
+#define SOCKET_SET_DATA_FRAGMENT_SIZE(answer)	&IPC_GET_ARG2(answer)
 
 /** Sets the address length in the message answer.
  *  @param[out] answer The message answer structure.
  */
-#define SOCKET_SET_ADDRESS_LENGTH(answer)		(socklen_t *) &IPC_GET_ARG3(answer)
+#define SOCKET_SET_ADDRESS_LENGTH(answer)	&IPC_GET_ARG3(answer)
 
 /** Returns the address length message parameter.
@@ -165,20 +165,20 @@
  *  @param[out] answer The message answer structure.
  */
-#define SOCKET_SET_HEADER_SIZE(answer)		(int *) &IPC_GET_ARG3(answer)
+#define SOCKET_SET_HEADER_SIZE(answer)		&IPC_GET_ARG3(answer)
 
 /** Returns the header size message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_HEADER_SIZE(call)			(int) IPC_GET_ARG3(call)
+#define SOCKET_GET_HEADER_SIZE(call)		(size_t) IPC_GET_ARG3(call)
 
 /** Returns the flags message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_FLAGS(call)				(int) IPC_GET_ARG4(call)
+#define SOCKET_GET_FLAGS(call)			(int) IPC_GET_ARG4(call)
 
 /** Returns the option name message parameter.
  *  @param[in] call The message call structure.
  */
-#define SOCKET_GET_OPT_NAME(call)				(int) IPC_GET_ARG4(call)
+#define SOCKET_GET_OPT_NAME(call)		(int) IPC_GET_ARG4(call)
 
 /** Returns the data fragments message parameter.
Index: uspace/srv/net/tl/tcp/tcp.c
===================================================================
--- uspace/srv/net/tl/tcp/tcp.c	(revision 60ab6c32bdd1487d23ce71b9720e1b79f4c121ed)
+++ uspace/srv/net/tl/tcp/tcp.c	(revision 5d2e97689cd929002b9a705ff7bca577f89a544f)
@@ -1060,4 +1060,5 @@
 	int app_phone = IPC_GET_PHONE(&call);
 	struct sockaddr * addr;
+	int socket_id;
 	size_t addrlen;
 	fibril_rwlock_t lock;
@@ -1104,6 +1105,7 @@
 					socket_data->local_sockets = &local_sockets;
 					fibril_rwlock_write_lock(&lock);
-					*SOCKET_SET_SOCKET_ID(answer) = SOCKET_GET_SOCKET_ID(call);
-					res = socket_create(&local_sockets, app_phone, socket_data, SOCKET_SET_SOCKET_ID(answer));
+					socket_id = SOCKET_GET_SOCKET_ID(call);
+					res = socket_create(&local_sockets, app_phone, socket_data, &socket_id);
+					*SOCKET_SET_SOCKET_ID(answer) = socket_id;
 					fibril_rwlock_write_unlock(&lock);
 					if(res == EOK){
Index: uspace/srv/net/tl/udp/udp.c
===================================================================
--- uspace/srv/net/tl/udp/udp.c	(revision 60ab6c32bdd1487d23ce71b9720e1b79f4c121ed)
+++ uspace/srv/net/tl/udp/udp.c	(revision 5d2e97689cd929002b9a705ff7bca577f89a544f)
@@ -417,4 +417,5 @@
 	int app_phone = IPC_GET_PHONE(&call);
 	struct sockaddr * addr;
+	int socket_id;
 	size_t addrlen;
 	ipc_call_t answer;
@@ -451,6 +452,8 @@
 				break;
 			case NET_SOCKET:
-				*SOCKET_SET_SOCKET_ID(answer) = SOCKET_GET_SOCKET_ID(call);
-				res = socket_create(&local_sockets, app_phone, NULL, SOCKET_SET_SOCKET_ID(answer));
+				socket_id = SOCKET_GET_SOCKET_ID(call);
+				res = socket_create(&local_sockets, app_phone, NULL, &socket_id);
+				*SOCKET_SET_SOCKET_ID(answer) = socket_id;
+				
 				if(res == EOK){
 					if(tl_get_ip_packet_dimension(udp_globals.ip_phone, &udp_globals.dimensions, DEVICE_INVALID_ID, &packet_dimension) == EOK){
