+static void transport_resolve_complete(struct site *st,
+ const struct comm_addr *ca_use) {
+ transport_peers_expire(st,&st->peers);
+ transport_record_peers(st,&st->peers,ca_use,1,"resolved data");
+ transport_peers_expire(st,&st->setup_peers);
+ transport_record_peers(st,&st->setup_peers,ca_use,1,"resolved setup");
+}
+
+static void transport_resolve_complete_tardy(struct site *st,
+ const struct comm_addr *ca_use) {
+ transport_peers_expire(st,&st->peers);
+ transport_record_peers(st,&st->peers,ca_use,1,"resolved tardily");
+}
+
+static void transport_peers__copy_by_mask(transport_peer *out, int *nout_io,
+ unsigned mask,
+ const transport_peers *inp) {
+ /* out and in->peers may be the same region, or nonoverlapping */
+ const transport_peer *in=inp->peers;
+ int slot;
+ for (slot=0; slot<inp->npeers; slot++) {
+ if (!(mask & (1U << slot)))
+ continue;
+ if (!(out==in && slot==*nout_io))
+ COPY_OBJ(out[*nout_io], in[slot]);
+ (*nout_io)++;
+ }
+}
+