X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=src%2Fhost%2Flayer23%2Fsrc%2Fsettings.c;h=096b3db7d3161c65c29c91f4ba9f05023f471118;hb=78f6fb7713beb247c07327a1f802b14ebd2b830a;hp=fd20930de5a742963986b6da26a8b8e2fcc3fced;hpb=ba59a8cb513c6064442213289a3cb531edbc8f8f;p=osmocom-bb.git diff --git a/src/host/layer23/src/settings.c b/src/host/layer23/src/settings.c index fd20930..096b3db 100644 --- a/src/host/layer23/src/settings.c +++ b/src/host/layer23/src/settings.c @@ -32,6 +32,10 @@ int gsm_settings_init(struct osmocom_ms *ms) { struct gsm_settings *set = &ms->settings; + /* IMEI */ + sprintf(set->imei, "000000000000000"); + sprintf(set->imeisv, "0000000000000000"); + /* test sim */ strcpy(set->test_imsi, "001010000000000"); set->test_rplmn_mcc = set->test_rplmn_mnc = 1; @@ -39,4 +43,45 @@ int gsm_settings_init(struct osmocom_ms *ms) return 0; } +char *gsm_check_imei(const char *imei, const char *sv) +{ + int i; + + if (!imei || strlen(imei) != 15) + return "IMEI must have 15 digits!"; + + for (i = 0; i < strlen(imei); i++) { + if (imei[i] < '0' || imei[i] > '9') + return "IMEI must have digits 0 to 9 only!"; + } + + if (!sv || strlen(sv) != 1) + return "Software version must have 1 digit!"; + + if (sv[0] < '0' || sv[0] > '9') + return "Software version must have digits 0 to 9 only!"; + + return NULL; +} + +int gsm_random_imei(struct gsm_settings *set) +{ + int digits = set->imei_random; + char rand[16]; + + if (digits <= 0) + return 0; + if (digits > 15) + digits = 15; + + sprintf(rand, "%08ld", random() % 100000000); + sprintf(rand + 8, "%07ld", random() % 10000000); + + strcpy(set->imei + 15 - digits, rand + 15 - digits); + strncpy(set->imeisv, set->imei, 15); + + return 0; +} + +