Value Required INTERFACE (\S+)
Value LINK_STATUS (\S+)
Value PROTOCOL (\S+)
Value PROTOCOL_STATUS (\S+)
Value VRF (\S+)
Value VRF_ID (\S+)
Value IP_ADDRESS (\S+?)
Value List SEC_IP_ADDRESS (\S+?)
Value PREFIX_LENGTH (\d*)
Value List SEC_PREFIX_LENGTH (\d*)
Value MTU (\d+)
Value IP_MTU (\d+)
Value List MULTICAST_GROUPS (\d+\.\d+\.\d+\.\d+)
Value OUT_ACL (.*)
Value IN_ACL (.*)
Value RPF_CHECK (\S+)


Start
  ^(Mon?)|(Tue?)|(Wed?)|(Thu?)|(Fri?)|(Sat?)|(Sun?)\s.*$$
  ^\S+\s+is -> Continue.Record
  ^${INTERFACE}\sis\s${LINK_STATUS},\s+${PROTOCOL}\sprotocol\sis\s${PROTOCOL_STATUS}.*$$
  ^\s+Vrf\s+is\s+${VRF}\s+\(vrfid\s+${VRF_ID}\)
  ^\s+Internet\s+address\s+is\s+${IP_ADDRESS}/?${PREFIX_LENGTH}\s*$$
  ^\s+Secondary\s+address\s+${SEC_IP_ADDRESS}/?${SEC_PREFIX_LENGTH}\s*$$
  ^\s+Interface\s+is\s+unnumbered\S*
  ^\s+MTU\s+is\s+${MTU}\s+\(${IP_MTU}\s+is\s+available\s+to\s+IP\)
  ^\s+Helper.*$$
  ^\s+Multicast\s+reserved\s+groups\s+joined\:\s+${MULTICAST_GROUPS} -> Continue
  ^\s+Multicast\s+reserved\s+groups\s+joined\:\s+\S+\s+${MULTICAST_GROUPS} -> Continue
  ^\s+Multicast\s+reserved\s+groups\s+joined\:\s+\S+\s+\S+\s+${MULTICAST_GROUPS} -> Continue
  ^\s+Multicast\s+reserved\s+groups\s+joined\: -> MULTICAST
  ^\s+Internet\s+protocol.*$$
  ^\s+Directed.*$$
  ^\s+Outgoing\s+access\s+list\s+is\s+${OUT_ACL}
  ^\s+Inbound\s+(?:common)?\s+access\s+list\s+is\s+${IN_ACL}
  ^\s+Proxy.*$$
  ^\s+ARP\s+EVPN.*$$
  ^\s+ICMP\s+redirects.*$$
  ^\s+ICMP\s+unreachables.*$$
  ^\s+ICMP\s+mask.*$$
  ^\s+Table.*$$
  ^\s+mLACP.*$$
  ^IP\s+unicast\s+RPF\s+check\s+is\s+${RPF_CHECK}
  ^RPF\s+mode.*$$
  ^\s*$$
  ^. -> Error

MULTICAST
  ^\s+${MULTICAST_GROUPS}\s*$$ -> Start
  ^\s+(?:\S+\s+){0}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){1}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){2}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){3}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){4}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){5}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){6}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){7}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){8}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){9}${MULTICAST_GROUPS} -> Continue
  ^\s+(?:\S+\s+){10}${MULTICAST_GROUPS} -> Continue
  ^.* -> Start
  ^. -> Error MULTICAST
