diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index 53c8c01..821c942 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -54,6 +54,7 @@
 #include "../gtp/pdp.h"
 #include "../gtp/gtp.h"
 #include "cmdline.h"
+#include "gtp-kernel.h"
 
 int end = 0;
 int maxfd = 0;			/* For select()            */
@@ -134,6 +135,13 @@
 		ippool_freeip(ippool, (struct ippoolm_t *)pdp->peer);
 	else
 		SYS_ERR(DGGSN, LOGL_ERROR, 0, "Peer not defined!");
+
+	if (gtp_kernel_tunnel_del(pdp)) {
+		SYS_ERR(DGGSN, LOGL_ERROR, 0,
+			"Cannot delete tunnel from kernel: %s\n",
+			strerror(errno));
+	}
+
 	return 0;
 }
 
@@ -167,6 +175,11 @@
 	pdp->ipif = tun;	/* TODO */
 	member->peer = pdp;
 
+	if (gtp_kernel_tunnel_add(pdp) < 0) {
+		sys_err(LOG_ERR, __FILE__, __LINE__, 0,
+			"Cannot add tunnel to kernel: %s\n", strerror(errno));
+	}
+
 	gtp_create_context_resp(gsn, pdp, GTPCAUSE_ACC_REQ);
 	return 0;		/* Success */
 }
@@ -247,6 +260,8 @@
 			printf("pidfile: %s\n", args_info.pidfile_arg);
 		if (args_info.statedir_arg)
 			printf("statedir: %s\n", args_info.statedir_arg);
+		if (args_info.gtpnl_arg)
+			printf("gtpnl: %s\n", args_info.gtpnl_arg);
 		printf("timelimit: %d\n", args_info.timelimit_arg);
 	}
 
@@ -307,6 +322,8 @@
 			printf("pidfile: %s\n", args_info.pidfile_arg);
 		if (args_info.statedir_arg)
 			printf("statedir: %s\n", args_info.statedir_arg);
+		if (args_info.gtpnl_arg)
+			printf("gtpnl: %s\n", args_info.gtpnl_arg);
 		printf("timelimit: %d\n", args_info.timelimit_arg);
 	}
 
@@ -502,10 +519,18 @@
 	if (gsn->fd1u > maxfd)
 		maxfd = gsn->fd1u;
 
+	/* use GTP kernel module for data packet encapsulation */
+	if (gtp_kernel_init(gsn, &net, &mask, &args_info) < 0)
+		goto err;
+
 	gtp_set_cb_data_ind(gsn, encaps_tun);
 	gtp_set_cb_delete_context(gsn, delete_context);
 	gtp_set_cb_create_context_ind(gsn, create_context_ind);
 
+	/* skip the configuration of the tun0 if we're using the gtp0 device */
+	if (gtp_kernel_enabled())
+		goto skip_tun;
+
 	/* Create a tunnel interface */
 	DEBUGP(DGGSN, "Creating tun interface\n");
 	if (tun_new((struct tun_t **)&tun)) {
@@ -526,6 +551,8 @@
 	if (ipup)
 		tun_runscript(tun, ipup);
 
+skip_tun:
+
   /******************************************************************/
 	/* Main select loop                                               */
   /******************************************************************/
@@ -556,7 +583,7 @@
 			break;
 		}
 
-		if (tun->fd != -1 && FD_ISSET(tun->fd, &fds) &&
+		if (tun && tun->fd != -1 && FD_ISSET(tun->fd, &fds) &&
 		    tun_decaps(tun) < 0) {
 			SYS_ERR(DGGSN, LOGL_ERROR, 0,
 				"TUN read failed (fd)=(%d)", tun->fd);
@@ -572,11 +599,13 @@
 			gtp_decaps1u(gsn);
 
 	}
-
+err:
+	gtp_kernel_stop();
 	cmdline_parser_free(&args_info);
 	ippool_free(ippool);
 	gtp_free(gsn);
-	tun_free(tun);
+	if (tun)
+		tun_free(tun);
 
 	return 1;
 
