add {BTS,BSC}_CTR_INTER_BSC_HO_OUT_FAILED for RR HO Failure

So far, during inter-BSC outgoing handover, when receiving an RR Handover
Failure from the MS, it would be counted as 'error'. Instead, add the 'failed'
counter like for all other HO types.

It may make sense to omit the 'failed' counter for inter-BSC *incoming*
handover, because then we won't receive an RR Handover Failure message. I
probably got those two mixed up during initial development.

Related: OS#4736
Change-Id: I9a61d5cc7273a830ba4e66e43e4aac6cdb707471
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index dc51d17..5506a86 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -93,6 +93,7 @@
 	BTS_CTR_INTER_BSC_HO_OUT_COMPLETED,
 	BTS_CTR_INTER_BSC_HO_OUT_STOPPED,
 	BTS_CTR_INTER_BSC_HO_OUT_TIMEOUT,
+	BTS_CTR_INTER_BSC_HO_OUT_FAILED,
 	BTS_CTR_INTER_BSC_HO_OUT_ERROR,
 	BTS_CTR_INTER_BSC_HO_IN_ATTEMPTED,
 	BTS_CTR_INTER_BSC_HO_IN_COMPLETED,
@@ -190,6 +191,7 @@
 						 "Handover to remote BSS completed"},
 	[BTS_CTR_INTER_BSC_HO_OUT_STOPPED] =	{"interbsc_ho_out:stopped", "Connection ended during HO"},
 	[BTS_CTR_INTER_BSC_HO_OUT_TIMEOUT] =	{"interbsc_ho_out:timeout", "Handover timed out"},
+	[BTS_CTR_INTER_BSC_HO_OUT_FAILED] =	{"interbsc_ho_out:failed", "Received Handover Fail message"},
 	[BTS_CTR_INTER_BSC_HO_OUT_ERROR] =	{"interbsc_ho_out:error",
 						 "Handover to remote BSS failed for other reason"},
 
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 120c4a4..09c0214 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -987,6 +987,7 @@
 	BSC_CTR_INTER_BSC_HO_OUT_COMPLETED,
 	BSC_CTR_INTER_BSC_HO_OUT_STOPPED,
 	BSC_CTR_INTER_BSC_HO_OUT_TIMEOUT,
+	BSC_CTR_INTER_BSC_HO_OUT_FAILED,
 	BSC_CTR_INTER_BSC_HO_OUT_ERROR,
 	BSC_CTR_INTER_BSC_HO_IN_ATTEMPTED,
 	BSC_CTR_INTER_BSC_HO_IN_COMPLETED,
@@ -1044,6 +1045,7 @@
 						 "Handover to remote BSS completed"},
 	[BSC_CTR_INTER_BSC_HO_OUT_STOPPED] =	{"interbsc_ho_out:stopped", "Connection ended during HO"},
 	[BSC_CTR_INTER_BSC_HO_OUT_TIMEOUT] =	{"interbsc_ho_out:timeout", "Handover timed out"},
+	[BSC_CTR_INTER_BSC_HO_OUT_FAILED] =	{"interbsc_ho_out:failed", "Received Handover Fail message"},
 	[BSC_CTR_INTER_BSC_HO_OUT_ERROR] =	{"interbsc_ho_out:error",
 						 "Handover to remote BSS failed for other reason"},
 
diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c
index 3975ed3..d93e5bc 100644
--- a/src/osmo-bsc/handover_fsm.c
+++ b/src/osmo-bsc/handover_fsm.c
@@ -716,6 +716,8 @@
 	switch (result) {
 	case HO_RESULT_OK:
 		return BSC_CTR_INTER_BSC_HO_OUT_COMPLETED;
+	case HO_RESULT_FAIL_RR_HO_FAIL:
+		return BSC_CTR_INTER_BSC_HO_OUT_FAILED;
 	case HO_RESULT_FAIL_TIMEOUT:
 		return BSC_CTR_INTER_BSC_HO_OUT_TIMEOUT;
 	case HO_RESULT_CONN_RELEASE:
@@ -751,6 +753,8 @@
 	switch (result) {
 	case HO_RESULT_OK:
 		return BTS_CTR_INTER_BSC_HO_OUT_COMPLETED;
+	case HO_RESULT_FAIL_RR_HO_FAIL:
+		return BTS_CTR_INTER_BSC_HO_OUT_FAILED;
 	case HO_RESULT_FAIL_TIMEOUT:
 		return BTS_CTR_INTER_BSC_HO_OUT_TIMEOUT;
 	case HO_RESULT_CONN_RELEASE: