[nat] Move the SCCP CREF handling into a new method.

We will need to generate messages with a proper reason
and it is easier to do that from a dedicated method.
diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c
index 2351e8b..4b9ea65 100644
--- a/openbsc/src/nat/bsc_nat.c
+++ b/openbsc/src/nat/bsc_nat.c
@@ -294,6 +294,22 @@
 	bsc_write(bsc, msg, proto);
 }
 
+static void bsc_send_con_refuse(struct bsc_connection *bsc,
+				struct bsc_nat_parsed *parsed, int con_type)
+{
+	struct msgb *refuse;
+	refuse = sccp_create_refuse(parsed->src_local_ref, SCCP_REFUSAL_SCCP_FAILURE, NULL, 0);
+	if (!refuse) {
+		LOGP(DNAT, LOGL_ERROR,
+		     "Creating refuse msg failed for SCCP 0x%x on BSC Nr: %d.\n",
+		      sccp_src_ref_to_int(parsed->src_local_ref), bsc->cfg->nr);
+		return;
+	}
+
+	bsc_write(bsc, refuse, IPAC_PROTO_SCCP);
+}
+
+
 static int forward_sccp_to_bts(struct msgb *msg)
 {
 	struct sccp_connections *con;
@@ -575,7 +591,6 @@
 static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg)
 {
 	int con_type;
-	struct msgb *refuse;
 	struct sccp_connections *con;
 	struct bsc_nat_parsed *parsed;
 
@@ -679,12 +694,7 @@
 
 exit3:
 	/* send a SCCP Connection Refused */
-	refuse = sccp_create_refuse(parsed->src_local_ref, SCCP_REFUSAL_SCCP_FAILURE, NULL, 0);
-	if (refuse) {
-		bsc_send_data(bsc, refuse->l2h, msgb_l2len(refuse), IPAC_PROTO_SCCP);
-		msgb_free(refuse);
-	}
-
+	bsc_send_con_refuse(bsc, parsed, con_type);
 	talloc_free(parsed);
 	msgb_free(msg);
 	return -1;