From 76be86b201dfc51c81a4f58369ec61d881bbed81 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 25 Apr 2018 21:13:06 +0200 Subject: ggsn: don't use gtp_kernel_tunnel_{add,del}() for userspace tun Change-Id: I00cc8eb8c4d44532f975f78783ff4e12814b3416 --- ggsn/ggsn.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 2b0581e..6ff1312 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)); -- cgit v1.2.3