IP4 Router Alert option handling for IGMP

and a new ip4-options node, inserted between ip4-input and ip4-punt,
that checks for IP-router-alert option + IGMP combination and sends
the packet to the ip4-local. This is required because some IGMP
packets are sent to the group address and not the all-routers address.
All IGMP packets are sent with the router alert option.

Change-Id: I01f478d4d98ac9f806e0bcba0f6da6e4e7d26e2a
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/test/test_igmp.py b/test/test_igmp.py
index e741e6b..22b6d2f 100644
--- a/test/test_igmp.py
+++ b/test/test_igmp.py
@@ -51,7 +51,11 @@
 
         # hos sends join IGMP 'join'
         p_join = (Ether(dst=self.pg0.local_mac, src=self.pg0.remote_mac) /
-                  IP(src=self.pg0.remote_ip4, dst='224.0.0.22', tos=0xc0) /
+                  IP(src=self.pg0.remote_ip4, dst='224.0.0.22',
+                     tos=0xc0, ttl=1,
+                     options=IPOption(copy_flag=1, optclass=0,
+                                      option="router_alert",
+                                      length=2, value=0)) /
                   IGMPv3() /
                   IGMPv3mr(numgrp=1) /
                   IGMPv3gr(rtype=3, maddr="224.1.1.1", srcaddrs=["10.1.1.1"]))