code: def open(self):
          
          if self.is_open:
              raise RuntimeError("WinDivert handle is already open.")
          self._handle = windivert_dll.WinDivertOpen(self._filter, self._layer, self._priority,
                                                     self._flags)
docs: Opens a WinDivert handle for the given filter.
          Unless otherwise specified by flags, any packet that matches the filter will be diverted to the handle.
          Diverted packets can be read by the application with receive().
  
          The remapped function is WinDivertOpen::
  
              HANDLE WinDivertOpen(
                  __in const char *filter,
                  __in WINDIVERT_LAYER layer,
                  __in INT16 priority,
                  __in UINT64 flags
              );
  
          For more info on the C call visit: http://reqrypt.org/windivert-doc.html#divert_open