slotmap: restructure read_cb()

Change-Id: I7fb457f028f9aabc7b4b53bf036e5eac9d785299
diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c
index c7436bb..9165547 100644
--- a/src/server/rspro_server.c
+++ b/src/server/rspro_server.c
@@ -462,21 +462,31 @@
 	if (msgb_length(msg) < sizeof(*hh))
 		goto invalid;
 	msg->l2h = &hh->data[0];
-	if (hh->proto != IPAC_PROTO_OSMO)
-		goto invalid;
-	if (!he || msgb_l2len(msg)< sizeof(*he))
-		goto invalid;
-	msg->l2h = &he->data[0];
+	switch (hh->proto) {
+	case IPAC_PROTO_IPACCESS:
+		rc = ipa_server_conn_ccm(peer, msg);
+		break;
+	case IPAC_PROTO_OSMO:
+		if (!he || msgb_l2len(msg)< sizeof(*he))
+			goto invalid;
+		msg->l2h = &he->data[0];
 
-	if (he->proto!= IPAC_PROTO_EXT_RSPRO)
-		goto invalid;
+		switch (he->proto) {
+		case IPAC_PROTO_EXT_RSPRO:
+			pdu = rspro_dec_msg(msg);
+			if (!pdu)
+				goto invalid;
 
-	pdu = rspro_dec_msg(msg);
-	if (!pdu)
+			rc = handle_rx_rspro(conn, pdu);
+			ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu);
+			break;
+		default:
+			goto invalid;
+		}
+		break;
+	default:
 		goto invalid;
-
-	rc = handle_rx_rspro(conn, pdu);
-	ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu);
+	}
 	return rc;
 
 invalid: