hdr.version = 0;
hdr.type = cmd;
- hdr.seq = seq;
- hdr.peer = peer;
+ hdr.seq = cpu_to_be16(seq);
+ hdr.peer = cpu_to_be32(peer);
if (!msg) {
blob_buf_init(&b, 0);
return false;
}
+ hdrbuf.hdr.seq = be16_to_cpu(hdrbuf.hdr.seq);
+ hdrbuf.hdr.peer = be32_to_cpu(hdrbuf.hdr.peer);
+
if (!ubus_validate_hdr(&hdrbuf.hdr))
return false;
}
if (offset < sizeof(ub->hdr)) {
- iov[0].iov_base = ((char *) &ub->hdr) + offset;
- iov[0].iov_len = sizeof(ub->hdr) - offset;
+ struct ubus_msghdr hdr;
+
+ hdr.version = ub->hdr.version;
+ hdr.type = ub->hdr.type;
+ hdr.seq = cpu_to_be16(ub->hdr.seq);
+ hdr.peer = cpu_to_be32(ub->hdr.peer);
+
+ iov[0].iov_base = ((char *) &hdr) + offset;
+ iov[0].iov_len = sizeof(hdr) - offset;
iov[1].iov_base = (char *) ub->data;
iov[1].iov_len = ub->len;
if (!cl->pending_msg)
goto disconnect;
+ cl->hdrbuf.hdr.seq = be16_to_cpu(cl->hdrbuf.hdr.seq);
+ cl->hdrbuf.hdr.peer = be32_to_cpu(cl->hdrbuf.hdr.peer);
+
memcpy(&cl->pending_msg->hdr, &cl->hdrbuf.hdr, sizeof(cl->hdrbuf.hdr));
memcpy(cl->pending_msg->data, &cl->hdrbuf.data, sizeof(cl->hdrbuf.data));
}