stp: Forward unhandled ISUP from one end to another
diff --git a/src/isup.c b/src/isup.c
index 340af16..33f1fdb 100644
--- a/src/isup.c
+++ b/src/isup.c
@@ -1,6 +1,6 @@
 /*
- * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2010 by On-Waves
+ * (C) 2010-2011 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * (C) 2010-2011 by On-Waves
  * All Rights Reserved
  *
  * This program is free software: you can redistribute it and/or modify
@@ -109,7 +109,7 @@
 	return 0;
 }
 
-int mtp_link_set_forward_isup(struct mtp_link_set *link, struct msgb *msg, int sls)
+int mtp_link_set_isup(struct mtp_link_set *link, struct msgb *msg, int sls)
 {
 	int rc = -1;
 	int payload_size;
@@ -128,7 +128,8 @@
 		rc = handle_circuit_reset_grs(link, sls, hdr->cic, hdr->data, payload_size);
 		break;
 	default:
-		LOGP(DISUP, LOGL_NOTICE, "ISUP msg not handled: 0x%x\n", hdr->msg_type);
+		mtp_link_set_forward_isup(link, msg, sls);
+		rc = 0;
 		break;
 	}
 
diff --git a/src/main.c b/src/main.c
index 3163527..2a03657 100644
--- a/src/main.c
+++ b/src/main.c
@@ -127,6 +127,11 @@
 	msc_send_msg(&bsc, rc, &result, _msg);
 }
 
+void mtp_link_set_forward_isup(struct mtp_link_set *set, struct msgb *msg, int sls)
+{
+	LOGP(DINP, LOGL_ERROR, "ISUP is not handled.\n");
+}
+
 /*
  * handle local message in close down mode
  */
diff --git a/src/main_stp.c b/src/main_stp.c
index c038b2b..fb10ea3 100644
--- a/src/main_stp.c
+++ b/src/main_stp.c
@@ -75,6 +75,14 @@
 	mtp_link_set_submit_sccp_data(target, sls, _msg->l2h, msgb_l2len(_msg));
 }
 
+void mtp_link_set_forward_isup(struct mtp_link_set *set, struct msgb *msg, int sls)
+{
+	struct mtp_link_set *target;
+
+	target = bsc.m2ua_set == set ? bsc.link_set : bsc.m2ua_set;
+	mtp_link_set_submit_isup_data(target, sls, msg->l3h, msgb_l3len(msg));
+}
+
 void mtp_linkset_down(struct mtp_link_set *set)
 {
 	set->available = 0;
diff --git a/src/main_udt.c b/src/main_udt.c
index f13d4dd..385f3f5 100644
--- a/src/main_udt.c
+++ b/src/main_udt.c
@@ -70,6 +70,11 @@
 	msc_send_direct(&bsc, _msg);
 }
 
+void mtp_link_set_forward_isup(struct mtp_link_set *set, struct msgb *msg, int sls)
+{
+	LOGP(DINP, LOGL_ERROR, "ISUP is not handled.\n");
+}
+
 void mtp_linkset_down(struct mtp_link_set *set)
 {
 	set->available = 0;
diff --git a/src/mtp_layer3.c b/src/mtp_layer3.c
index 9eb2fab..0039747 100644
--- a/src/mtp_layer3.c
+++ b/src/mtp_layer3.c
@@ -495,7 +495,7 @@
 		break;
 	case MTP_SI_MNT_ISUP:
 		msg->l3h = &hdr->data[0];
-		rc = mtp_link_set_forward_isup(link, msg, MTP_LINK_SLS(hdr->addr));
+		rc = mtp_link_set_isup(link, msg, MTP_LINK_SLS(hdr->addr));
 		break;
 	default:
 		fprintf(stderr, "Unhandled: %u\n", hdr->ser_ind);