Index: uspace/lib/c/generic/inet.c
===================================================================
--- uspace/lib/c/generic/inet.c	(revision 3731d316ba8734ec66b1e1175e1b2d89faf45e7a)
+++ uspace/lib/c/generic/inet.c	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
@@ -111,6 +111,6 @@
 	
 	ipc_call_t answer;
-	aid_t req = async_send_3(exch, INET_SEND, dgram->tos, ttl, df,
-	    &answer);
+	aid_t req = async_send_4(exch, INET_SEND, dgram->iplink, dgram->tos,
+	    ttl, df, &answer);
 	
 	int rc = async_data_write_start(exch, &dgram->src, sizeof(inet_addr_t));
Index: uspace/lib/c/generic/inet/addr.c
===================================================================
--- uspace/lib/c/generic/inet/addr.c	(revision 3731d316ba8734ec66b1e1175e1b2d89faf45e7a)
+++ uspace/lib/c/generic/inet/addr.c	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
@@ -47,4 +47,6 @@
 	#error The architecture must be either big-endian or little-endian.
 #endif
+
+const addr32_t addr32_broadcast_all_hosts = 0xffffffff;
 
 const addr48_t addr48_broadcast = {
Index: uspace/lib/c/include/inet/addr.h
===================================================================
--- uspace/lib/c/include/inet/addr.h	(revision 3731d316ba8734ec66b1e1175e1b2d89faf45e7a)
+++ uspace/lib/c/include/inet/addr.h	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
@@ -68,4 +68,5 @@
 } inet_naddr_t;
 
+extern const addr32_t addr32_broadcast_all_hosts;
 extern const addr48_t addr48_broadcast;
 
Index: uspace/lib/c/include/inet/inet.h
===================================================================
--- uspace/lib/c/include/inet/inet.h	(revision 3731d316ba8734ec66b1e1175e1b2d89faf45e7a)
+++ uspace/lib/c/include/inet/inet.h	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
@@ -37,4 +37,5 @@
 
 #include <inet/addr.h>
+#include <ipc/loc.h>
 #include <sys/types.h>
 
@@ -42,4 +43,6 @@
 
 typedef struct {
+	/** Local IP link service ID (optional) */
+	service_id_t iplink;
 	inet_addr_t src;
 	inet_addr_t dest;
Index: uspace/lib/c/include/ipc/socket.h
===================================================================
--- uspace/lib/c/include/ipc/socket.h	(revision 3731d316ba8734ec66b1e1175e1b2d89faf45e7a)
+++ uspace/lib/c/include/ipc/socket.h	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
@@ -198,5 +198,5 @@
 #define SOCKET_GET_OPT_NAME(call) \
 	({ \
-		int opt_name = (int) IPC_GET_ARG4(call); \
+		int opt_name = (int) IPC_GET_ARG2(call); \
 		opt_name; \
 	})
Index: uspace/lib/c/include/net/socket_codes.h
===================================================================
--- uspace/lib/c/include/net/socket_codes.h	(revision 3731d316ba8734ec66b1e1175e1b2d89faf45e7a)
+++ uspace/lib/c/include/net/socket_codes.h	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
@@ -75,4 +75,13 @@
 typedef int32_t socklen_t;
 
+/* Socket options */
+
+enum {
+	SOL_SOCKET = 1,
+
+	/* IP link to transmit on */
+	SO_IPLINK
+};
+
 #endif
 
