#ifndef _GTP_KERNEL_H_
#define _GTP_KERNEL_H_

struct gengetopt_args_info;

extern int debug;
extern char *ipup;

#ifdef GTP_KERNEL
int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net,
		    struct in_addr *mask,
		    struct gengetopt_args_info *args_info);
void gtp_kernel_stop(void);

int gtp_kernel_tunnel_add(struct pdp_t *pdp);
int gtp_kernel_tunnel_del(struct pdp_t *pdp);

int gtp_kernel_enabled(void);

#else
static inline int gtp_kernel_init(struct gsn_t *gsn, struct in_addr *net,
				  struct in_addr *mask,
				  struct gengetopt_args_info *args_info)
{
	if (args_info->gtpnl_given) {
		sys_err(LOG_ERR, __FILE__, __LINE__, 0,
			"ggsn compiled without GTP kernel support!\n");
		return -1;
	}
	return 0;
}

static inline void gtp_kernel_stop(void) {}

static inline int gtp_kernel_tunnel_add(struct pdp_t *pdp)
{
	return 0;
}

static inline int gtp_kernel_tunnel_del(struct pdp_t *pdp)
{
	return 0;
}

static inline int gtp_kernel_enabled(void)
{
	return 0;
}

#endif
#endif /* _GTP_KERNEL_H_ */
