adding igmp query support
diff --git a/olt.py b/olt.py
index 664365a..843f92f 100644
--- a/olt.py
+++ b/olt.py
@@ -113,6 +113,12 @@
verify_packet_in(self, pkt, of_port, ofp.OFPR_ACTION)
verify_packets(self, pkt, [])
+def buildIgmp(payload):
+ ether = scapy.Ether(src="00:01:02:03:04:05")
+ ip = scapy.IP(src="1.2.3.4")
+ payload.igmpize(ip, ether)
+ return ether / ip / payload
+
class EapolPacketIn(base_tests.SimpleDataPlane):
"""Verify packet-ins are sent for EAPOL packets """
@@ -160,6 +166,31 @@
testPacketIn(self, match, pkt)
+class IGMPQueryPacketOut(base_tests.SimpleDataPlane):
+
+ """Verify sending multicast membership queries down to onu_ports"""
+
+ def runTest(self):
+ logging.info("Running IGMP query packet out")
+
+ igmp = scapy.IGMP(type = 0x11, gaddr = "224.0.0.1")
+ pkt = buildIgmp(igmp)
+
+ msg = ofp.message.packet_out()
+ msg.in_port = ofp.OFPP_CONTROLLER
+ #msg.buffer_id = 0xffffffff
+ msg.data = str(pkt)
+ msg.actions = [ofp.action.output(
+ port=onu_port,
+ max_len=ofp.OFPCML_NO_BUFFER)]
+ time.sleep(1)
+
+ self.controller.message_send(msg)
+
+ verify_no_errors(self.controller)
+
+ verify_packet(self, pkt, onu_port)
+
class TestMeter(base_tests.SimpleDataPlane):
def runTest(self):