use new libosmocore gsm_23_003.h for IMEI/IMSI length
... rather than our private definitions everwhere. As an added benefit, gprs_gsup_messages.h is now free of any header dependencies within openbsc.
This commit is contained in:
parent
53373bca8f
commit
d3fa84dbba
|
@ -22,9 +22,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <osmocom/core/msgb.h>
|
||||||
|
#include <osmocom/gsm/protocol/gsm_23_003.h>
|
||||||
#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
|
#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
|
||||||
/* Needed for GSM_IMSI_LENGTH: */
|
#include <osmocom/crypt/auth.h>
|
||||||
#include <openbsc/gsm_subscriber.h>
|
|
||||||
|
|
||||||
#define GPRS_GSUP_MAX_NUM_PDP_INFO 10 /* GSM 09.02 limits this to 50 */
|
#define GPRS_GSUP_MAX_NUM_PDP_INFO 10 /* GSM 09.02 limits this to 50 */
|
||||||
#define GPRS_GSUP_MAX_NUM_AUTH_INFO 5
|
#define GPRS_GSUP_MAX_NUM_AUTH_INFO 5
|
||||||
|
@ -98,7 +99,7 @@ struct gprs_gsup_pdp_info {
|
||||||
|
|
||||||
struct gprs_gsup_message {
|
struct gprs_gsup_message {
|
||||||
enum gprs_gsup_message_type message_type;
|
enum gprs_gsup_message_type message_type;
|
||||||
char imsi[GSM_IMSI_LENGTH];
|
char imsi[GSM23003_IMSI_MAX_DIGITS+2];
|
||||||
enum gsm48_gmm_cause cause;
|
enum gsm48_gmm_cause cause;
|
||||||
enum gprs_gsup_cancel_type cancel_type;
|
enum gprs_gsup_cancel_type cancel_type;
|
||||||
int pdp_info_compl;
|
int pdp_info_compl;
|
||||||
|
|
|
@ -9,11 +9,10 @@
|
||||||
#include <osmocom/gsm/gsm48.h>
|
#include <osmocom/gsm/gsm48.h>
|
||||||
|
|
||||||
#include <osmocom/crypt/gprs_cipher.h>
|
#include <osmocom/crypt/gprs_cipher.h>
|
||||||
|
#include <osmocom/gsm/protocol/gsm_23_003.h>
|
||||||
|
|
||||||
#include <openbsc/gsm_data.h>
|
#include <openbsc/gsm_data.h>
|
||||||
|
|
||||||
#define GSM_IMSI_LENGTH 17
|
|
||||||
#define GSM_IMEI_LENGTH 17
|
|
||||||
#define GSM_EXTENSION_LENGTH 15
|
#define GSM_EXTENSION_LENGTH 15
|
||||||
#define GSM_APN_LENGTH 102
|
#define GSM_APN_LENGTH 102
|
||||||
|
|
||||||
|
@ -98,12 +97,12 @@ struct sgsn_ggsn_lookup {
|
||||||
struct sgsn_mm_ctx {
|
struct sgsn_mm_ctx {
|
||||||
struct llist_head list;
|
struct llist_head list;
|
||||||
|
|
||||||
char imsi[GSM_IMSI_LENGTH];
|
char imsi[GSM23003_IMSI_MAX_DIGITS+1];
|
||||||
enum gprs_mm_state mm_state;
|
enum gprs_mm_state mm_state;
|
||||||
uint32_t p_tmsi;
|
uint32_t p_tmsi;
|
||||||
uint32_t p_tmsi_old; /* old P-TMSI before new is confirmed */
|
uint32_t p_tmsi_old; /* old P-TMSI before new is confirmed */
|
||||||
uint32_t p_tmsi_sig;
|
uint32_t p_tmsi_sig;
|
||||||
char imei[GSM_IMEI_LENGTH];
|
char imei[GSM23003_IMEISV_NUM_DIGITS+1];
|
||||||
/* Opt: Software Version Numbber / TS 23.195 */
|
/* Opt: Software Version Numbber / TS 23.195 */
|
||||||
char msisdn[GSM_EXTENSION_LENGTH];
|
char msisdn[GSM_EXTENSION_LENGTH];
|
||||||
struct gprs_ra_id ra;
|
struct gprs_ra_id ra;
|
||||||
|
|
|
@ -3,9 +3,8 @@
|
||||||
|
|
||||||
#include "gsm_data.h"
|
#include "gsm_data.h"
|
||||||
#include <osmocom/core/linuxlist.h>
|
#include <osmocom/core/linuxlist.h>
|
||||||
|
#include <osmocom/gsm/protocol/gsm_23_003.h>
|
||||||
|
|
||||||
#define GSM_IMEI_LENGTH 17
|
|
||||||
#define GSM_IMSI_LENGTH 17
|
|
||||||
#define GSM_NAME_LENGTH 160
|
#define GSM_NAME_LENGTH 160
|
||||||
|
|
||||||
#define GSM_EXTENSION_LENGTH 15 /* MSISDN can only be 15 digits length */
|
#define GSM_EXTENSION_LENGTH 15 /* MSISDN can only be 15 digits length */
|
||||||
|
@ -32,7 +31,7 @@ struct gsm_subscriber_group {
|
||||||
|
|
||||||
struct gsm_equipment {
|
struct gsm_equipment {
|
||||||
long long unsigned int id;
|
long long unsigned int id;
|
||||||
char imei[GSM_IMEI_LENGTH];
|
char imei[GSM23003_IMEISV_NUM_DIGITS+1];
|
||||||
char name[GSM_NAME_LENGTH];
|
char name[GSM_NAME_LENGTH];
|
||||||
|
|
||||||
struct gsm48_classmark1 classmark1;
|
struct gsm48_classmark1 classmark1;
|
||||||
|
@ -45,7 +44,7 @@ struct gsm_equipment {
|
||||||
struct gsm_subscriber {
|
struct gsm_subscriber {
|
||||||
struct gsm_subscriber_group *group;
|
struct gsm_subscriber_group *group;
|
||||||
long long unsigned int id;
|
long long unsigned int id;
|
||||||
char imsi[GSM_IMSI_LENGTH];
|
char imsi[GSM23003_IMSI_MAX_DIGITS+1];
|
||||||
uint32_t tmsi;
|
uint32_t tmsi;
|
||||||
uint16_t lac;
|
uint16_t lac;
|
||||||
char name[GSM_NAME_LENGTH];
|
char name[GSM_NAME_LENGTH];
|
||||||
|
|
|
@ -5,13 +5,14 @@
|
||||||
#include "gsm_subscriber.h"
|
#include "gsm_subscriber.h"
|
||||||
#include <osmocom/core/linuxlist.h>
|
#include <osmocom/core/linuxlist.h>
|
||||||
#include <osmocom/gsm/protocol/ipaccess.h>
|
#include <osmocom/gsm/protocol/ipaccess.h>
|
||||||
|
#include <osmocom/gsm/protocol/gsm_23_003.h>
|
||||||
|
|
||||||
struct ipac_msgt_sccp_state {
|
struct ipac_msgt_sccp_state {
|
||||||
uint8_t src_ref[3];
|
uint8_t src_ref[3];
|
||||||
uint8_t dst_ref[3];
|
uint8_t dst_ref[3];
|
||||||
uint8_t trans_id;
|
uint8_t trans_id;
|
||||||
uint8_t invoke_id;
|
uint8_t invoke_id;
|
||||||
char imsi[GSM_IMSI_LENGTH];
|
char imsi[GSM23003_IMSI_MAX_DIGITS+1];
|
||||||
uint8_t data[0];
|
uint8_t data[0];
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include <osmocom/gsm/tlv.h>
|
#include <osmocom/gsm/tlv.h>
|
||||||
#include <osmocom/core/msgb.h>
|
#include <osmocom/core/msgb.h>
|
||||||
|
#include <osmocom/gsm/gsm48_ie.h>
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
|
@ -757,8 +757,9 @@ struct gsm_subscriber *gprs_subscr_get_or_create_by_mmctx(struct sgsn_mm_ctx *mm
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcpy(subscr->equipment.imei, mmctx->imei) != 0) {
|
if (strcpy(subscr->equipment.imei, mmctx->imei) != 0) {
|
||||||
strncpy(subscr->equipment.imei, mmctx->imei, GSM_IMEI_LENGTH-1);
|
strncpy(subscr->equipment.imei, mmctx->imei,
|
||||||
subscr->equipment.imei[GSM_IMEI_LENGTH-1] = 0;
|
sizeof(subscr->equipment.imei)-1);
|
||||||
|
subscr->equipment.imei[sizeof(subscr->equipment.imei)-1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (subscr->lac != mmctx->ra.lac)
|
if (subscr->lac != mmctx->ra.lac)
|
||||||
|
|
|
@ -55,7 +55,7 @@ struct ggsn_lookup {
|
||||||
|
|
||||||
struct gtphub *hub;
|
struct gtphub *hub;
|
||||||
|
|
||||||
char imsi_str[GSM_IMSI_LENGTH];
|
char imsi_str[GSM23003_IMSI_MAX_DIGITS+1];
|
||||||
char apn_ni_str[GSM_APN_LENGTH];
|
char apn_ni_str[GSM_APN_LENGTH];
|
||||||
char apn_oi_str[GSM_APN_LENGTH];
|
char apn_oi_str[GSM_APN_LENGTH];
|
||||||
int have_3dig_mnc;
|
int have_3dig_mnc;
|
||||||
|
|
|
@ -112,7 +112,7 @@ struct gsm_subscriber *subscr_get_or_create(struct gsm_subscriber_group *sgrp,
|
||||||
if (!subscr)
|
if (!subscr)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
strncpy(subscr->imsi, imsi, GSM_IMSI_LENGTH-1);
|
strncpy(subscr->imsi, imsi, sizeof(subscr->imsi)-1);
|
||||||
subscr->group = sgrp;
|
subscr->group = sgrp;
|
||||||
return subscr;
|
return subscr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ static int verify_subscriber_modify(struct ctrl_cmd *cmd, const char *value, voi
|
||||||
|
|
||||||
if (!imsi || !msisdn)
|
if (!imsi || !msisdn)
|
||||||
rc = 1;
|
rc = 1;
|
||||||
else if (strlen(imsi) >= GSM_IMSI_LENGTH)
|
else if (strlen(imsi) > GSM23003_IMSI_MAX_DIGITS)
|
||||||
rc = 1;
|
rc = 1;
|
||||||
else if (strlen(msisdn) >= GSM_EXTENSION_LENGTH)
|
else if (strlen(msisdn) >= GSM_EXTENSION_LENGTH)
|
||||||
rc = 1;
|
rc = 1;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <openbsc/db.h>
|
#include <openbsc/db.h>
|
||||||
#include <openbsc/debug.h>
|
#include <openbsc/debug.h>
|
||||||
|
|
||||||
|
#include <osmocom/gsm/protocol/gsm_23_003.h>
|
||||||
#include <osmocom/core/talloc.h>
|
#include <osmocom/core/talloc.h>
|
||||||
#include <osmocom/core/statistics.h>
|
#include <osmocom/core/statistics.h>
|
||||||
#include <osmocom/core/rate_ctr.h>
|
#include <osmocom/core/rate_ctr.h>
|
||||||
|
@ -529,7 +530,7 @@ struct gsm_subscriber *db_create_subscriber(const char *imsi)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
subscr->id = dbi_conn_sequence_last(conn, NULL);
|
subscr->id = dbi_conn_sequence_last(conn, NULL);
|
||||||
strncpy(subscr->imsi, imsi, GSM_IMSI_LENGTH-1);
|
strncpy(subscr->imsi, imsi, sizeof(subscr->imsi)-1);
|
||||||
dbi_result_free(result);
|
dbi_result_free(result);
|
||||||
LOGP(DDB, LOGL_INFO, "New Subscriber: ID %llu, IMSI %s\n", subscr->id, subscr->imsi);
|
LOGP(DDB, LOGL_INFO, "New Subscriber: ID %llu, IMSI %s\n", subscr->id, subscr->imsi);
|
||||||
db_subscriber_alloc_exten(subscr);
|
db_subscriber_alloc_exten(subscr);
|
||||||
|
@ -803,7 +804,7 @@ static void db_set_from_query(struct gsm_subscriber *subscr, dbi_conn result)
|
||||||
const char *string;
|
const char *string;
|
||||||
string = dbi_result_get_string(result, "imsi");
|
string = dbi_result_get_string(result, "imsi");
|
||||||
if (string)
|
if (string)
|
||||||
strncpy(subscr->imsi, string, GSM_IMSI_LENGTH-1);
|
strncpy(subscr->imsi, string, sizeof(subscr->imsi)-1);
|
||||||
|
|
||||||
string = dbi_result_get_string(result, "tmsi");
|
string = dbi_result_get_string(result, "tmsi");
|
||||||
if (string)
|
if (string)
|
||||||
|
@ -1317,7 +1318,7 @@ int db_subscriber_alloc_token(struct gsm_subscriber *subscriber, uint32_t *token
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int db_subscriber_assoc_imei(struct gsm_subscriber *subscriber, char imei[GSM_IMEI_LENGTH])
|
int db_subscriber_assoc_imei(struct gsm_subscriber *subscriber, char imei[GSM23003_IMEISV_NUM_DIGITS])
|
||||||
{
|
{
|
||||||
unsigned long long equipment_id, watch_id;
|
unsigned long long equipment_id, watch_id;
|
||||||
dbi_result result;
|
dbi_result result;
|
||||||
|
|
|
@ -400,7 +400,7 @@ int bsc_ussd_check(struct nat_sccp_connection *con, struct bsc_nat_parsed *parse
|
||||||
if (parsed->bssap != BSSAP_MSG_DTAP)
|
if (parsed->bssap != BSSAP_MSG_DTAP)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (strlen(con->filter_state.imsi) >= GSM_IMSI_LENGTH)
|
if (strlen(con->filter_state.imsi) > GSM23003_IMSI_MAX_DIGITS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
hdr48 = bsc_unpack_dtap(parsed, msg, &len);
|
hdr48 = bsc_unpack_dtap(parsed, msg, &len);
|
||||||
|
|
|
@ -388,7 +388,7 @@ static void test_expiry(void)
|
||||||
#undef MAP3
|
#undef MAP3
|
||||||
}
|
}
|
||||||
|
|
||||||
char resolve_ggsn_got_imsi[GSM_IMSI_LENGTH];
|
char resolve_ggsn_got_imsi[GSM23003_IMSI_MAX_DIGITS+1];
|
||||||
char resolve_ggsn_got_ni[GSM_APN_LENGTH];
|
char resolve_ggsn_got_ni[GSM_APN_LENGTH];
|
||||||
|
|
||||||
struct osmo_sockaddr resolved_ggsn_addr;
|
struct osmo_sockaddr resolved_ggsn_addr;
|
||||||
|
|
Loading…
Reference in New Issue