isup: Allow to have a different OPC for ISUP messages.
diff --git a/include/bsc_data.h b/include/bsc_data.h
index 2cd0257..3d10bb3 100644
--- a/include/bsc_data.h
+++ b/include/bsc_data.h
@@ -91,6 +91,7 @@
 	int dpc;
 	int opc;
 	int sccp_opc;
+	int isup_opc;
 	int src_port;
 	int udp_port;
 	char *udp_ip;
diff --git a/include/mtp_data.h b/include/mtp_data.h
index 95d54bd..c3f58ab 100644
--- a/include/mtp_data.h
+++ b/include/mtp_data.h
@@ -39,7 +39,7 @@
  */
 struct mtp_link_set {
 	/* routing info.. */
-	int dpc, opc, sccp_opc;
+	int dpc, opc, sccp_opc, isup_opc;
 	int ni;
 	int spare;
 
diff --git a/src/links.c b/src/links.c
index 1134e59..8802662 100644
--- a/src/links.c
+++ b/src/links.c
@@ -104,6 +104,7 @@
 	bsc->link_set->dpc = bsc->dpc;
 	bsc->link_set->opc = bsc->opc;
 	bsc->link_set->sccp_opc = bsc->sccp_opc > -1 ? bsc->sccp_opc : bsc->opc;
+	bsc->link_set->isup_opc = bsc->isup_opc > -1 ? bsc->isup_opc : bsc->opc;
 	bsc->link_set->sltm_once = bsc->once;
 	bsc->link_set->ni = bsc->ni_ni;
 	bsc->link_set->spare = bsc->ni_spare;
diff --git a/src/main.c b/src/main.c
index 2a03657..6e33c9c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -629,6 +629,7 @@
 	bsc.dpc = 1;
 	bsc.opc = 0;
 	bsc.sccp_opc = -1;
+	bsc.isup_opc = -1;
 	bsc.udp_port = 3456;
 	bsc.udp_ip = NULL;
 	bsc.src_port = 1313;
diff --git a/src/main_stp.c b/src/main_stp.c
index c9a790b..d81b860 100644
--- a/src/main_stp.c
+++ b/src/main_stp.c
@@ -187,6 +187,7 @@
 	bsc.dpc = 1;
 	bsc.opc = 0;
 	bsc.sccp_opc = -1;
+	bsc.isup_opc = -1;
 	bsc.udp_port = 3456;
 	bsc.udp_ip = NULL;
 	bsc.src_port = 1313;
@@ -243,6 +244,7 @@
 	bsc.m2ua_set->dpc = 92;
 	bsc.m2ua_set->opc = 9;
 	bsc.m2ua_set->sccp_opc = 9;
+	bsc.m2ua_set->isup_opc = 9;
 	bsc.m2ua_set->ni = 3;
 	bsc.m2ua_set->bsc = &bsc;
 
diff --git a/src/main_udt.c b/src/main_udt.c
index 385f3f5..b47ea66 100644
--- a/src/main_udt.c
+++ b/src/main_udt.c
@@ -186,6 +186,7 @@
 	bsc.dpc = 1;
 	bsc.opc = 0;
 	bsc.sccp_opc = -1;
+	bsc.isup_opc = -1;
 	bsc.udp_port = 3456;
 	bsc.udp_ip = NULL;
 	bsc.src_port = 1313;
diff --git a/src/mtp_layer3.c b/src/mtp_layer3.c
index 6522065..ec4e09c 100644
--- a/src/mtp_layer3.c
+++ b/src/mtp_layer3.c
@@ -524,7 +524,7 @@
 int mtp_link_set_submit_isup_data(struct mtp_link_set *link, int sls,
 			      const uint8_t *data, unsigned int length)
 {
-	return mtp_int_submit(link, link->opc, sls, MTP_SI_MNT_ISUP, data, length);
+	return mtp_int_submit(link, link->isup_opc, sls, MTP_SI_MNT_ISUP, data, length);
 }
 
 static int mtp_int_submit(struct mtp_link_set *link, int pc, int sls, int type,