code: def packet_in_handler(self, evt):
          
          msg = evt.msg
          dpid = msg.datapath.id
  
          req_pkt = packet.Packet(msg.data)
          req_igmp = req_pkt.get_protocol(igmp.igmp)
          if req_igmp:
              if self._querier.dpid == dpid:
                  self._querier.packet_in_handler(req_igmp, msg)
              else:
                  self._snooper.packet_in_handler(req_pkt, req_igmp, msg)
          else:
              self.send_event_to_observers(EventPacketIn(msg))
docs: PacketIn event handler. when the received packet was IGMP,
          proceed it. otherwise, send a event.