[GPRS] NS: properly parse FR DLCI on Rx
diff --git a/openbsc/src/gprs/gprs_ns_frgre.c b/openbsc/src/gprs/gprs_ns_frgre.c
index baa7e52..94f9374 100644
--- a/openbsc/src/gprs/gprs_ns_frgre.c
+++ b/openbsc/src/gprs/gprs_ns_frgre.c
@@ -56,7 +56,7 @@
 	struct iphdr *iph;
 	struct gre_hdr *greh;
 	uint8_t *frh;
-	uint32_t dlci;
+	uint16_t dlci;
 
 	if (!msg) {
 		*error = -ENOMEM;
@@ -114,25 +114,19 @@
 		*error = -EIO;
 		goto out_err;
 	}
-	dlci = (frh[0] & 0xfc << 2);
+	dlci = ((frh[0] & 0xfc) << 2);
 	if ((frh[1] & 0x0f) != 0x01) {
 		LOGP(DNS, LOGL_NOTICE, "Unknown second FR octet 0x%02x\n",
 			frh[1]);
 		*error = -EIO;
 		goto out_err;
 	}
-	dlci |= frh[1] >> 4;
-	if (dlci > 0xffff) {
-		LOGP(DNS, LOGL_ERROR, "We don't support DLCI > 65535 (%u)\n",
-			dlci);
-		*error = -EINVAL;
-		goto out_err;
-	}
+	dlci |= (frh[1] >> 4);
 
 	msg->l2h = frh+2;
 
 	/* Store DLCI in NETWORK BYTEORDER in sockaddr port member */
-	saddr->sin_port = htons(dlci & 0xffff);
+	saddr->sin_port = htons(dlci);
 
 	return msg;