allow vty to set periodic location updating timer t3212
diff --git a/openbsc/src/bsc_hack.c b/openbsc/src/bsc_hack.c
index 4253959..347e951 100644
--- a/openbsc/src/bsc_hack.c
+++ b/openbsc/src/bsc_hack.c
@@ -1029,11 +1029,10 @@
 	}
 
 	/* Control Channel Description */
-	memset(&bts->chan_desc, 0, sizeof(struct gsm48_control_channel_descr));
 	bts->chan_desc.att = 1;
 	bts->chan_desc.ccch_conf = RSL_BCCH_CCCH_CONF_1_C;
 	bts->chan_desc.bs_pa_mfrms = RSL_BS_PA_MFRMS_5;
-	bts->chan_desc.t3212 = 0;
+	/* T3212 is set from vty/config */
 
 	paging_init(bts);
 
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 0c8c29a..527d436 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -234,6 +234,9 @@
 	vty_out(vty, "  training_sequence_code %u%s", bts->tsc, VTY_NEWLINE);
 	vty_out(vty, "  base_station_id_code %u%s", bts->bsic, VTY_NEWLINE);
 	vty_out(vty, "  ms max power %u%s", bts->ms_max_power, VTY_NEWLINE);
+	if (bts->chan_desc.t3212)
+		vty_out(vty, "  periodic location update %u%s",
+			bts->chan_desc.t3212 * 10, VTY_NEWLINE);
 	vty_out(vty, "  channel allocator %s%s",
 		bts->chan_alloc_reverse ? "descending" : "ascending",
 		VTY_NEWLINE);
@@ -988,6 +991,17 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_bts_per_loc_upd, cfg_bts_per_loc_upd_cmd,
+      "periodic location update <0-1530>",
+      "Periodic Location Updating Interval in Minutes")
+{
+	struct gsm_bts *bts = vty->index;
+
+	bts->chan_desc.t3212 = atoi(argv[0]) / 10;
+
+	return CMD_SUCCESS;
+}
+
 
 /* per TRX configuration */
 DEFUN(cfg_trx,
@@ -1406,6 +1420,7 @@
 	install_element(BTS_NODE, &cfg_bts_challoc_cmd);
 	install_element(BTS_NODE, &cfg_bts_cell_barred_cmd);
 	install_element(BTS_NODE, &cfg_bts_ms_max_power_cmd);
+	install_element(BTS_NODE, &cfg_bts_per_loc_upd_cmd);
 
 
 	install_element(BTS_NODE, &cfg_trx_cmd);