lapd_test: Look at the content of LAPD messages and compare them

Verify the output, accept two known errors in the generation of it.
diff --git a/tests/lapd/lapd_test.c b/tests/lapd/lapd_test.c
index e6b10b6..e92a5fd 100644
--- a/tests/lapd/lapd_test.c
+++ b/tests/lapd/lapd_test.c
@@ -58,14 +58,32 @@
 	return msg;
 }
 
+/*
+ * Test data is below...
+ */
+static const uint8_t cm[] = {
+	0x05, 0x24, 0x31, 0x03, 0x50, 0x18, 0x93, 0x08,
+	0x29, 0x47, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80,
+};
+
+static const uint8_t cm_padded[] = {
+	0x05, 0x24, 0x31, 0x03, 0x50, 0x18, 0x93, 0x08,
+	0x29, 0x47, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80,
+	0x2b, 0x2b, 0x2b, 0x2b
+};
+
+static const uint8_t mm[] = {
+	0x05, 0x24, 0x31, 0x03, 0x50, 0x18, 0x93, 0x08,
+	0x29, 0x47, 0x80, 0x00,
+};
+
+static const uint8_t dummy1[] = {
+	0xab, 0x03, 0x30, 0x60, 0x06,
+};
 
 static struct msgb *create_cm_serv_req(void)
 {
 	struct msgb *msg;
-	static const uint8_t cm[] = {
-		0x05, 0x24, 0x31, 0x03, 0x50, 0x18, 0x93, 0x08,
-		0x29, 0x47, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80,
-	};
 
 	msg = msgb_from_array(cm, sizeof(cm));
 	rsl_rll_push_l3(msg, RSL_MT_EST_REQ, 0, 0, 1);
@@ -75,11 +93,6 @@
 static struct msgb *create_mm_id_req(void)
 {
 	struct msgb *msg;
-	/* okay... not an identity request */
-	static const uint8_t mm[] = {
-		0x05, 0x24, 0x31, 0x03, 0x50, 0x18, 0x93, 0x08,
-		0x29, 0x47, 0x80, 0x00,
-	};
 
 	msg = msgb_from_array(mm, sizeof(mm));
 	rsl_rll_push_l3(msg, RSL_MT_DATA_REQ, 0, 0, 1);
@@ -89,10 +102,6 @@
 static struct msgb *create_dummy_data_req(void)
 {
 	struct msgb *msg;
-	/* okay... not an identity request */
-	static const uint8_t dummy1[] = {
-		0xab, 0x03, 0x30, 0x60, 0x06,
-	};
 
 	msg = msgb_from_array(dummy1, sizeof(dummy1));
 	rsl_rll_push_l3(msg, RSL_MT_DATA_REQ, 0, 0, 1);
@@ -128,9 +137,23 @@
 {
 	struct lapdm_polling_state *state = _ctx;
 
-	state->bts_read += 1;
 
 	printf("%s: MS->BTS(us) message %d\n", __func__, msgb_length(in_msg));
+
+
+	if (state->bts_read == 0) {
+		printf("BTS: Verifying CM request.\n");
+		ASSERT(msgb_l3len(in_msg) == ARRAY_SIZE(cm_padded));
+		ASSERT(memcmp(in_msg->l3h, cm_padded, ARRAY_SIZE(cm_padded)) == 0);
+	} else if (state->bts_read == 1) {
+		printf("BTS: Verifying dummy message.\n");
+		ASSERT(msgb_l3len(in_msg) == ARRAY_SIZE(dummy1));
+		ASSERT(memcmp(in_msg->l3h, dummy1, ARRAY_SIZE(dummy1)) == 0);
+	} else {
+		printf("BTS: Do not know to verify: %d\n", state->bts_read);
+	}
+
+	state->bts_read += 1;
 	msgb_free(in_msg);
 
 	return 0;
@@ -154,9 +177,27 @@
 	printf("%s: BTS->MS(us) message %d\n", __func__, msgb_length(msg));
 
 	if (state->ms_read == 0) {
-		/* TODO: Verify that this is a: PRIM_DL_EST, PRIM_OP_CONFIRM */
+		struct abis_rsl_rll_hdr hdr;
+
+		printf("MS: Verifying incoming primitive.\n");
+		ASSERT(msg->len == sizeof(struct abis_rsl_rll_hdr) + 3);
+
+		/* verify the header */
+		memset(&hdr, 0, sizeof(hdr));
+		rsl_init_rll_hdr(&hdr, RSL_MT_EST_CONF);
+		hdr.c.msg_discr |= ABIS_RSL_MDISC_TRANSP;
+		ASSERT(memcmp(msg->data, &hdr, sizeof(hdr)) == 0);
+
+		/* Verify the added RSL_IE_L3_INFO but we have a bug here */
+		ASSERT(msg->data[6] == RSL_IE_L3_INFO);
+		ASSERT(msg->data[7] == 0x0 && msg->data[8] == 0x9c);
+		/* this should be 0x0 and 0x0... but we have a bug */
 	} else if (state->ms_read == 1) {
-		/* TODO: Verify that this is: create_mm_id_req() */
+		printf("MS: Verifying incoming MM message.\n");
+		ASSERT(msgb_l3len(msg) == ARRAY_SIZE(mm));
+		ASSERT(memcmp(msg->l3h, mm, msgb_l3len(msg)) == 0);
+	} else {
+		printf("MS: Do not know to verify: %d\n", state->ms_read);
 	}
 
 	state->ms_read += 1;