code: def matches(self, filter, layer=Layer.NETWORK):
          
          buff, buff_ = self.__to_buffers()
          return windivert_dll.WinDivertHelperEvalFilter(filter.encode(), layer, ctypes.byref(buff_), len(self.raw),
                                                         ctypes.byref(self.wd_addr))
docs: Evaluates the packet against the given packet filter string.
  
          The remapped function is::
  
              BOOL WinDivertHelperEvalFilter(
                  __in const char *filter,
                  __in WINDIVERT_LAYER layer,
                  __in PVOID pPacket,
                  __in UINT packetLen,
                  __in PWINDIVERT_ADDRESS pAddr
              );
  
          See: https://reqrypt.org/windivert-doc.html#divert_helper_eval_filter
  
          :param filter: The filter string.
          :param layer: The network layer.
          :return: True if the packet matches, and False otherwise.