code: def recv(self, packet, interface):
          
          # the packet is piped into the first filter, then the result of that into the second filter, etc.
          for f in self.filters:
              if not packet:
                  break
              packet = f.tr(packet, interface)
          if packet:
              # if the packet wasn't dropped by a filter, log the recv and place it in the interface's inq
              # self.log("IN      ", str(interface).ljust(30), packet.decode())
              self.inq[interface].put(packet)
docs: run incoming packet through the filters, then place it in its inq