Store classmark1/2/3 in equipment SQL table
For further evaluation/analysis, this patch stores the classmark 1, 2 and 3
values of every equipment in the SQL database. We can use this non-volatile
data to determine the supported features for each handset that we've ever
seen on our network.
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index 2312e8a..3e2d171 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1469,8 +1469,9 @@
subscr_put(subscr);
}
- subscr->classmark2_len = classmark2_len;
- memcpy(subscr->classmark2, classmark2, classmark2_len);
+ subscr->equipment.classmark2_len = classmark2_len;
+ memcpy(subscr->equipment.classmark2, classmark2, classmark2_len);
+ db_sync_equipment(&subscr->equipment);
return gsm48_tx_mm_serv_ack(msg->lchan);
}
@@ -1602,8 +1603,9 @@
DEBUGP(DRR, "<- Channel was requested by %s\n",
subscr->name ? subscr->name : subscr->imsi);
- subscr->classmark2_len = *classmark2_lv;
- memcpy(subscr->classmark2, classmark2_lv+1, *classmark2_lv);
+ subscr->equipment.classmark2_len = *classmark2_lv;
+ memcpy(subscr->equipment.classmark2, classmark2_lv+1, *classmark2_lv);
+ db_sync_equipment(&subscr->equipment);
if (!msg->lchan->subscr) {
msg->lchan->subscr = subscr;
@@ -1667,16 +1669,15 @@
DEBUGPC(DRR, "CM3(len=%u)\n", cm3_len);
}
if (subscr) {
- subscr->classmark2_len = cm2_len;
- memcpy(subscr->classmark2, cm2, cm2_len);
+ subscr->equipment.classmark2_len = cm2_len;
+ memcpy(subscr->equipment.classmark2, cm2, cm2_len);
if (cm3) {
- subscr->classmark3_len = cm3_len;
- memcpy(subscr->classmark3, cm3, cm3_len);
+ subscr->equipment.classmark3_len = cm3_len;
+ memcpy(subscr->equipment.classmark3, cm3, cm3_len);
}
+ db_sync_equipment(&subscr->equipment);
}
- /* FIXME: store the classmark2/3 values with the equipment register */
-
return 0;
}