-p The protocol of the rule or of the packet to check.
The specified protocol can be one of tcp, udp, icmp, or all, or it can
be a numeric value, representing one of these protocols or a different
one. A protocol name from /etc/protocols is also allowed. A "!"
argument before the protocol inverts the test. The number zero is
equivalent to all. Protocol all will match with all protocols and is
taken as default when this option is omitted.
-m Specifies a match to use, that is, an extension module that tests for a specific property.
The set of matches make up the condition under which a target is
invoked. Matches are evaluated first to last as specified on the
command line and work in short-circuit fashion, i.e. if one extension
yields false, evaluation will stop.
-m Also matches packets of the specified protocol name. If '!' precedes the protocol name, this matches all packets that are not of the specified protocol. Valid protocol names are icmp, udp, tcp... A list of all the valid protocols could be found in the file /etc/protocols. So I think it would be safe to omitt the