diff --git a/src/input/lapd.c b/src/input/lapd.c
index ddcce5a..0287e14 100644
--- a/src/input/lapd.c
+++ b/src/input/lapd.c
@@ -312,8 +312,9 @@
 };
 
 /* General input function for any data received for this LAPD instance */
-uint8_t *lapd_receive(struct lapd_instance *li, uint8_t * data, unsigned int len,
-		      int *ilen, lapd_mph_type *prim)
+uint8_t *
+lapd_receive(struct lapd_instance *li, uint8_t * data, unsigned int len,
+	     int *ilen, lapd_mph_type *prim, int *error)
 {
 	uint8_t sapi, cr, tei, command;
 	int pf, ns, nr;
@@ -329,12 +330,14 @@
 
 	if (len < 2) {
 		LOGP(DLMI, LOGL_ERROR, "LAPD receive len %d < 2, ignoring\n", len);
+		*error = LAPD_ERR_BAD_LEN;
 		return NULL;
 	};
 
 	if ((data[0] & 1) != 0 || (data[1] & 1) != 1) {
 		LOGP(DLMI, LOGL_ERROR, "LAPD address field %x/%x not well formed\n",
 			data[0], data[1]);
+		*error = LAPD_ERR_BAD_ADDR;
 		return NULL;
 	};
 
@@ -346,6 +349,7 @@
 
 	if (len < 3) {
 		LOGP(DLMI, LOGL_ERROR, "LAPD receive len %d < 3, ignoring\n", len);
+		*error = LAPD_ERR_BAD_LEN;
 		return NULL;
 	};
 
@@ -358,6 +362,7 @@
 		typ = LAPD_TYPE_I;
 		if (len < 4) {
 			LOGP(DLMI, LOGL_ERROR, "LAPD I frame, len %d < 4\n", len);
+			*error = LAPD_ERR_BAD_LEN;
 			return NULL;
 		}
 		ns = data[2] >> 1;
@@ -368,6 +373,7 @@
 		typ = LAPD_TYPE_S;
 		if (len < 4) {
 			LOGP(DLMI, LOGL_ERROR, "LAPD S frame, len %d < 4\n", len);
+			*error = LAPD_ERR_BAD_LEN;
 			return NULL;
 		}
 		nr = data[3] >> 1;
@@ -384,6 +390,7 @@
 			break;
 		default:
 			LOGP(DLMI, LOGL_ERROR, "LAPD unknown S cmd %x\n", data[2]);
+			*error = LAPD_ERR_UNKNOWN_S_CMD;
 			return NULL;
 		};
 	} else if ((data[2] & 3) == 3) {
@@ -416,6 +423,7 @@
 		default:
 			LOGP(DLMI, LOGL_ERROR, "LAPD unknown U cmd %x "
 			     "(pf %x data %x)\n", val, pf, data[2]);
+			*error = LAPD_ERR_UNKNOWN_U_CMD;
 			return NULL;
 		};
 	};
@@ -431,6 +439,7 @@
 	teip = teip_from_tei(li, tei);
 	if (!teip) {
 		LOGP(DLMI, LOGL_NOTICE, "LAPD Unknown TEI %u\n", tei);
+		*error = LAPD_ERR_UNKNOWN_TEI;
 		return NULL;
 	}
 
@@ -589,6 +598,7 @@
 		return contents;
 	}
 
+	*error = LAPD_ERR_BAD_CMD;
 	return NULL;
 };
 
