osmo-bsc: Include rf statistics in the location-state TRAP as well

The first fields are still the location up to the height.
The next field is "operational" if any of the trx are operational,
otherwise "inoperational"
The second to last field contains "locked" if all of the trx are in the
admin state, otherwise "unlocked".
The last field represents the rf policy currently in effect. It is one
of (on|off|grace|unknown).

<tstamp>,<valid>,<lat>,<lon>,<height>,<oper>,<admin>,<policy>
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
index a241f7e..ba8c1d2 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_ctrl.c
@@ -58,6 +58,7 @@
 static void generate_location_state_trap(struct gsm_bts *bts, struct bsc_msc_connection *msc_con)
 {
 	struct ctrl_cmd *cmd;
+	const char *oper, *admin, *policy;
 
 	cmd = ctrl_cmd_create(msc_con, CTRL_TYPE_TRAP);
 	if (!cmd) {
@@ -72,6 +73,12 @@
 	cmd->node = bts;
 	get_bts_loc(cmd, NULL);
 
+	oper = osmo_bsc_rf_get_opstate_name(osmo_bsc_rf_get_opstate_by_bts(bts));
+	admin = osmo_bsc_rf_get_adminstate_name(osmo_bsc_rf_get_adminstate_by_bts(bts));
+	policy = osmo_bsc_rf_get_policy_name(osmo_bsc_rf_get_policy_by_bts(bts));
+
+	cmd->reply = talloc_asprintf_append(cmd->reply, ",%s,%s,%s", oper, admin, policy);
+
 	osmo_bsc_send_trap(cmd, msc_con);
 	talloc_free(cmd);
 }