ipa: Only use one IPA number for Osmo extensions

Instead of using more numbers from the proto range we will
use the 0xee and then have a mini header with our new proto
id in there. For a start rename the use types to _OLD.
diff --git a/openbsc/include/openbsc/ipaccess.h b/openbsc/include/openbsc/ipaccess.h
index b370220..1d00d97 100644
--- a/openbsc/include/openbsc/ipaccess.h
+++ b/openbsc/include/openbsc/ipaccess.h
@@ -14,14 +14,21 @@
 	u_int8_t data[0];
 } __attribute__ ((packed));
 
+struct ipaccess_head_ext {
+	uint8_t proto;
+	uint8_t data[0];
+} __attribute__ ((packed));
+
 enum ipaccess_proto {
 	IPAC_PROTO_RSL		= 0x00,
 	IPAC_PROTO_IPACCESS	= 0xfe,
 	IPAC_PROTO_SCCP		= 0xfd,
 	IPAC_PROTO_OML		= 0xff,
 
+
 	/* OpenBSC extensions */
-	IPAC_PROTO_MGCP		= 0xfc,
+	IPAC_PROTO_OSMO		= 0xee,
+	IPAC_PROTO_MGCP_OLD	= 0xfc,
 };
 
 enum ipaccess_msgtype {
@@ -32,7 +39,7 @@
 	IPAC_MSGT_ID_ACK	= 0x06,
 
 	/* OpenBSC extension */
-	IPAC_MSGT_SCCP_STATE	= 0xff,
+	IPAC_MSGT_SCCP_OLD	= 0xff,
 };
 
 enum ipaccess_id_tags {
diff --git a/openbsc/src/bsc/osmo_bsc_msc.c b/openbsc/src/bsc/osmo_bsc_msc.c
index 8b23c6f..b0c0044 100644
--- a/openbsc/src/bsc/osmo_bsc_msc.c
+++ b/openbsc/src/bsc/osmo_bsc_msc.c
@@ -67,7 +67,7 @@
         }
 
 	mgcp->l2h = msgb_put(mgcp, ret);
-	msc_queue_write(data->msc_con, mgcp, IPAC_PROTO_MGCP);
+	msc_queue_write(data->msc_con, mgcp, IPAC_PROTO_MGCP_OLD);
 	return 0;
 }
 
@@ -223,7 +223,7 @@
 		}
 	} else if (hh->proto == IPAC_PROTO_SCCP) {
 		sccp_system_incoming(msg);
-	} else if (hh->proto == IPAC_PROTO_MGCP) {
+	} else if (hh->proto == IPAC_PROTO_MGCP_OLD) {
 		mgcp_forward(data, msg);
 	}
 
diff --git a/openbsc/src/nat/bsc_filter.c b/openbsc/src/nat/bsc_filter.c
index f22f5be..73e9878 100644
--- a/openbsc/src/nat/bsc_filter.c
+++ b/openbsc/src/nat/bsc_filter.c
@@ -69,7 +69,7 @@
 	{ IPAC_PROTO_SCCP, ALLOW_ANY, ALLOW_ANY, ALLOW_ANY, FILTER_TO_BOTH },
 
 	/* allow MGCP messages to both sides */
-	{ IPAC_PROTO_MGCP, ALLOW_ANY, ALLOW_ANY, ALLOW_ANY, FILTER_TO_BOTH },
+	{ IPAC_PROTO_MGCP_OLD, ALLOW_ANY, ALLOW_ANY, ALLOW_ANY, FILTER_TO_BOTH },
 };
 
 struct bsc_nat_parsed *bsc_nat_parse(struct msgb *msg)
diff --git a/openbsc/src/nat/bsc_mgcp_utils.c b/openbsc/src/nat/bsc_mgcp_utils.c
index dc8cd81..aacfce6 100644
--- a/openbsc/src/nat/bsc_mgcp_utils.c
+++ b/openbsc/src/nat/bsc_mgcp_utils.c
@@ -303,7 +303,7 @@
 		}
 
 		/* send the message and a fake MDCX to force sending of a dummy packet */
-		bsc_write(sccp->bsc, bsc_msg, IPAC_PROTO_MGCP);
+		bsc_write(sccp->bsc, bsc_msg, IPAC_PROTO_MGCP_OLD);
 		bsc_mgcp_send_mdcx(sccp->bsc, sccp->bsc_endp, mgcp_endp);
 		return MGCP_POLICY_DEFER;
 	} else if (state == MGCP_ENDP_DLCX) {
@@ -312,7 +312,7 @@
 		bsc_mgcp_dlcx(sccp);
 		return MGCP_POLICY_CONT;
 	} else {
-		bsc_write(sccp->bsc, bsc_msg, IPAC_PROTO_MGCP);
+		bsc_write(sccp->bsc, bsc_msg, IPAC_PROTO_MGCP_OLD);
 		return MGCP_POLICY_DEFER;
 	}
 }
diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c
index 046f38c..a0bebf1 100644
--- a/openbsc/src/nat/bsc_nat.c
+++ b/openbsc/src/nat/bsc_nat.c
@@ -958,7 +958,7 @@
 			goto exit2;
 			break;
 		}
-        } else if (parsed->ipa_proto == IPAC_PROTO_MGCP) {
+        } else if (parsed->ipa_proto == IPAC_PROTO_MGCP_OLD) {
                 bsc_mgcp_forward(bsc, msg);
                 goto exit2;
 	} else {
diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c
index 05868f9..aba082d 100644
--- a/openbsc/src/nat/bsc_nat_utils.c
+++ b/openbsc/src/nat/bsc_nat_utils.c
@@ -262,7 +262,7 @@
 	msg->l3h = msgb_put(msg, length);
 	memcpy(msg->l3h, data, length);
 
-        return bsc_write(bsc, msg, IPAC_PROTO_MGCP);
+        return bsc_write(bsc, msg, IPAC_PROTO_MGCP_OLD);
 }
 
 int bsc_write(struct bsc_connection *bsc, struct msgb *msg, int proto)
diff --git a/openbsc/src/nat/bsc_ussd.c b/openbsc/src/nat/bsc_ussd.c
index 378fbc5..c121abe 100644
--- a/openbsc/src/nat/bsc_ussd.c
+++ b/openbsc/src/nat/bsc_ussd.c
@@ -281,7 +281,7 @@
 	memcpy(copy->l2h, input->l2h, msgb_l2len(input));
 
 	msg->l2h = msgb_put(msg, 1);
-	msg->l2h[0] = IPAC_MSGT_SCCP_STATE;
+	msg->l2h[0] = IPAC_MSGT_SCCP_OLD;
 
 	/* fill out the data */
 	state = (struct ipac_msgt_sccp_state *) msgb_put(msg, sizeof(*state));