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;
 }