+static void append_iovec(sd_bus_message *m, const void *p, size_t sz) {
+ assert(m);
+ assert(p);
+ assert(sz > 0);
+
+ m->iovec[m->n_iovec].iov_base = (void*) p;
+ m->iovec[m->n_iovec].iov_len = sz;
+ m->n_iovec++;
+}
+
+static void bus_message_setup_iovec(sd_bus_message *m) {
+ assert(m);
+ assert(m->sealed);
+
+ if (m->n_iovec > 0)
+ return;
+
+ append_iovec(m, m->header, sizeof(*m->header));
+
+ if (m->fields)
+ append_iovec(m, m->fields, ALIGN8(m->header->fields_size));
+
+ if (m->body)
+ append_iovec(m, m->body, m->header->body_size);
+}
+