Index: uspace/lib/c/generic/net/packet.c
===================================================================
--- uspace/lib/c/generic/net/packet.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/c/generic/net/packet.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -62,5 +62,5 @@
 
 /** Type definition of the packet map page. */
-typedef packet_t packet_map_t[PACKET_MAP_SIZE];
+typedef packet_t *packet_map_t[PACKET_MAP_SIZE];
 
 /** Packet map.
@@ -104,8 +104,8 @@
  * @return		NULL if the mapping does not exist.
  */
-packet_t pm_find(packet_id_t packet_id)
+packet_t *pm_find(packet_id_t packet_id)
 {
 	packet_map_t *map;
-	packet_t packet;
+	packet_t *packet;
 
 	if (!packet_id)
@@ -135,5 +135,5 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-int pm_add(packet_t packet)
+int pm_add(packet_t *packet)
 {
 	packet_map_t *map;
@@ -178,5 +178,5 @@
 	int index;
 	packet_map_t *map;
-	packet_t packet;
+	packet_t *packet;
 
 	fibril_rwlock_write_lock(&pm_globals.lock);
@@ -209,7 +209,7 @@
  * @return		EINVAL if the packet is not valid.
  */
-int pq_add(packet_t * first, packet_t packet, size_t order, size_t metric)
-{
-	packet_t item;
+int pq_add(packet_t **first, packet_t *packet, size_t order, size_t metric)
+{
+	packet_t *item;
 
 	if (!first || !packet_is_valid(packet))
@@ -253,7 +253,7 @@
  * @return		NULL if the packet is not found.
  */
-packet_t pq_find(packet_t packet, size_t order)
-{
-	packet_t item;
+packet_t *pq_find(packet_t *packet, size_t order)
+{
+	packet_t *item;
 
 	if (!packet_is_valid(packet))
@@ -278,7 +278,7 @@
  * @return		EINVAL if etiher of the packets is invalid.
  */
-int pq_insert_after(packet_t packet, packet_t new_packet)
-{
-	packet_t item;
+int pq_insert_after(packet_t *packet, packet_t *new_packet)
+{
+	packet_t *item;
 
 	if (!packet_is_valid(packet) || !packet_is_valid(new_packet))
@@ -303,8 +303,8 @@
  * @return		NULL if the packet is not valid.
  */
-packet_t pq_detach(packet_t packet)
-{
-	packet_t next;
-	packet_t previous;
+packet_t *pq_detach(packet_t *packet)
+{
+	packet_t *next;
+	packet_t *previous;
 
 	if (!packet_is_valid(packet))
@@ -331,5 +331,5 @@
  * @return		EINVAL if the packet is invalid.
  */
-int pq_set_order(packet_t packet, size_t order, size_t metric)
+int pq_set_order(packet_t *packet, size_t order, size_t metric)
 {
 	if (!packet_is_valid(packet))
@@ -349,5 +349,5 @@
  * @return		EINVAL if the packet is invalid.
  */
-int pq_get_order(packet_t packet, size_t *order, size_t *metric)
+int pq_get_order(packet_t *packet, size_t *order, size_t *metric)
 {
 	if (!packet_is_valid(packet))
@@ -372,8 +372,8 @@
  *			packets after its detachment.
  */
-void pq_destroy(packet_t first, void (*packet_release)(packet_t packet))
-{
-	packet_t actual;
-	packet_t next;
+void pq_destroy(packet_t *first, void (*packet_release)(packet_t *packet))
+{
+	packet_t *actual;
+	packet_t *next;
 
 	actual = first;
@@ -395,5 +395,5 @@
  * @return		NULL if the packet is not valid.
  */
-packet_t pq_next(packet_t packet)
+packet_t *pq_next(packet_t *packet)
 {
 	if (!packet_is_valid(packet))
@@ -410,5 +410,5 @@
  * @return		NULL if the packet is not valid.
  */
-packet_t pq_previous(packet_t packet)
+packet_t *pq_previous(packet_t *packet)
 {
 	if (!packet_is_valid(packet))
Index: uspace/lib/c/include/net/packet.h
===================================================================
--- uspace/lib/c/include/net/packet.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/c/include/net/packet.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -46,5 +46,5 @@
  * @see packet
  */
-typedef struct packet * packet_t;
+typedef struct packet packet_t;
 
 /** Type definition of the packet dimension.
@@ -69,18 +69,18 @@
 /*@{*/
 
-extern packet_t pm_find(packet_id_t);
-extern int pm_add(packet_t);
+extern packet_t *pm_find(packet_id_t);
+extern int pm_add(packet_t *);
 extern int pm_init(void);
 extern void pm_destroy(void);
 
-extern int pq_add(packet_t *, packet_t, size_t, size_t);
-extern packet_t pq_find(packet_t, size_t);
-extern int pq_insert_after(packet_t, packet_t);
-extern packet_t pq_detach(packet_t);
-extern int pq_set_order(packet_t, size_t, size_t);
-extern int pq_get_order(packet_t, size_t *, size_t *);
-extern void pq_destroy(packet_t, void (*)(packet_t));
-extern packet_t pq_next(packet_t);
-extern packet_t pq_previous(packet_t);
+extern int pq_add(packet_t **, packet_t *, size_t, size_t);
+extern packet_t *pq_find(packet_t *, size_t);
+extern int pq_insert_after(packet_t *, packet_t *);
+extern packet_t *pq_detach(packet_t *);
+extern int pq_set_order(packet_t *, size_t, size_t);
+extern int pq_get_order(packet_t *, size_t *, size_t *);
+extern void pq_destroy(packet_t *, void (*)(packet_t *));
+extern packet_t *pq_next(packet_t *);
+extern packet_t *pq_previous(packet_t *);
 
 /*@}*/
Index: uspace/lib/c/include/net/packet_header.h
===================================================================
--- uspace/lib/c/include/net/packet_header.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/c/include/net/packet_header.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -128,5 +128,5 @@
  * @return		False otherwise.
  */
-static inline int packet_is_valid(const packet_t packet)
+static inline int packet_is_valid(const packet_t *packet)
 {
 	return packet && (packet->magic_value == PACKET_MAGIC_VALUE);
Index: uspace/lib/net/generic/packet_client.c
===================================================================
--- uspace/lib/net/generic/packet_client.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/generic/packet_client.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -57,5 +57,5 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-int packet_copy_data(packet_t packet, const void *data, size_t length)
+int packet_copy_data(packet_t *packet, const void *data, size_t length)
 {
 	if (!packet_is_valid(packet))
@@ -81,8 +81,8 @@
  * @return		NULL if there is not enough memory left.
  */
-void *packet_prefix(packet_t packet, size_t length)
+void *packet_prefix(packet_t *packet, size_t length)
 {
 	if ((!packet_is_valid(packet)) ||
-	    (packet->data_start - sizeof(struct packet) -
+	    (packet->data_start - sizeof(packet_t) -
 	    2 * (packet->dest_addr - packet->src_addr) < length)) {
 		return NULL;
@@ -102,5 +102,5 @@
  * @return		NULL if there is not enough memory left.
  */
-void *packet_suffix(packet_t packet, size_t length)
+void *packet_suffix(packet_t *packet, size_t length)
 {
 	if ((!packet_is_valid(packet)) ||
@@ -124,5 +124,5 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-int packet_trim(packet_t packet, size_t prefix, size_t suffix)
+int packet_trim(packet_t *packet, size_t prefix, size_t suffix)
 {
 	if (!packet_is_valid(packet))
@@ -143,5 +143,5 @@
  * @return		Zero if the packet is not valid.
  */
-packet_id_t packet_get_id(const packet_t packet)
+packet_id_t packet_get_id(const packet_t *packet)
 {
 	return packet_is_valid(packet) ? packet->packet_id : 0;
@@ -157,5 +157,5 @@
  * @return		EINVAL if the packet is not valid.
  */
-int packet_get_addr(const packet_t packet, uint8_t **src, uint8_t **dest)
+int packet_get_addr(const packet_t *packet, uint8_t **src, uint8_t **dest)
 {
 	if (!packet_is_valid(packet))
@@ -177,5 +177,5 @@
  * @return		Zero if the packet is not valid.
  */
-size_t packet_get_data_length(const packet_t packet)
+size_t packet_get_data_length(const packet_t *packet)
 {
 	if (!packet_is_valid(packet))
@@ -191,5 +191,5 @@
  * @return		NULL if the packet is not valid.
  */
-void *packet_get_data(const packet_t packet)
+void *packet_get_data(const packet_t *packet)
 {
 	if (!packet_is_valid(packet))
@@ -210,5 +210,5 @@
  */
 int
-packet_set_addr(packet_t packet, const uint8_t *src, const uint8_t *dest,
+packet_set_addr(packet_t *packet, const uint8_t *src, const uint8_t *dest,
     size_t addr_len)
 {
@@ -257,7 +257,7 @@
  * @return		NULL on error.
  */
-packet_t packet_get_copy(int phone, packet_t packet)
-{
-	packet_t copy;
+packet_t *packet_get_copy(int phone, packet_t *packet)
+{
+	packet_t *copy;
 	uint8_t * src = NULL;
 	uint8_t * dest = NULL;
Index: uspace/lib/net/generic/packet_remote.c
===================================================================
--- uspace/lib/net/generic/packet_remote.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/generic/packet_remote.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -64,5 +64,5 @@
  */
 static int
-packet_return(int phone, packet_t *packet, packet_id_t packet_id, size_t size)
+packet_return(int phone, packet_t **packet, packet_id_t packet_id, size_t size)
 {
 	ipc_call_t answer;
@@ -72,5 +72,5 @@
 	message = async_send_1(phone, NET_PACKET_GET, packet_id, &answer);
 
-	*packet = (packet_t) as_get_mappable_page(size);
+	*packet = (packet_t *) as_get_mappable_page(size);
 	rc = async_share_in_start_0_0(phone, *packet, size);
 	if (rc != EOK) {
@@ -107,5 +107,5 @@
  *			function.
  */
-int packet_translate_remote(int phone, packet_t *packet, packet_id_t packet_id)
+int packet_translate_remote(int phone, packet_t **packet, packet_id_t packet_id)
 {
 	int rc;
@@ -127,5 +127,5 @@
 	}
 	if ((*packet)->next) {
-		packet_t next;
+		packet_t *next;
 		
 		return packet_translate_remote(phone, &next, (*packet)->next);
@@ -148,5 +148,5 @@
  * @return		NULL on error.
  */
-packet_t packet_get_4_remote(int phone, size_t max_content, size_t addr_len,
+packet_t *packet_get_4_remote(int phone, size_t max_content, size_t addr_len,
     size_t max_prefix, size_t max_suffix)
 {
@@ -161,5 +161,5 @@
 	
 	
-	packet_t packet = pm_find(packet_id);
+	packet_t *packet = pm_find(packet_id);
 	if (!packet) {
 		rc = packet_return(phone, &packet, packet_id, size);
@@ -180,5 +180,5 @@
  * @return		NULL on error.
  */
-packet_t packet_get_1_remote(int phone, size_t content)
+packet_t *packet_get_1_remote(int phone, size_t content)
 {
 	ipcarg_t packet_id;
@@ -191,5 +191,5 @@
 		return NULL;
 	
-	packet_t packet = pm_find(packet_id);
+	packet_t *packet = pm_find(packet_id);
 	if (!packet) {
 		rc = packet_return(phone, &packet, packet_id, size);
Index: uspace/lib/net/il/il_interface.c
===================================================================
--- uspace/lib/net/il/il_interface.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/il/il_interface.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -77,5 +77,5 @@
  *
  */
-int il_received_msg(int il_phone, device_id_t device_id, packet_t packet,
+int il_received_msg(int il_phone, device_id_t device_id, packet_t *packet,
     services_t target)
 {
Index: uspace/lib/net/il/ip_client.c
===================================================================
--- uspace/lib/net/il/ip_client.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/il/ip_client.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -51,5 +51,5 @@
  * @return		Zero if there is no IP header.
  */
-size_t ip_client_header_length(packet_t packet)
+size_t ip_client_header_length(packet_t *packet)
 {
 	ip_header_t *header;
@@ -152,5 +152,5 @@
  */
 int
-ip_client_prepare_packet(packet_t packet, ip_protocol_t protocol, ip_ttl_t ttl,
+ip_client_prepare_packet(packet_t *packet, ip_protocol_t protocol, ip_ttl_t ttl,
     ip_tos_t tos, int dont_fragment, size_t ipopt_length)
 {
@@ -208,5 +208,5 @@
  */
 int
-ip_client_process_packet(packet_t packet, ip_protocol_t *protocol,
+ip_client_process_packet(packet_t *packet, ip_protocol_t *protocol,
     ip_ttl_t *ttl, ip_tos_t *tos, int *dont_fragment, size_t *ipopt_length)
 {
Index: uspace/lib/net/il/ip_remote.c
===================================================================
--- uspace/lib/net/il/ip_remote.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/il/ip_remote.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -204,5 +204,5 @@
  */
 int ip_received_error_msg_remote(int ip_phone, device_id_t device_id,
-    packet_t packet, services_t target, services_t error)
+    packet_t *packet, services_t target, services_t error)
 {
 	return generic_received_msg_remote(ip_phone, NET_IP_RECEIVED_ERROR,
@@ -225,5 +225,5 @@
  *			function.
  */
-int ip_send_msg_remote(int ip_phone, device_id_t device_id, packet_t packet,
+int ip_send_msg_remote(int ip_phone, device_id_t device_id, packet_t *packet,
     services_t sender, services_t error)
 {
Index: uspace/lib/net/include/icmp_client.h
===================================================================
--- uspace/lib/net/include/icmp_client.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/icmp_client.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -41,7 +41,7 @@
 #include <net/packet.h>
 
-extern int icmp_client_process_packet(packet_t, icmp_type_t *, icmp_code_t *,
+extern int icmp_client_process_packet(packet_t *, icmp_type_t *, icmp_code_t *,
     icmp_param_t *, icmp_param_t *);
-extern size_t icmp_client_header_length(packet_t);
+extern size_t icmp_client_header_length(packet_t *);
 
 #endif
Index: uspace/lib/net/include/icmp_interface.h
===================================================================
--- uspace/lib/net/include/icmp_interface.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/icmp_interface.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -51,8 +51,8 @@
 
 extern int icmp_destination_unreachable_msg(int, icmp_code_t, icmp_param_t,
-    packet_t);
-extern int icmp_source_quench_msg(int, packet_t);
-extern int icmp_time_exceeded_msg(int, icmp_code_t, packet_t);
-extern int icmp_parameter_problem_msg(int, icmp_code_t, icmp_param_t, packet_t);
+    packet_t *);
+extern int icmp_source_quench_msg(int, packet_t *);
+extern int icmp_time_exceeded_msg(int, icmp_code_t, packet_t *);
+extern int icmp_parameter_problem_msg(int, icmp_code_t, icmp_param_t, packet_t *);
 
 /*@}*/
Index: uspace/lib/net/include/il_interface.h
===================================================================
--- uspace/lib/net/include/il_interface.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/il_interface.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -51,5 +51,5 @@
 
 extern int il_device_state_msg(int, device_id_t, device_state_t, services_t);
-extern int il_received_msg(int, device_id_t, packet_t, services_t);
+extern int il_received_msg(int, device_id_t, packet_t *, services_t);
 extern int il_mtu_changed_msg(int, device_id_t, size_t, services_t);
 
Index: uspace/lib/net/include/ip_client.h
===================================================================
--- uspace/lib/net/include/ip_client.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/ip_client.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -45,9 +45,9 @@
 #include <ip_interface.h>
 
-extern int ip_client_prepare_packet(packet_t, ip_protocol_t, ip_ttl_t, ip_tos_t,
-    int, size_t);
-extern int ip_client_process_packet(packet_t, ip_protocol_t *, ip_ttl_t *,
+extern int ip_client_prepare_packet(packet_t *, ip_protocol_t, ip_ttl_t,
+    ip_tos_t, int, size_t);
+extern int ip_client_process_packet(packet_t *, ip_protocol_t *, ip_ttl_t *,
     ip_tos_t *, int *, size_t *);
-extern size_t ip_client_header_length(packet_t);
+extern size_t ip_client_header_length(packet_t *);
 extern int ip_client_set_pseudo_header_data_length(void *, size_t, size_t);
 extern int ip_client_get_pseudo_header(ip_protocol_t, struct sockaddr *,
Index: uspace/lib/net/include/ip_interface.h
===================================================================
--- uspace/lib/net/include/ip_interface.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/ip_interface.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -70,5 +70,5 @@
  * @return		EOK on success.
  */
-typedef int (*tl_received_msg_t)(device_id_t device_id, packet_t packet,
+typedef int (*tl_received_msg_t)(device_id_t device_id, packet_t *packet,
     services_t receiver, services_t error);
 
Index: uspace/lib/net/include/ip_remote.h
===================================================================
--- uspace/lib/net/include/ip_remote.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/ip_remote.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -45,10 +45,10 @@
 extern int ip_set_gateway_req_remote(int, device_id_t, in_addr_t);
 extern int ip_packet_size_req_remote(int, device_id_t, packet_dimension_t *);
-extern int ip_received_error_msg_remote(int, device_id_t, packet_t, services_t,
+extern int ip_received_error_msg_remote(int, device_id_t, packet_t *, services_t,
     services_t);
 extern int ip_device_req_remote(int, device_id_t, services_t);
 extern int ip_add_route_req_remote(int, device_id_t, in_addr_t, in_addr_t,
     in_addr_t);
-extern int ip_send_msg_remote(int, device_id_t, packet_t, services_t,
+extern int ip_send_msg_remote(int, device_id_t, packet_t *, services_t,
     services_t);
 extern int ip_get_route_req_remote(int, ip_protocol_t, const struct sockaddr *,
Index: uspace/lib/net/include/netif_local.h
===================================================================
--- uspace/lib/net/include/netif_local.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/netif_local.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -111,5 +111,5 @@
  *			message implementation.
  */
-extern int netif_send_message(device_id_t device_id, packet_t packet,
+extern int netif_send_message(device_id_t device_id, packet_t *packet,
     services_t sender);
 
@@ -198,5 +198,5 @@
     char **);
 extern int netif_probe_req_local(int, device_id_t, int, int);
-extern int netif_send_msg_local(int, device_id_t, packet_t, services_t);
+extern int netif_send_msg_local(int, device_id_t, packet_t *, services_t);
 extern int netif_start_req_local(int, device_id_t);
 extern int netif_stop_req_local(int, device_id_t);
@@ -208,5 +208,5 @@
 extern void null_device_stats(device_stats_t *);
 extern void netif_pq_release(packet_id_t);
-extern packet_t netif_packet_get_1(size_t);
+extern packet_t *netif_packet_get_1(size_t);
 extern int netif_init_module(async_client_conn_t);
 
Index: uspace/lib/net/include/netif_remote.h
===================================================================
--- uspace/lib/net/include/netif_remote.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/netif_remote.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -44,5 +44,5 @@
     char **);
 extern int netif_probe_req_remote(int, device_id_t, int, int);
-extern int netif_send_msg_remote(int, device_id_t, packet_t, services_t);
+extern int netif_send_msg_remote(int, device_id_t, packet_t *, services_t);
 extern int netif_start_req_remote(int, device_id_t);
 extern int netif_stop_req_remote(int, device_id_t);
Index: uspace/lib/net/include/nil_local.h
===================================================================
--- uspace/lib/net/include/nil_local.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/nil_local.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -77,5 +77,5 @@
  * 			received function.
  */
-extern int nil_received_msg_local(int, device_id_t, packet_t, services_t);
+extern int nil_received_msg_local(int, device_id_t, packet_t *, services_t);
 
 /** Message processing function.
Index: uspace/lib/net/include/nil_remote.h
===================================================================
--- uspace/lib/net/include/nil_remote.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/nil_remote.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -39,5 +39,5 @@
 
 extern int nil_device_state_msg_remote(int, device_id_t, int);
-extern int nil_received_msg_remote(int, device_id_t, packet_t, services_t);
+extern int nil_received_msg_remote(int, device_id_t, packet_t *, services_t);
 
 #endif
Index: uspace/lib/net/include/packet_client.h
===================================================================
--- uspace/lib/net/include/packet_client.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/packet_client.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -99,14 +99,14 @@
 	packet_trim((packet), sizeof(prefix), sizeof(suffix))
 
-extern void *packet_prefix(packet_t, size_t);
-extern void *packet_suffix(packet_t, size_t);
-extern int packet_trim(packet_t, size_t, size_t);
-extern int packet_copy_data(packet_t, const void *, size_t);
-extern packet_id_t packet_get_id(const packet_t);
-extern size_t packet_get_data_length(const packet_t);
-extern void *packet_get_data(const packet_t);
-extern int packet_get_addr(const packet_t, uint8_t **, uint8_t **);
-extern int packet_set_addr(packet_t, const uint8_t *, const uint8_t *, size_t);
-extern packet_t packet_get_copy(int phone, packet_t packet);
+extern void *packet_prefix(packet_t *, size_t);
+extern void *packet_suffix(packet_t *, size_t);
+extern int packet_trim(packet_t *, size_t, size_t);
+extern int packet_copy_data(packet_t *, const void *, size_t);
+extern packet_id_t packet_get_id(const packet_t *);
+extern size_t packet_get_data_length(const packet_t *);
+extern void *packet_get_data(const packet_t *);
+extern int packet_get_addr(const packet_t *, uint8_t **, uint8_t **);
+extern int packet_set_addr(packet_t *, const uint8_t *, const uint8_t *, size_t);
+extern packet_t *packet_get_copy(int, packet_t *);
 
 /*@}*/
Index: uspace/lib/net/include/packet_remote.h
===================================================================
--- uspace/lib/net/include/packet_remote.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/packet_remote.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -37,7 +37,7 @@
 #include <sys/types.h>
 
-extern int packet_translate_remote(int, packet_t *, packet_id_t);
-extern packet_t packet_get_4_remote(int, size_t, size_t, size_t, size_t);
-extern packet_t packet_get_1_remote(int, size_t);
+extern int packet_translate_remote(int, packet_t **, packet_id_t);
+extern packet_t *packet_get_4_remote(int, size_t, size_t, size_t, size_t);
+extern packet_t *packet_get_1_remote(int, size_t);
 extern void pq_release_remote(int, packet_id_t);
 
Index: uspace/lib/net/include/socket_core.h
===================================================================
--- uspace/lib/net/include/socket_core.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/socket_core.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -117,5 +117,5 @@
 extern int socket_destroy(int, int, socket_cores_t *, socket_ports_t *,
     void (*)(socket_core_t *));
-extern int socket_reply_packets(packet_t, size_t *);
+extern int socket_reply_packets(packet_t *, size_t *);
 extern socket_core_t *socket_port_find(socket_ports_t *, int, const char *,
     size_t);
Index: uspace/lib/net/include/tl_common.h
===================================================================
--- uspace/lib/net/include/tl_common.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/tl_common.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -57,6 +57,6 @@
     size_t);
 extern int tl_set_address_port(struct sockaddr *, int, uint16_t);
-extern int tl_prepare_icmp_packet(int, int, packet_t, services_t);
-extern int tl_socket_read_packet_data(int, packet_t *, size_t,
+extern int tl_prepare_icmp_packet(int, int, packet_t *, services_t);
+extern int tl_socket_read_packet_data(int, packet_t **, size_t,
     const packet_dimension_t *, const struct sockaddr *, socklen_t);
 
Index: uspace/lib/net/include/tl_interface.h
===================================================================
--- uspace/lib/net/include/tl_interface.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/include/tl_interface.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -52,5 +52,5 @@
 /*@{*/
 
-extern int tl_received_msg(int, device_id_t, packet_t, services_t, services_t);
+extern int tl_received_msg(int, device_id_t, packet_t *, services_t, services_t);
 
 /*@}*/
Index: uspace/lib/net/netif/netif_local.c
===================================================================
--- uspace/lib/net/netif/netif_local.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/netif/netif_local.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -92,5 +92,5 @@
  */
 int netif_send_msg_local(int netif_phone, device_id_t device_id,
-    packet_t packet, services_t sender)
+    packet_t *packet, services_t sender)
 {
 	fibril_rwlock_write_lock(&netif_globals.lock);
@@ -307,5 +307,5 @@
  *
  */
-packet_t netif_packet_get_1(size_t content)
+packet_t *netif_packet_get_1(size_t content)
 {
 	return packet_get_1_remote(netif_globals.net_phone, content);
@@ -361,5 +361,5 @@
 	size_t length;
 	device_stats_t stats;
-	packet_t packet;
+	packet_t *packet;
 	measured_string_t address;
 	int rc;
Index: uspace/lib/net/netif/netif_remote.c
===================================================================
--- uspace/lib/net/netif/netif_remote.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/netif/netif_remote.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -93,5 +93,5 @@
  */
 int
-netif_send_msg_remote(int netif_phone, device_id_t device_id, packet_t packet,
+netif_send_msg_remote(int netif_phone, device_id_t device_id, packet_t *packet,
     services_t sender)
 {
Index: uspace/lib/net/nil/nil_remote.c
===================================================================
--- uspace/lib/net/nil/nil_remote.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/nil/nil_remote.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -74,5 +74,5 @@
  */
 int nil_received_msg_remote(int nil_phone, device_id_t device_id,
-    packet_t packet, services_t target)
+    packet_t *packet, services_t target)
 {
 	return generic_received_msg_remote(nil_phone, NET_NIL_RECEIVED,
Index: uspace/lib/net/tl/icmp_client.c
===================================================================
--- uspace/lib/net/tl/icmp_client.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/tl/icmp_client.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -61,5 +61,5 @@
  */
 int
-icmp_client_process_packet(packet_t packet, icmp_type_t *type,
+icmp_client_process_packet(packet_t *packet, icmp_type_t *type,
     icmp_code_t *code, icmp_param_t *pointer, icmp_param_t *mtu)
 {
@@ -94,5 +94,5 @@
  * @return		The ICMP header length in bytes.
  */
-size_t icmp_client_header_length(packet_t packet)
+size_t icmp_client_header_length(packet_t *packet)
 {
 	if (packet_get_data_length(packet) < sizeof(icmp_header_t))
Index: uspace/lib/net/tl/icmp_remote.c
===================================================================
--- uspace/lib/net/tl/icmp_remote.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/tl/icmp_remote.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -63,5 +63,5 @@
 int
 icmp_destination_unreachable_msg(int icmp_phone, icmp_code_t code,
-    icmp_param_t mtu, packet_t packet)
+    icmp_param_t mtu, packet_t *packet)
 {
 	async_msg_3(icmp_phone, NET_ICMP_DEST_UNREACH, (ipcarg_t) code,
@@ -82,5 +82,5 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-int icmp_source_quench_msg(int icmp_phone, packet_t packet)
+int icmp_source_quench_msg(int icmp_phone, packet_t *packet)
 {
 	async_msg_2(icmp_phone, NET_ICMP_SOURCE_QUENCH, 0,
@@ -102,5 +102,5 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-int icmp_time_exceeded_msg(int icmp_phone, icmp_code_t code, packet_t packet)
+int icmp_time_exceeded_msg(int icmp_phone, icmp_code_t code, packet_t *packet)
 {
 	async_msg_2(icmp_phone, NET_ICMP_TIME_EXCEEDED, (ipcarg_t) code,
@@ -124,5 +124,5 @@
  */
 int icmp_parameter_problem_msg(int icmp_phone, icmp_code_t code,
-    icmp_param_t pointer, packet_t packet)
+    icmp_param_t pointer, packet_t *packet)
 {
 	async_msg_3(icmp_phone, NET_ICMP_PARAMETERPROB, (ipcarg_t) code,
Index: uspace/lib/net/tl/socket_core.c
===================================================================
--- uspace/lib/net/tl/socket_core.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/tl/socket_core.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -522,7 +522,7 @@
  *			function.
  */
-int socket_reply_packets(packet_t packet, size_t *length)
-{
-	packet_t next_packet;
+int socket_reply_packets(packet_t *packet, size_t *length)
+{
+	packet_t *next_packet;
 	size_t fragments;
 	size_t *lengths;
Index: uspace/lib/net/tl/tl_common.c
===================================================================
--- uspace/lib/net/tl/tl_common.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/tl/tl_common.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -248,8 +248,8 @@
  */
 int
-tl_prepare_icmp_packet(int packet_phone, int icmp_phone, packet_t packet,
+tl_prepare_icmp_packet(int packet_phone, int icmp_phone, packet_t *packet,
     services_t error)
 {
-	packet_t next;
+	packet_t *next;
 	uint8_t *src;
 	int length;
@@ -287,5 +287,5 @@
  */
 int
-tl_socket_read_packet_data(int packet_phone, packet_t *packet, size_t prefix,
+tl_socket_read_packet_data(int packet_phone, packet_t **packet, size_t prefix,
     const packet_dimension_t *dimension, const struct sockaddr *addr,
     socklen_t addrlen)
Index: uspace/lib/net/tl/tl_interface.c
===================================================================
--- uspace/lib/net/tl/tl_interface.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/net/tl/tl_interface.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -58,5 +58,5 @@
  */
 int
-tl_received_msg(int tl_phone, device_id_t device_id, packet_t packet,
+tl_received_msg(int tl_phone, device_id_t device_id, packet_t *packet,
     services_t target, services_t error)
 {
Index: uspace/lib/packet/generic/packet_server.c
===================================================================
--- uspace/lib/packet/generic/packet_server.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/packet/generic/packet_server.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -69,5 +69,5 @@
 	fibril_mutex_t lock;
 	/** Free packet queues. */
-	packet_t free[FREE_QUEUES_COUNT];
+	packet_t *free[FREE_QUEUES_COUNT];
 	
 	/**
@@ -103,5 +103,5 @@
 };
 
-int packet_translate_local(int phone, packet_t *packet, packet_id_t packet_id)
+int packet_translate_local(int phone, packet_t **packet, packet_id_t packet_id)
 {
 	if (!packet)
@@ -122,10 +122,10 @@
  */
 static void
-packet_init(packet_t packet, size_t addr_len, size_t max_prefix,
+packet_init(packet_t *packet, size_t addr_len, size_t max_prefix,
     size_t max_content, size_t max_suffix)
 {
 	// clear the packet content
-	bzero(((void *) packet) + sizeof(struct packet),
-	    packet->length - sizeof(struct packet));
+	bzero(((void *) packet) + sizeof(packet_t),
+	    packet->length - sizeof(packet_t));
 	
 	// clear the packet header
@@ -135,5 +135,5 @@
 	packet->next = 0;
 	packet->addr_len = 0;
-	packet->src_addr = sizeof(struct packet);
+	packet->src_addr = sizeof(packet_t);
 	packet->dest_addr = packet->src_addr + addr_len;
 	packet->max_prefix = max_prefix;
@@ -157,13 +157,13 @@
  * @return		NULL if there is not enough memory left.
  */
-static packet_t
+static packet_t *
 packet_create(size_t length, size_t addr_len, size_t max_prefix,
     size_t max_content, size_t max_suffix)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
 	// already locked
-	packet = (packet_t) mmap(NULL, length, PROTO_READ | PROTO_WRITE,
+	packet = (packet_t *) mmap(NULL, length, PROTO_READ | PROTO_WRITE,
 	    MAP_SHARED | MAP_ANONYMOUS, 0, 0);
 	if (packet == MAP_FAILED)
@@ -198,14 +198,14 @@
  * @return		NULL if there is not enough memory left.
  */
-static packet_t
+static packet_t *
 packet_get_local(size_t addr_len, size_t max_prefix, size_t max_content,
     size_t max_suffix)
 {
-	size_t length = ALIGN_UP(sizeof(struct packet) + 2 * addr_len +
+	size_t length = ALIGN_UP(sizeof(packet_t) + 2 * addr_len +
 	    max_prefix + max_content + max_suffix, PAGE_SIZE);
 	
 	fibril_mutex_lock(&ps_globals.lock);
 	
-	packet_t packet;
+	packet_t *packet;
 	unsigned int index;
 	
@@ -241,5 +241,5 @@
 }
 
-packet_t packet_get_4_local(int phone, size_t max_content, size_t addr_len,
+packet_t *packet_get_4_local(int phone, size_t max_content, size_t addr_len,
     size_t max_prefix, size_t max_suffix)
 {
@@ -247,5 +247,5 @@
 }
 
-packet_t packet_get_1_local(int phone, size_t content)
+packet_t *packet_get_1_local(int phone, size_t content)
 {
 	return packet_get_local(DEFAULT_ADDR_LEN, DEFAULT_PREFIX, content,
@@ -260,5 +260,5 @@
  *
  */
-static void packet_release(packet_t packet)
+static void packet_release(packet_t *packet)
 {
 	int index;
@@ -283,5 +283,5 @@
 static int packet_release_wrapper(packet_id_t packet_id)
 {
-	packet_t packet;
+	packet_t *packet;
 
 	packet = pm_find(packet_id);
@@ -310,5 +310,5 @@
  *			async_share_in_finalize() function.
  */
-static int packet_reply(const packet_t packet)
+static int packet_reply(packet_t *packet)
 {
 	ipc_callid_t callid;
@@ -351,5 +351,5 @@
     int *answer_count)
 {
-	packet_t packet;
+	packet_t *packet;
 
 	*answer_count = 0;
Index: uspace/lib/packet/include/packet_local.h
===================================================================
--- uspace/lib/packet/include/packet_local.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/lib/packet/include/packet_local.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -43,7 +43,7 @@
 /*@{*/
 
-extern int packet_translate_local(int, packet_t *, packet_id_t);
-extern packet_t packet_get_4_local(int, size_t, size_t, size_t, size_t);
-extern packet_t packet_get_1_local(int, size_t);
+extern int packet_translate_local(int, packet_t **, packet_id_t);
+extern packet_t *packet_get_4_local(int, size_t, size_t, size_t, size_t);
+extern packet_t *packet_get_1_local(int, size_t);
 extern void pq_release_local(int, packet_id_t);
 
Index: uspace/srv/hw/netif/dp8390/dp8390.c
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/hw/netif/dp8390/dp8390.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -65,5 +65,5 @@
  *  @return EINVAL 
  */
-int queue_packet(dpeth_t * dep, packet_t packet);
+int queue_packet(dpeth_t * dep, packet_t *packet);
 
 /** Reads a memory block byte by byte.
@@ -336,6 +336,6 @@
 }
 
-int queue_packet(dpeth_t * dep, packet_t packet){
-	packet_t tmp;
+int queue_packet(dpeth_t * dep, packet_t *packet){
+	packet_t *tmp;
 
 	if(dep->packet_count >= MAX_PACKETS){
@@ -361,5 +361,5 @@
  *			based on	do_vwrite				     *
  *===========================================================================*/
-int do_pwrite(dpeth_t * dep, packet_t packet, int from_int)
+int do_pwrite(dpeth_t * dep, packet_t *packet, int from_int)
 {
 //	int port, count, size;
@@ -910,5 +910,5 @@
 dpeth_t *dep;
 {
-	packet_t packet;
+	packet_t *packet;
 
 //	if (!(dep->de_flags &DEF_SEND_AVAIL))
@@ -1003,5 +1003,5 @@
 {
 	int last, count;
-	packet_t packet;
+	packet_t *packet;
 
 //	if (!(dep->de_flags &DEF_READING))
Index: uspace/srv/hw/netif/dp8390/dp8390.h
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/hw/netif/dp8390/dp8390.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -313,5 +313,5 @@
 	/** Outgoing packets queue.
 	 */
-	packet_t packet_queue;
+	packet_t *packet_queue;
 	/** Outgoing packets count.
 	 */
@@ -320,5 +320,5 @@
 	/** Received packets queue.
 	 */
-	packet_t received_queue;
+	packet_t *received_queue;
 	/** Received packets count.
 	 */
Index: uspace/srv/hw/netif/dp8390/dp8390_drv.h
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390_drv.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/hw/netif/dp8390/dp8390_drv.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -72,5 +72,5 @@
  *  @returns 
  */
-int do_pwrite(dpeth_t * dep, packet_t packet, int from_int);
+int do_pwrite(dpeth_t * dep, packet_t *packet, int from_int);
 
 /** Prints out network interface information.
Index: uspace/srv/hw/netif/dp8390/dp8390_module.c
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390_module.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/hw/netif/dp8390/dp8390_module.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -103,5 +103,5 @@
 	netif_device_t * device;
 	dpeth_t * dep;
-	packet_t received;
+	packet_t *received;
 	device_id_t device_id;
 	int phone;
@@ -247,8 +247,8 @@
 }
 
-int netif_send_message(device_id_t device_id, packet_t packet, services_t sender){
-	netif_device_t * device;
-	dpeth_t * dep;
-	packet_t next;
+int netif_send_message(device_id_t device_id, packet_t *packet, services_t sender){
+	netif_device_t * device;
+	dpeth_t * dep;
+	packet_t *next;
 	int rc;
 
Index: uspace/srv/net/il/arp/arp.c
===================================================================
--- uspace/srv/net/il/arp/arp.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/il/arp/arp.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -415,5 +415,5 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-static int arp_receive_message(device_id_t device_id, packet_t packet)
+static int arp_receive_message(device_id_t device_id, packet_t *packet)
 {
 	size_t length;
@@ -531,5 +531,5 @@
 	measured_string_t *addr;
 	size_t length;
-	packet_t packet;
+	packet_t *packet;
 	arp_header_t *header;
 
@@ -615,6 +615,6 @@
 	measured_string_t *translation;
 	char *data;
-	packet_t packet;
-	packet_t next;
+	packet_t *packet;
+	packet_t *next;
 	int rc;
 	
Index: uspace/srv/net/il/ip/ip.c
===================================================================
--- uspace/srv/net/il/ip/ip.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/il/ip/ip.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -129,5 +129,5 @@
  * @return		The result parameter.
  */
-static int ip_release_and_return(packet_t packet, int result)
+static int ip_release_and_return(packet_t *packet, int result)
 {
 	pq_release_remote(ip_globals.net_phone, packet_get_id(packet));
@@ -170,7 +170,7 @@
  * @return		Other error codes as defined for the packet_set_addr().
  */
-static int ip_prepare_icmp(packet_t packet, ip_header_t *header)
-{
-	packet_t next;
+static int ip_prepare_icmp(packet_t *packet, ip_header_t *header)
+{
+	packet_t *next;
 	struct sockaddr *dest;
 	struct sockaddr_in dest_in;
@@ -233,5 +233,5 @@
  */
 static int
-ip_prepare_icmp_and_get_phone(services_t error, packet_t packet,
+ip_prepare_icmp_and_get_phone(services_t error, packet_t *packet,
     ip_header_t *header)
 {
@@ -543,5 +543,5 @@
  */
 static ip_header_t *
-ip_create_middle_header(packet_t packet, ip_header_t *last)
+ip_create_middle_header(packet_t *packet, ip_header_t *last)
 {
 	ip_header_t *middle;
@@ -622,5 +622,5 @@
  */
 static int
-ip_prepare_packet(in_addr_t *source, in_addr_t dest, packet_t packet,
+ip_prepare_packet(in_addr_t *source, in_addr_t dest, packet_t *packet,
     measured_string_t *destination)
 {
@@ -629,5 +629,5 @@
 	ip_header_t *last_header;
 	ip_header_t *middle_header;
-	packet_t next;
+	packet_t *next;
 	int rc;
 
@@ -754,5 +754,5 @@
  */
 static int
-ip_fragment_packet_data(packet_t packet, packet_t new_packet,
+ip_fragment_packet_data(packet_t *packet, packet_t *new_packet,
     ip_header_t *header, ip_header_t *new_header, size_t length,
     const struct sockaddr *src, const struct sockaddr *dest, socklen_t addrlen)
@@ -816,8 +816,8 @@
  */
 static int
-ip_fragment_packet(packet_t packet, size_t length, size_t prefix, size_t suffix,
+ip_fragment_packet(packet_t *packet, size_t length, size_t prefix, size_t suffix,
     socklen_t addr_len)
 {
-	packet_t new_packet;
+	packet_t *new_packet;
 	ip_header_t *header;
 	ip_header_t *middle_header;
@@ -922,11 +922,11 @@
  * @return		NULL if there are no packets left.
  */
-static packet_t
-ip_split_packet(packet_t packet, size_t prefix, size_t content, size_t suffix,
+static packet_t *
+ip_split_packet(packet_t *packet, size_t prefix, size_t content, size_t suffix,
     socklen_t addr_len, services_t error)
 {
 	size_t length;
-	packet_t next;
-	packet_t new_packet;
+	packet_t *next;
+	packet_t *new_packet;
 	int result;
 	int phone;
@@ -993,5 +993,5 @@
  */
 static int
-ip_send_route(packet_t packet, ip_netif_t *netif, ip_route_t *route,
+ip_send_route(packet_t *packet, ip_netif_t *netif, ip_route_t *route,
     in_addr_t *src, in_addr_t dest, services_t error)
 {
@@ -1247,5 +1247,5 @@
 
 static int
-ip_send_msg_local(int il_phone, device_id_t device_id, packet_t packet,
+ip_send_msg_local(int il_phone, device_id_t device_id, packet_t *packet,
     services_t sender, services_t error)
 {
@@ -1451,5 +1451,5 @@
  */
 static int
-ip_deliver_local(device_id_t device_id, packet_t packet, ip_header_t *header,
+ip_deliver_local(device_id_t device_id, packet_t *packet, ip_header_t *header,
     services_t error)
 {
@@ -1553,5 +1553,5 @@
  */
 static int
-ip_process_packet(device_id_t device_id, packet_t packet)
+ip_process_packet(device_id_t device_id, packet_t *packet)
 {
 	ip_header_t *header;
@@ -1715,5 +1715,5 @@
 static int
 ip_received_error_msg_local(int ip_phone, device_id_t device_id,
-    packet_t packet, services_t target, services_t error)
+    packet_t *packet, services_t target, services_t error)
 {
 	uint8_t *data;
@@ -1859,7 +1859,7 @@
  * @return		ENOMEM if there is not enough memory left.
  */
-static int ip_receive_message(device_id_t device_id, packet_t packet)
-{
-	packet_t next;
+static int ip_receive_message(device_id_t device_id, packet_t *packet)
+{
+	packet_t *next;
 
 	do {
@@ -1890,5 +1890,5 @@
     int *answer_count)
 {
-	packet_t packet;
+	packet_t *packet;
 	struct sockaddr *addr;
 	size_t addrlen;
Index: uspace/srv/net/netif/lo/lo.c
===================================================================
--- uspace/srv/net/netif/lo/lo.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/netif/lo/lo.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -185,9 +185,9 @@
 }
 
-int netif_send_message(device_id_t device_id, packet_t packet, services_t sender)
+int netif_send_message(device_id_t device_id, packet_t *packet, services_t sender)
 {
 	netif_device_t *device;
 	size_t length;
-	packet_t next;
+	packet_t *next;
 	int phone;
 	int rc;
Index: uspace/srv/net/nil/eth/eth.c
===================================================================
--- uspace/srv/net/nil/eth/eth.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/nil/eth/eth.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -234,5 +234,5 @@
 static void eth_receiver(ipc_callid_t iid, ipc_call_t *icall)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
@@ -429,5 +429,5 @@
  * @return		NULL if the packet address length is not big enough.
  */
-static eth_proto_t *eth_process_packet(int flags, packet_t packet)
+static eth_proto_t *eth_process_packet(int flags, packet_t *packet)
 {
 	eth_header_snap_t *header;
@@ -509,8 +509,8 @@
 
 int nil_received_msg_local(int nil_phone, device_id_t device_id,
-    packet_t packet, services_t target)
+    packet_t *packet, services_t target)
 {
 	eth_proto_t *proto;
-	packet_t next;
+	packet_t *next;
 	eth_device_t *device;
 	int flags;
@@ -680,5 +680,5 @@
  */
 static int
-eth_prepare_packet(int flags, packet_t packet, uint8_t *src_addr, int ethertype,
+eth_prepare_packet(int flags, packet_t *packet, uint8_t *src_addr, int ethertype,
     size_t mtu)
 {
@@ -787,10 +787,10 @@
  * @return		EINVAL if the service parameter is not known.
  */
-static int eth_send_message(device_id_t device_id, packet_t packet,
+static int eth_send_message(device_id_t device_id, packet_t *packet,
     services_t sender)
 {
 	eth_device_t *device;
-	packet_t next;
-	packet_t tmp;
+	packet_t *next;
+	packet_t *tmp;
 	int ethertype;
 	int rc;
@@ -841,5 +841,5 @@
 {
 	measured_string_t *address;
-	packet_t packet;
+	packet_t *packet;
 	size_t addrlen;
 	size_t prefix;
Index: uspace/srv/net/nil/nildummy/nildummy.c
===================================================================
--- uspace/srv/net/nil/nildummy/nildummy.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/nil/nildummy/nildummy.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -106,5 +106,5 @@
 static void nildummy_receiver(ipc_callid_t iid, ipc_call_t *icall)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
@@ -304,7 +304,7 @@
 
 int nil_received_msg_local(int nil_phone, device_id_t device_id,
-    packet_t packet, services_t target)
-{
-	packet_t next;
+    packet_t *packet, services_t target)
+{
+	packet_t *next;
 
 	fibril_rwlock_read_lock(&nildummy_globals.protos_lock);
@@ -354,5 +354,5 @@
  * @return		EINVAL if the service parameter is not known.
  */
-static int nildummy_send_message(device_id_t device_id, packet_t packet,
+static int nildummy_send_message(device_id_t device_id, packet_t *packet,
     services_t sender)
 {
@@ -378,5 +378,5 @@
 {
 	measured_string_t *address;
-	packet_t packet;
+	packet_t *packet;
 	size_t addrlen;
 	size_t prefix;
Index: uspace/srv/net/tl/icmp/icmp.c
===================================================================
--- uspace/srv/net/tl/icmp/icmp.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/tl/icmp/icmp.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -130,5 +130,5 @@
  * @return		The result parameter.
  */
-static int icmp_release_and_return(packet_t packet, int result)
+static int icmp_release_and_return(packet_t *packet, int result)
 {
 	pq_release_remote(icmp_globals.net_phone, packet_get_id(packet));
@@ -155,5 +155,5 @@
  * @return		EPERM if the error message is not allowed.
  */
-static int icmp_send_packet(icmp_type_t type, icmp_code_t code, packet_t packet,
+static int icmp_send_packet(icmp_type_t type, icmp_code_t code, packet_t *packet,
     icmp_header_t *header, services_t error, ip_ttl_t ttl, ip_tos_t tos,
     int dont_fragment)
@@ -189,5 +189,5 @@
  * @return NULL on errors.
  */
-static icmp_header_t *icmp_prepare_packet(packet_t packet)
+static icmp_header_t *icmp_prepare_packet(packet_t *packet)
 {
 	icmp_header_t *header;
@@ -248,5 +248,5 @@
 {
 	icmp_header_t *header;
-	packet_t packet;
+	packet_t *packet;
 	size_t length;
 	uint8_t *data;
@@ -340,5 +340,5 @@
 
 static int icmp_destination_unreachable_msg_local(int icmp_phone,
-    icmp_code_t code, icmp_param_t mtu, packet_t packet)
+    icmp_code_t code, icmp_param_t mtu, packet_t *packet)
 {
 	icmp_header_t *header;
@@ -355,5 +355,5 @@
 }
 
-static int icmp_source_quench_msg_local(int icmp_phone, packet_t packet)
+static int icmp_source_quench_msg_local(int icmp_phone, packet_t *packet)
 {
 	icmp_header_t *header;
@@ -368,5 +368,5 @@
 
 static int icmp_time_exceeded_msg_local(int icmp_phone, icmp_code_t code,
-    packet_t packet)
+    packet_t *packet)
 {
 	icmp_header_t *header;
@@ -381,5 +381,5 @@
 
 static int icmp_parameter_problem_msg_local(int icmp_phone, icmp_code_t code,
-    icmp_param_t pointer, packet_t packet)
+    icmp_param_t pointer, packet_t *packet)
 {
 	icmp_header_t *header;
@@ -479,5 +479,5 @@
  * @param[in] code	The received reply message code.
  */
-static void  icmp_process_echo_reply(packet_t packet, icmp_header_t *header,
+static void  icmp_process_echo_reply(packet_t *packet, icmp_header_t *header,
     icmp_type_t type, icmp_code_t code)
 {
@@ -518,5 +518,5 @@
  *			ip_client_process_packet() function.
  */
-static int icmp_process_packet(packet_t packet, services_t error)
+static int icmp_process_packet(packet_t *packet, services_t error)
 {
 	size_t length;
@@ -658,5 +658,5 @@
  *			icmp_process_packet() function.
  */
-static int icmp_received_msg_local(device_id_t device_id, packet_t packet,
+static int icmp_received_msg_local(device_id_t device_id, packet_t *packet,
     services_t receiver, services_t error)
 {
@@ -690,5 +690,5 @@
 static int icmp_process_message(ipc_call_t *call)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
@@ -896,5 +896,5 @@
     ipc_call_t *answer, int *answer_count)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
Index: uspace/srv/net/tl/tcp/tcp.c
===================================================================
--- uspace/srv/net/tl/tcp/tcp.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/tl/tcp/tcp.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -160,5 +160,5 @@
 };
 
-static int tcp_release_and_return(packet_t, int);
+static int tcp_release_and_return(packet_t *, int);
 static void tcp_prepare_operation_header(socket_core_t *, tcp_socket_data_t *,
     tcp_header_t *, int synchronize, int);
@@ -171,23 +171,23 @@
 static int tcp_release_after_timeout(void *);
 
-static int tcp_process_packet(device_id_t, packet_t, services_t);
+static int tcp_process_packet(device_id_t, packet_t *, services_t);
 static int tcp_connect_core(socket_core_t *, socket_cores_t *,
     struct sockaddr *, socklen_t);
 static int tcp_queue_prepare_packet(socket_core_t *, tcp_socket_data_t *,
-    packet_t, size_t);
-static int tcp_queue_packet(socket_core_t *, tcp_socket_data_t *, packet_t,
+    packet_t *, size_t);
+static int tcp_queue_packet(socket_core_t *, tcp_socket_data_t *, packet_t *,
     size_t);
-static packet_t tcp_get_packets_to_send(socket_core_t *, tcp_socket_data_t *);
-static void tcp_send_packets(device_id_t, packet_t);
+static packet_t *tcp_get_packets_to_send(socket_core_t *, tcp_socket_data_t *);
+static void tcp_send_packets(device_id_t, packet_t *);
 
 static void tcp_process_acknowledgement(socket_core_t *, tcp_socket_data_t *,
     tcp_header_t *);
-static packet_t tcp_send_prepare_packet(socket_core_t *, tcp_socket_data_t *,
-    packet_t, size_t, size_t);
-static packet_t tcp_prepare_copy(socket_core_t *, tcp_socket_data_t *, packet_t,
-    size_t, size_t);
+static packet_t *tcp_send_prepare_packet(socket_core_t *, tcp_socket_data_t *,
+    packet_t *, size_t, size_t);
+static packet_t *tcp_prepare_copy(socket_core_t *, tcp_socket_data_t *,
+    packet_t *, size_t, size_t);
 /* static */ void tcp_retransmit_packet(socket_core_t *, tcp_socket_data_t *,
     size_t);
-static int tcp_create_notification_packet(packet_t *, socket_core_t *,
+static int tcp_create_notification_packet(packet_t **, socket_core_t *,
     tcp_socket_data_t *, int, int);
 static void tcp_refresh_socket_data(tcp_socket_data_t *);
@@ -196,15 +196,15 @@
 
 static int tcp_process_listen(socket_core_t *, tcp_socket_data_t *,
-    tcp_header_t *, packet_t, struct sockaddr *, struct sockaddr *, size_t);
+    tcp_header_t *, packet_t *, struct sockaddr *, struct sockaddr *, size_t);
 static int tcp_process_syn_sent(socket_core_t *, tcp_socket_data_t *,
-    tcp_header_t *, packet_t);
+    tcp_header_t *, packet_t *);
 static int tcp_process_syn_received(socket_core_t *, tcp_socket_data_t *,
-    tcp_header_t *, packet_t);
+    tcp_header_t *, packet_t *);
 static int tcp_process_established(socket_core_t *, tcp_socket_data_t *,
-    tcp_header_t *, packet_t, int, size_t);
+    tcp_header_t *, packet_t *, int, size_t);
 static int tcp_queue_received_packet(socket_core_t *, tcp_socket_data_t *,
-    packet_t, int, size_t);
-
-static int tcp_received_msg(device_id_t, packet_t, services_t, services_t);
+    packet_t *, int, size_t);
+
+static int tcp_received_msg(device_id_t, packet_t *, services_t, services_t);
 static int tcp_process_client_messages(ipc_callid_t, ipc_call_t);
 
@@ -262,5 +262,5 @@
 }
 
-int tcp_received_msg(device_id_t device_id, packet_t packet,
+int tcp_received_msg(device_id_t device_id, packet_t *packet,
     services_t receiver, services_t error)
 {
@@ -280,5 +280,5 @@
 }
 
-int tcp_process_packet(device_id_t device_id, packet_t packet, services_t error)
+int tcp_process_packet(device_id_t device_id, packet_t *packet, services_t error)
 {
 	size_t length;
@@ -288,5 +288,5 @@
 	socket_core_t *socket;
 	tcp_socket_data_t *socket_data;
-	packet_t next_packet;
+	packet_t *next_packet;
 	size_t total_length;
 	uint32_t checksum;
@@ -493,9 +493,9 @@
 
 int tcp_process_established(socket_core_t *socket, tcp_socket_data_t *
-    socket_data, tcp_header_t *header, packet_t packet, int fragments,
+    socket_data, tcp_header_t *header, packet_t *packet, int fragments,
     size_t total_length)
 {
-	packet_t next_packet;
-	packet_t tmp_packet;
+	packet_t *next_packet;
+	packet_t *tmp_packet;
 	uint32_t old_incoming;
 	size_t order;
@@ -801,5 +801,5 @@
 
 int tcp_queue_received_packet(socket_core_t *socket,
-    tcp_socket_data_t *socket_data, packet_t packet, int fragments,
+    tcp_socket_data_t *socket_data, packet_t *packet, int fragments,
     size_t total_length)
 {
@@ -838,7 +838,7 @@
 
 int tcp_process_syn_sent(socket_core_t *socket, tcp_socket_data_t *
-    socket_data, tcp_header_t *header, packet_t packet)
-{
-	packet_t next_packet;
+    socket_data, tcp_header_t *header, packet_t *packet)
+{
+	packet_t *next_packet;
 	int rc;
 
@@ -897,8 +897,8 @@
 int tcp_process_listen(socket_core_t *listening_socket,
     tcp_socket_data_t *listening_socket_data, tcp_header_t *header,
-    packet_t packet, struct sockaddr *src, struct sockaddr *dest,
+    packet_t *packet, struct sockaddr *src, struct sockaddr *dest,
     size_t addrlen)
 {
-	packet_t next_packet;
+	packet_t *next_packet;
 	socket_core_t *socket;
 	tcp_socket_data_t *socket_data;
@@ -1056,5 +1056,5 @@
 
 int tcp_process_syn_received(socket_core_t *socket,
-    tcp_socket_data_t *socket_data, tcp_header_t *header, packet_t packet)
+    tcp_socket_data_t *socket_data, tcp_header_t *header, packet_t *packet)
 {
 	socket_core_t *listening_socket;
@@ -1127,7 +1127,7 @@
 	size_t number;
 	size_t length;
-	packet_t packet;
-	packet_t next;
-	packet_t acknowledged = NULL;
+	packet_t *packet;
+	packet_t *next;
+	packet_t *acknowledged = NULL;
 	uint32_t old;
 
@@ -1232,5 +1232,5 @@
     ipc_call_t *answer, int *answer_count)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
@@ -1654,6 +1654,6 @@
     socket_data, size_t sequence_number)
 {
-	packet_t packet;
-	packet_t copy;
+	packet_t *packet;
+	packet_t *copy;
 	size_t data_length;
 
@@ -1736,5 +1736,5 @@
 {
 	tcp_socket_data_t *socket_data;
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
@@ -1824,5 +1824,5 @@
 
 int tcp_queue_prepare_packet(socket_core_t *socket,
-    tcp_socket_data_t *socket_data, packet_t packet, size_t data_length)
+    tcp_socket_data_t *socket_data, packet_t *packet, size_t data_length)
 {
 	tcp_header_t *header;
@@ -1855,5 +1855,5 @@
 
 int tcp_queue_packet(socket_core_t *socket, tcp_socket_data_t *socket_data,
-    packet_t packet, size_t data_length)
+    packet_t *packet, size_t data_length)
 {
 	int rc;
@@ -1876,11 +1876,11 @@
 }
 
-packet_t tcp_get_packets_to_send(socket_core_t *socket, tcp_socket_data_t *
+packet_t *tcp_get_packets_to_send(socket_core_t *socket, tcp_socket_data_t *
     socket_data)
 {
-	packet_t packet;
-	packet_t copy;
-	packet_t sending = NULL;
-	packet_t previous = NULL;
+	packet_t *packet;
+	packet_t *copy;
+	packet_t *sending = NULL;
+	packet_t *previous = NULL;
 	size_t data_length;
 	int rc;
@@ -1936,6 +1936,6 @@
 }
 
-packet_t tcp_send_prepare_packet(socket_core_t *socket, tcp_socket_data_t *
-    socket_data, packet_t packet, size_t data_length, size_t sequence_number)
+packet_t *tcp_send_prepare_packet(socket_core_t *socket, tcp_socket_data_t *
+    socket_data, packet_t *packet, size_t data_length, size_t sequence_number)
 {
 	tcp_header_t *header;
@@ -1997,8 +1997,8 @@
 }
 
-packet_t tcp_prepare_copy(socket_core_t *socket, tcp_socket_data_t *
-    socket_data, packet_t packet, size_t data_length, size_t sequence_number)
-{
-	packet_t copy;
+packet_t *tcp_prepare_copy(socket_core_t *socket, tcp_socket_data_t *
+    socket_data, packet_t *packet, size_t data_length, size_t sequence_number)
+{
+	packet_t *copy;
 
 	assert(socket);
@@ -2015,7 +2015,7 @@
 }
 
-void tcp_send_packets(device_id_t device_id, packet_t packet)
-{
-	packet_t next;
+void tcp_send_packets(device_id_t device_id, packet_t *packet)
+{
+	packet_t *next;
 
 	while (packet) {
@@ -2097,5 +2097,5 @@
 	tcp_socket_data_t *socket_data;
 	int packet_id;
-	packet_t packet;
+	packet_t *packet;
 	size_t length;
 	int rc;
@@ -2155,5 +2155,5 @@
 	tcp_socket_data_t *socket_data;
 	packet_dimension_t *packet_dimension;
-	packet_t packet;
+	packet_t *packet;
 	size_t total_length;
 	tcp_header_t *header;
@@ -2229,5 +2229,5 @@
 	socket_core_t *socket;
 	tcp_socket_data_t *socket_data;
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
@@ -2293,5 +2293,5 @@
 }
 
-int tcp_create_notification_packet(packet_t *packet, socket_core_t *socket,
+int tcp_create_notification_packet(packet_t **packet, socket_core_t *socket,
     tcp_socket_data_t *socket_data, int synchronize, int finalize)
 {
@@ -2442,5 +2442,5 @@
  * @return		The result parameter.
  */
-int tcp_release_and_return(packet_t packet, int result)
+int tcp_release_and_return(packet_t *packet, int result)
 {
 	pq_release_remote(tcp_globals.net_phone, packet_get_id(packet));
Index: uspace/srv/net/tl/tcp/tcp.h
===================================================================
--- uspace/srv/net/tl/tcp/tcp.h	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/tl/tcp/tcp.h	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -239,5 +239,5 @@
 	 * Packets metric is set as their data length.
 	 */
-	packet_t incoming;
+	packet_t *incoming;
 	
 	/** Outgoing packet queue.
@@ -249,5 +249,5 @@
 	 * Packets metric is set as their data length.
 	 */
-	packet_t outgoing;
+	packet_t *outgoing;
 	
 	/** IP pseudo header. */
Index: uspace/srv/net/tl/udp/udp.c
===================================================================
--- uspace/srv/net/tl/udp/udp.c	(revision fdbc3ff84ed86b1d20bebbe6c6235ecc5954f606)
+++ uspace/srv/net/tl/udp/udp.c	(revision 46d4d9f449e7933280b1877c70448602ec0ab0ae)
@@ -190,5 +190,5 @@
  * @return		The result parameter.
  */
-static int udp_release_and_return(packet_t packet, int result)
+static int udp_release_and_return(packet_t *packet, int result)
 {
 	pq_release_remote(udp_globals.net_phone, packet_get_id(packet));
@@ -217,5 +217,5 @@
  *			ip_client_process_packet() function.
  */
-static int udp_process_packet(device_id_t device_id, packet_t packet,
+static int udp_process_packet(device_id_t device_id, packet_t *packet,
     services_t error)
 {
@@ -225,9 +225,9 @@
 	udp_header_t *header;
 	socket_core_t *socket;
-	packet_t next_packet;
+	packet_t *next_packet;
 	size_t total_length;
 	uint32_t checksum;
 	int fragments;
-	packet_t tmp_packet;
+	packet_t *tmp_packet;
 	icmp_type_t type;
 	icmp_code_t code;
@@ -413,5 +413,5 @@
  *			udp_process_packet() function.
  */
-static int udp_received_msg(device_id_t device_id, packet_t packet,
+static int udp_received_msg(device_id_t device_id, packet_t *packet,
     services_t receiver, services_t error)
 {
@@ -458,6 +458,6 @@
 {
 	socket_core_t *socket;
-	packet_t packet;
-	packet_t next_packet;
+	packet_t *packet;
+	packet_t *next_packet;
 	udp_header_t *header;
 	int index;
@@ -614,5 +614,5 @@
 	socket_core_t *socket;
 	int packet_id;
-	packet_t packet;
+	packet_t *packet;
 	udp_header_t *header;
 	struct sockaddr *addr;
@@ -861,5 +861,5 @@
     ipc_call_t *answer, int *answer_count)
 {
-	packet_t packet;
+	packet_t *packet;
 	int rc;
 
