-fknown-extern-type support

diff --git a/libasn1fix/asn1fix_dereft.c b/libasn1fix/asn1fix_dereft.c
index f0ec9a6..1f9b5bf 100644
--- a/libasn1fix/asn1fix_dereft.c
+++ b/libasn1fix/asn1fix_dereft.c
@@ -28,9 +28,19 @@
 	 */
 	type_expr = asn1f_find_terminal_type(arg, expr, 0);
 	if(type_expr == NULL) {
+		const char *type_name;
+
+		if(errno == EEXIST) {
+			/* Ignore missing type
+			 * if known to be defined externally:
+			 * -fknown-extern-type=<name>
+			 */
+			return 0;
+		}
+
+		type_name = asn1f_printable_reference(expr->reference);
 		FATAL("Unknown type \"%s\" referenced by \"%s\" at line %d",
-			asn1f_printable_reference(expr->reference),
-			expr->Identifier, expr->_lineno);
+			type_name, expr->Identifier, expr->_lineno);
 		return -1;
 	}