+ const struct SetVT *vt;
+
+ /**
+ * Channel to the peer.
+ */
+ struct GNUNET_CADET_Channel *channel;
+
+ /**
+ * Port this operation runs on.
+ */
+ struct Listener *listener;
+
+ /**
+ * Message queue for the channel.
+ */
+ struct GNUNET_MQ_Handle *mq;
+
+ /**
+ * Detail information about the set operation, including the set to
+ * use. When 'spec' is NULL, the operation is not yet entirely
+ * initialized.
+ */
+ struct OperationSpecification *spec;
+
+ /**
+ * Operation-specific operation state. Note that the exact
+ * type depends on this being a union or intersection operation
+ * (and thus on @e vt).
+ */
+ struct OperationState *state;
+
+ /**
+ * Evaluate operations are held in a linked list.
+ */
+ struct Operation *next;
+
+ /**
+ * Evaluate operations are held in a linked list.
+ */
+ struct Operation *prev;
+
+ /**
+ * The identity of the requesting peer. Needs to
+ * be stored here as the op spec might not have been created yet.
+ */
+ struct GNUNET_PeerIdentity peer;
+
+ /**
+ * Timeout task, if the incoming peer has not been accepted
+ * after the timeout, it will be disconnected.
+ */
+ struct GNUNET_SCHEDULER_Task *timeout_task;
+
+ /**
+ * Unique request id for the request from a remote peer, sent to the
+ * client, which will accept or reject the request. Set to '0' iff
+ * the request has not been suggested yet.
+ */
+ uint32_t suggest_id;
+
+ /**
+ * #GNUNET_YES if this is not a "real" set operation yet, and we still
+ * need to wait for the other peer to give us more details.
+ */
+ int is_incoming;
+
+ /**
+ * Generation in which the operation handle
+ * was created.
+ */
+ unsigned int generation_created;
+
+ /**
+ * Incremented whenever (during shutdown) some component still
+ * needs to do something with this before the operation is freed.
+ * (Used as a reference counter, but only during termination.)
+ */
+ unsigned int keep;