Index: uspace/drv/nic/e1k/e1k.c
===================================================================
--- uspace/drv/nic/e1k/e1k.c	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/drv/nic/e1k/e1k.c	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -2309,5 +2309,4 @@
 static void e1000_send_frame(nic_t *nic, void *data, size_t size)
 {
-	printf("e1000_send_frame()\n");
 	assert(nic);
 	
Index: uspace/srv/inet/addrobj.c
===================================================================
--- uspace/srv/inet/addrobj.c	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/srv/inet/addrobj.c	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -125,5 +125,5 @@
 /** Send datagram to directly reachable destination */
 int inet_addrobj_send_dgram(inet_addrobj_t *addr, inet_dgram_t *dgram,
-    uint8_t ttl, int df)
+    uint8_t proto, uint8_t ttl, int df)
 {
 	inet_addr_t lsrc_addr;
@@ -134,5 +134,5 @@
 
 	return inet_link_send_dgram(addr->ilink, &lsrc_addr, ldest_addr, dgram,
-	    ttl, df);
+	    proto, ttl, df);
 }
 
Index: uspace/srv/inet/addrobj.h
===================================================================
--- uspace/srv/inet/addrobj.h	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/srv/inet/addrobj.h	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -53,5 +53,5 @@
 extern inet_addrobj_t *inet_addrobj_find(inet_addr_t *, inet_addrobj_find_t);
 extern int inet_addrobj_send_dgram(inet_addrobj_t *, inet_dgram_t *,
-    uint8_t ttl, int df);
+    uint8_t, uint8_t, int);
 
 #endif
Index: uspace/srv/inet/inet.c
===================================================================
--- uspace/srv/inet/inet.c	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/srv/inet/inet.c	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -101,5 +101,6 @@
 }
 
-static int inet_route_packet(inet_dgram_t *dgram, uint8_t ttl, int df)
+static int inet_route_packet(inet_dgram_t *dgram, uint8_t proto, uint8_t ttl,
+    int df)
 {
 	inet_addrobj_t *addr;
@@ -108,5 +109,5 @@
 	if (addr != NULL) {
 		/* Destination is directly accessible */
-		return inet_addrobj_send_dgram(addr, dgram, ttl, df);
+		return inet_addrobj_send_dgram(addr, dgram, proto, ttl, df);
 	}
 
@@ -117,7 +118,7 @@
 
 static int inet_send(inet_client_t *client, inet_dgram_t *dgram,
-    uint8_t ttl, int df)
-{
-	return inet_route_packet(dgram, ttl, df);
+    uint8_t proto, uint8_t ttl, int df)
+{
+	return inet_route_packet(dgram, proto, ttl, df);
 }
 
@@ -177,5 +178,5 @@
 	}
 
-	rc = inet_send(client, &dgram, ttl, df);
+	rc = inet_send(client, &dgram, client->protocol, ttl, df);
 
 	free(dgram.data);
Index: uspace/srv/inet/inet_link.c
===================================================================
--- uspace/srv/inet/inet_link.c	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/srv/inet/inet_link.c	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -217,5 +217,5 @@
 /** Send datagram over Internet link */
 int inet_link_send_dgram(inet_link_t *ilink, inet_addr_t *lsrc,
-    inet_addr_t *ldest, inet_dgram_t *dgram, uint8_t ttl, int df)
+    inet_addr_t *ldest, inet_dgram_t *dgram, uint8_t proto, uint8_t ttl, int df)
 {
 	iplink_sdu_t sdu;
@@ -227,5 +227,5 @@
 	packet.dest = dgram->dest;
 	packet.tos = dgram->tos;
-	packet.proto = 42;
+	packet.proto = proto;
 	packet.ttl = ttl;
 	packet.df = df;
Index: uspace/srv/inet/inet_link.h
===================================================================
--- uspace/srv/inet/inet_link.h	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/srv/inet/inet_link.h	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -42,5 +42,5 @@
 extern int inet_link_discovery_start(void);
 extern int inet_link_send_dgram(inet_link_t *, inet_addr_t *,
-    inet_addr_t *, inet_dgram_t *, uint8_t, int);
+    inet_addr_t *, inet_dgram_t *, uint8_t, uint8_t, int);
 
 #endif
Index: uspace/srv/inet/pdu.c
===================================================================
--- uspace/srv/inet/pdu.c	(revision fe4310f77c447952f42bec65f1de34a752e23a1c)
+++ uspace/srv/inet/pdu.c	(revision 2ff150e21c3194a4c528808fab068bd99797fded)
@@ -73,5 +73,5 @@
 	    BIT_V(uint16_t, FF_FLAG_DF) : 0);
 	hdr->ttl = packet->ttl;
-	hdr->proto = 0;
+	hdr->proto = packet->proto;
 	hdr->chksum = 0;
 	hdr->src_addr = host2uint32_t_be(packet->src.ipv4);
@@ -125,5 +125,4 @@
 	/* XXX Flags */
 	/* XXX Fragment offset */
-	/* XXX Protocol */
 	/* XXX Checksum */
 
@@ -131,4 +130,5 @@
 	packet->dest.ipv4 = uint32_t_be2host(hdr->dest_addr);
 	packet->tos = hdr->tos;
+	packet->proto = hdr->proto;
 	packet->ttl = hdr->ttl;
 	packet->df = (uint16_t_be2host(hdr->tos) & BIT_V(uint16_t, FF_FLAG_DF))
