From 8ffd7fc782a17ffdbd755f1292c7840655c65ce6 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 12 Aug 2017 14:52:15 +0200 Subject: gtp-kernel: Remove dependency to cmdline.[ch] Change-Id: I760f25df609c309eba4d5716f3e23b49320449bf --- ggsn/ggsn.c | 8 ++++++-- ggsn/gtp-kernel.c | 13 ++++--------- ggsn/gtp-kernel.h | 14 ++++---------- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 1e92956..c82f630 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -710,8 +710,12 @@ int main(int argc, char **argv) maxfd = gsn->fd1u; /* use GTP kernel module for data packet encapsulation */ - if (gtp_kernel_init(gsn, &net.v4, prefixlen, &args_info) < 0) - goto err; + if (args_info.gtp_linux_given) { + if (gtp_kernel_init(gsn, &net.v4, prefixlen, args_info.net_arg) < 0) { + SYS_ERR(DGGSN, LOGL_ERROR, 0, "Failed to initialize kernel GTP\n"); + goto err; + } + } gtp_set_cb_data_ind(gsn, encaps_tun); gtp_set_cb_delete_context(gsn, delete_context); diff --git a/ggsn/gtp-kernel.c b/ggsn/gtp-kernel.c index 458ac27..f98586d 100644 --- a/ggsn/gtp-kernel.c +++ b/ggsn/gtp-kernel.c @@ -27,7 +27,6 @@ #include "../lib/syserr.h" #include "../gtp/pdp.h" #include "../gtp/gtp.h" -#include "cmdline.h" #include #include @@ -80,12 +79,8 @@ static struct { #define GTP_DEVNAME "gtp0" int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net, - size_t prefixlen, - struct gengetopt_args_info *args_info) + size_t prefixlen, const char *net_arg) { - if (!args_info->gtp_linux_given) - return 0; - if (gtp_dev_create(-1, GTP_DEVNAME, gsn->fd0, gsn->fd1u) < 0) { SYS_ERR(DGGSN, LOGL_ERROR, 0, "cannot create GTP tunnel device: %s\n", @@ -113,12 +108,12 @@ int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net, } DEBUGP(DGGSN, "Setting route to reach %s via %s\n", - args_info->net_arg, GTP_DEVNAME); + net_arg, GTP_DEVNAME); if (gtp_dev_config(GTP_DEVNAME, net, prefixlen) < 0) { SYS_ERR(DGGSN, LOGL_ERROR, 0, "Cannot add route to reach network %s\n", - args_info->net_arg); + net_arg); } /* launch script if it is set to bring up the route to reach @@ -132,7 +127,7 @@ int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net, /* eg. /home/ggsn/ipup gtp0 10.0.0.0/8 */ snprintf(cmd, sizeof(cmd), "%s %s %s", - ipup, GTP_DEVNAME, args_info->net_arg); + ipup, GTP_DEVNAME, net_arg); cmd[sizeof(cmd)-1] = '\0'; err = system(cmd); diff --git a/ggsn/gtp-kernel.h b/ggsn/gtp-kernel.h index b3b29e3..34fd7bf 100644 --- a/ggsn/gtp-kernel.h +++ b/ggsn/gtp-kernel.h @@ -8,8 +8,7 @@ extern char *ipup; #ifdef GTP_KERNEL int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net, - size_t prefixlen, - struct gengetopt_args_info *args_info); + size_t prefixlen, const char *net_arg); void gtp_kernel_stop(void); int gtp_kernel_tunnel_add(struct pdp_t *pdp); @@ -19,15 +18,10 @@ int gtp_kernel_enabled(void); #else static inline int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net, - size_t prefixlen, - struct gengetopt_args_info *args_info) + size_t prefixlen, const char *net_arg) { - if (args_info->gtp_linux_given) { - SYS_ERR(DGGSN, LOGL_ERROR, 0, - "ggsn compiled without GTP kernel support!\n"); - return -1; - } - return 0; + SYS_ERR(DGGSN, LOGL_ERROR, 0, "ggsn compiled without GTP kernel support!\n"); + return -1; } static inline void gtp_kernel_stop(void) {} -- cgit v1.2.3