Version: 1
-Previous: 7786e30f03ce0c0c8895fa2f58ee08de97a99494
-Head: 00095fe2fef92d5856f103acf87321105c01d457
+Previous: 9cb8074a9c8ef7061e439379b59d0c63447e93ce
+Head: cb4fb055f5c87b97226d1e47240c58cf25f0a271
Applied:
librdmacm-fixed-build-problem-: c6bfc1c5b15e6207188a97e8a5df0405cfd2587f
dsocket: 00095fe2fef92d5856f103acf87321105c01d457
+ refresh-temp: cb4fb055f5c87b97226d1e47240c58cf25f0a271
Unapplied:
test-udp: f6c78ad2a26f452cf166aff1baa7b76160bd8bf7
iom-dbg: 88434072d07f8edc58f454ac954d78bd39441eed
--- /dev/null
+Bottom: 6800649e940a6a3669cefc3c017533f9a40e63d0
+Top: 8e7e91c54177aff763fd2a822f66f4299671cd81
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-12-03 12:42:45 -0800
+
+Refresh of dsocket
+
+---
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index f62fe90..63bb225 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -354,6 +354,9 @@ struct ds_udp_header {
+ } addr;
+ };
+
++#define DS_UDP_IPV4_HDR_LEN 16
++#define DS_UDP_IPV6_HDR_LEN 28
++
+ #define ds_next_qp(qp) container_of((qp)->list.next, struct ds_qp, list)
+
+ static void ds_insert_qp(struct rsocket *rs, struct ds_qp *qp)
+@@ -2486,11 +2489,18 @@ static ssize_t ds_sendv_udp(struct rsocket *rs, const struct iovec *iov,
+ if (iovcnt > 8)
+ return ERR(ENOTSUP);
+
+- hdr.tag = htonll(DS_UDP_TAG);
++ hdr.tag = htonl(DS_UDP_TAG);
+ hdr.version = 1;
+ hdr.op = op;
+- memset(&hdr->reserved, 0, sizeof hdr->reserved);
++ hdr.reserved = 0;
+ hdr.qpn = htonl(rs->conn_dest->qp->cm_id->qp->qp_num & 0xFFFFFF);
++ if (rs->conn_dest->qp->hdr.version == 4) {
++ hdr.length = DS_UDP_IPV4_HDR_LEN;
++ hdr.addr.ipv4 = rs->conn_dest->qp->hdr.addr.ipv4;
++ } else {
++ hdr.length = DS_UDP_IPV6_HDR_LEN;
++ memcpy(hdr.addr.ipv6.addr, rs->conn_dest->qp->hdr.addr.ipv6.addr, 16);
++ }
+
+ miov[0].iov_base = &hdr;
+ miov[0].iov_len = sizeof hdr;