dirty WIP

This commit is contained in:
Alexander Couzens 2023-03-28 22:29:39 +02:00
parent 9852101624
commit a0c13fba99
3 changed files with 22 additions and 3 deletions

View File

@ -22,4 +22,5 @@ libstrongswan_osmo_epdg_la_SOURCES = \
osmo_epdg_listener.h osmo_epdg_listener.c \
gsup_client.h gsup_client.c \
ipa_client.h ipa_client.c \
osmo_epdg_utils.h osmo_epdg_utils.c
osmo_epdg_utils.h osmo_epdg_utils.c \
osmo_epdg_db.h osmo_epdg_db.c

View File

@ -20,8 +20,11 @@
#include <daemon.h>
#include <plugins/plugin.h>
#include <errno.h>
#include <unistd.h>
#include <osmocom/gsm/apn.h>
#include "osmo_epdg_plugin.h"
#include "osmo_epdg_listener.h"
#include "osmo_epdg_utils.h"
@ -85,7 +88,9 @@ METHOD(listener_t, authorize, bool,
bool final, bool *success)
{
int ret;
identification_t* imsi_id;
char apn[APN_MAXLEN];
char imsi[16] = {0};
DBG1(DBG_NET, "Authorized: uniq 0x%08x, name %s final: %d, eap: %d!",
ike_sa->get_unique_id(ike_sa),
ike_sa->get_name(ike_sa),
@ -97,8 +102,21 @@ METHOD(listener_t, authorize, bool,
return TRUE;
}
imsi_id = ike_sa->get_other_id(ike_sa);
if (!imsi_id)
{
DBG1(DBG_NET, "epdg: authorize: Can't get EAP identity.");
goto err;
}
if (get_imsi(imsi_id, imsi, sizeof(imsi) - 1))
{
DBG1(DBG_NET, "epdg: authorize: Can't find IMSI in EAP identity.");
goto err;
}
apn[0] = 0;
ret = get_apn(sa, apn, APN_MAXLEN);
ret = get_apn(ike_sa, apn, APN_MAXLEN);
if (!ret && ret != -EINVAL)
{
DBG1(DBG_NET, "epdg_listener: Tunnel Request: Couldn't get APN!");

View File

@ -24,7 +24,7 @@
#define IPA_ALLOC_SIZE 1200
enum ue_state state {
enum ue_state {
/* Initial */
UE_UNAUTHENTICATED,
/* Authenticated */