aboutsummaryrefslogtreecommitdiffstats
path: root/ggsn/ggsn.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-04-25 21:13:06 +0200
committerHarald Welte <laforge@gnumonks.org>2018-04-25 21:44:50 +0200
commit546884d9a14bd1736dce26a72a184c18d775c109 (patch)
treedc5f82e937c806cd25b18966ca3718198c19b282 /ggsn/ggsn.c
parentf2286395e9dd5c1a9d2c57bafbe68c1e3a1b273f (diff)
ggsn: don't use gtp_kernel_tunnel_{add,del}() for userspace tun
Diffstat (limited to 'ggsn/ggsn.c')
-rw-r--r--ggsn/ggsn.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index 4636c04..72bf61c 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -380,9 +380,11 @@ static int delete_context(struct pdp_t *pdp)
LOGPPDP(LOGL_ERROR, pdp, "Cannot find/free IP Pool member\n");
}
- if (gtp_kernel_tunnel_del(pdp, apn->tun.cfg.dev_name)) {
- LOGPPDP(LOGL_ERROR, pdp, "Cannot delete tunnel from kernel:%s\n",
- strerror(errno));
+ if (apn->cfg.gtpu_mode == APN_GTPU_MODE_KERNEL_GTP) {
+ if (gtp_kernel_tunnel_del(pdp, apn->tun.cfg.dev_name)) {
+ LOGPPDP(LOGL_ERROR, pdp, "Cannot delete tunnel from kernel:%s\n",
+ strerror(errno));
+ }
}
return 0;
@@ -688,7 +690,7 @@ int create_context_ind(struct pdp_t *pdp)
in46a_to_eua(addr, num_addr, &pdp->eua);
- if (apn_supports_ipv4(apn)) {
+ if (apn->cfg.gtpu_mode == APN_GTPU_MODE_KERNEL_GTP && apn_supports_ipv4(apn)) {
/* TODO: In IPv6, EUA doesn't contain the actual IP addr/prefix! */
if (gtp_kernel_tunnel_add(pdp, apn->tun.cfg.dev_name) < 0) {
LOGPPDP(LOGL_ERROR, pdp, "Cannot add tunnel to kernel: %s\n", strerror(errno));