Testsuite found an issue: multiport accepts -p ! tcp.
diff --git a/extensions/libipt_multiport.c b/extensions/libipt_multiport.c
index 7442f94..410a390 100644
--- a/extensions/libipt_multiport.c
+++ b/extensions/libipt_multiport.c
@@ -144,6 +144,10 @@
 static const char *
 check_proto(const struct ipt_entry *entry)
 {
+	if (entry->ip.invflags & IPT_INV_PROTO)
+		exit_error(PARAMETER_PROBLEM,
+			   "multiport only works with TCP or UDP");
+
 	if (entry->ip.proto == IPPROTO_TCP)
 		return "tcp";
 	else if (entry->ip.proto == IPPROTO_UDP)