epdg_listener: authorize: get IMSI and APN

This commit is contained in:
Alexander Couzens 2024-02-09 20:42:45 +01:00
parent 05d9dc8552
commit 820185941a
1 changed files with 19 additions and 1 deletions

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!");