131183Speterline ::= iface | arp | send | defrouter | ipv4line .
231183Speter
331183Speteriface ::= ifhdr "{" ifaceopts "}" ";" .
431183Speterifhdr ::= "interface" | "iface" .
531183Speterifaceopts ::= "ifname" name | "mtu" mtu | "v4addr" ipaddr |
631183Speter	      "eaddr" eaddr .
731183Speter
831183Spetersend ::= "send" ";" | "send" "{" sendbodyopts "}" ";" .
931183Spetersendbodyopts ::= sendbody [ sendbodyopts ] .
1031183Spetersendbody ::= "ifname" name | "via" ipaddr .
1131183Speter
1231183Speterdefrouter ::= "router" ipaddr .
1331183Speter
1431183Speterarp ::= "arp" "{" arpbodyopts "}" ";" .
1531183Speterarpbodyopts ::= arpbody [ arpbodyopts ] .
1631183Speterarpbody ::= "v4addr" ipaddr | "eaddr" eaddr .
1731183Speter
1831183Speterbodyline ::= ipv4line | tcpline | udpline | icmpline | dataline .
1931183Speter
2031183Speteripv4line ::= "ipv4" "{" ipv4bodyopts "}" ";" .
2131183Speteripv4bodyopts ::= ipv4body [ ipv4bodyopts ] | bodyline .
2231183Speteripv4body ::= "proto" protocol | "src" ipaddr | "dst" ipaddr |
2331183Speter	     "off" number | "v" number | "hl" number| "id" number |
2431183Speter	     "ttl" number | "tos" number | "sum" number | "len" number |
2531183Speter	     "opt" "{" ipv4optlist "}" ";" .
2631183Speteripv4optlist ::= ipv4option [ ipv4optlist ] .
2731183Speteripv4optlist = "nop" | "rr" | "zsu" | "mtup" | "mtur" | "encode" | "ts" |
2831183Speter	      "tr" | "sec" | "lsrr" | "e-sec" | "cipso" | "satid" |
2931183Speter	      "ssrr" | "addext" | "visa" | "imitd" | "eip" | "finn" |
3031183Speter	      "secclass" ipv4secclass.
3131183Speteripv4secclass := "unclass" | "confid" | "reserv-1" | "reserv-2" |
3231183Speter		"reserv-3" | "reserv-4" | "secret" | "topsecret" .
3331183Speter
3431183Spetertcpline ::= "tcp" "{" tcpbodyopts "}" ";" .
3531183Spetertcpbodyopts ::= tcpbody [ tcpbodyopts ] | bodyline .
3631183Spetertcpbody ::= "sport" port | "dport" port | "seq" number | "ack" number |
3731183Speter	    "off" number | "urp" number | "win" number | "sum" number |
3831183Speter	    "flags" tcpflags | data .
3931183Speter
4031183Speterudpline ::= "udp" "{" udpbodyopts "}" ";" .
4131183Speterudpbodyopts ::= udpbody [ udpbodyopts ] | bodyline .
4231183Speterudpbody ::= "sport" port | "dport" port | "len" number | "sum" number |
4331183Speter	    data .
4431183Speter
4531183Spetericmpline ::= "icmp" "{" icmpbodyopts "}" ";" .
4631183Spetericmpbodyopts ::= icmpbody [ icmpbodyopts ] | bodyline .
4731183Spetericmpbody ::= "type" icmptype [ "code" icmpcode ] .
4831183Spetericmptype ::= "echorep" | "echorep" "{" echoopts "}" ";" | "unreach" |
4931183Speter	     "unreach" "{" unreachtype "}" ";" | "squench" | "redir" |
5031183Speter	     "redir" "{" redirtype "}" ";" | "echo" "{" echoopts "}" ";" |
5131183Speter	     "echo" | "routerad" | "routersol" | "timex" |
5231183Speter	     "timex" "{" timextype "}" ";" | "paramprob" |
5331183Speter	     "paramprob" "{" parapptype "}" ";" | "timest" | "timestrep" |
5431183Speter	     "inforeq" | "inforep" | "maskreq" | "maskrep" .
5531183Speter
5631183Speterechoopts ::= echoopts [ icmpechoopts ] .
5731183Speterunreachtype ::= "net-unr" | "host-unr" | "proto-unr" | "port-unr" |
5831183Speter	     "needfrag" | "srcfail" | "net-unk" | "host-unk" | "isolate" |
5931183Speter	     "net-prohib" | "host-prohib" | "net-tos" | "host-tos" |
6031183Speter	     "filter-prohib" | "host-preced" | "cutoff-preced" .
6131183Speterredirtype ::= "net-redir" | "host-redir" | "tos-net-redir" |
6231183Speter	      "tos-host-redir" .
6331183Spetertimextype ::= "intrans" | "reass" .
6431183Speterparamptype ::= "optabsent" .
6531183Speter
6631183Speterdata	::= "data" "{" databodyopts "}" ";" .
6731183Speterdatabodyopts ::= "len" number | "value" string | "file" filename .
6831183Speter
6931183Spetericmpechoopts ::= "icmpseq" number | "icmpid" number .
70