protocol: prohibit wildcarded requests for MDCX and DLCX

When a wildcarded request is made with a DLCX or MDCX command
the MGW will search for a free endpoint and continues the command
execution with that endpoint.

- Catch the wildcarded request early on DLCX and MDCX and return
  with an error code.

See also TTCN3 testcases:
MGCP_Test.TC_mdcx_wildcarded
MGCP_Test.TC_dlcx_wildcarded

Change-Id: Ia77d44a6a86083e62338e5845b553e5cf13ebd10
diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c
index 62487d1..ea86672 100644
--- a/src/libosmo-mgcp/mgcp_protocol.c
+++ b/src/libosmo-mgcp/mgcp_protocol.c
@@ -739,6 +739,14 @@
 
 	LOGP(DLMGCP, LOGL_NOTICE, "MDCX: modifying existing connection ...\n");
 
+	/* Prohibit wildcarded requests */
+	if (endp->wildcarded_req) {
+		LOGP(DLMGCP, LOGL_ERROR,
+		     "MDCX: endpoint:0x%x wildcarded endpoint names not supported.\n",
+		     ENDPOINT_NUMBER(endp));
+		return create_err_response(endp, 507, "MDCX", p->trans);
+	}
+
 	if (llist_count(&endp->conns) <= 0) {
 		LOGP(DLMGCP, LOGL_ERROR,
 		     "MDCX: endpoint:0x%x endpoint is not holding a connection.\n",
@@ -912,6 +920,14 @@
 	     "DLCX: endpoint:0x%x deleting connection ...\n",
 	     ENDPOINT_NUMBER(endp));
 
+	/* Prohibit wildcarded requests */
+	if (endp->wildcarded_req) {
+		LOGP(DLMGCP, LOGL_ERROR,
+		     "DLCX: endpoint:0x%x wildcarded endpoint names not supported.\n",
+		     ENDPOINT_NUMBER(endp));
+		return create_err_response(endp, 507, "DLCX", p->trans);
+	}
+
 	if (llist_count(&endp->conns) <= 0) {
 		LOGP(DLMGCP, LOGL_ERROR,
 		     "DLCX: endpoint:0x%x endpoint is not holding a connection.\n",