Version: 1
-Previous: f4789fce029417f5b42b70d44909eaccd60c009b
-Head: f88a811e7d0631b6a4396e9797bd971ddb8aa1ee
+Previous: 614e1e26ce4bfbe85464f4b0943846585f927136
+Head: a71c8b60bc12c2c1023c7caac295e868fdf57022
Applied:
rs-man: dba7b4833fd1208813028483451d389cbeecf02a
v6only: f88a811e7d0631b6a4396e9797bd971ddb8aa1ee
+ refresh-temp: a71c8b60bc12c2c1023c7caac295e868fdf57022
Unapplied:
rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
ip6-opt: 7e43a759255e9890d1e41f1edf71792836f53941
--- /dev/null
+Bottom: b2be28c058bcea1f57039dd4966c64ac692e6bfa
+Top: 44f8f1d4ce3fc0356402ae05bbe8b63c973a4865
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-06-12 12:43:39 -0700
+
+Refresh of v6only
+
+---
+
+diff --git a/include/rdma/rdma_cma.h b/include/rdma/rdma_cma.h
+index c0f83b1..1487f8f 100755
+--- a/include/rdma/rdma_cma.h
++++ b/include/rdma/rdma_cma.h
+@@ -650,6 +650,7 @@ enum {
+ enum {
+ RDMA_OPTION_ID_TOS = 0, /* uint8_t: RFC 2474 */
+ RDMA_OPTION_ID_REUSEADDR = 1, /* int: ~SO_REUSEADDR */
++ RDMA_OPTION_ID_AFONLY = 2, /* int: ~IPV6_V6ONLY */
+ RDMA_OPTION_IB_PATH = 1 /* struct ibv_path_data[] */
+ };
+
+diff --git a/src/rsocket.c b/src/rsocket.c
+index a3c2c6a..860c63e 100644
+--- a/src/rsocket.c
++++ b/src/rsocket.c
+@@ -161,6 +161,7 @@ struct rsocket {
+ long fd_flags;
+ uint64_t so_opts;
+ uint64_t tcp_opts;
++ uint64_t ipv6_opts;
+ enum rs_state state;
+ int cq_armed;
+ int retries;
+@@ -1817,6 +1818,18 @@ int rsetsockopt(int socket, int level, int optname,
+ break;
+ }
+ break;
++ case IPPROTO_IPV6:
++ opts = &rs->ipv6_opts;
++ switch (optname) {
++ case IPV6_V6ONLY:
++ ret = rdma_set_option(rs->cm_id, RDMA_OPTION_ID,
++ RDMA_OPTION_ID_AFONLY,
++ (void *) optval, optlen);
++ opt_on = *(int *) optval;
++ break;
++ default:
++ break;
++ }
+ case SOL_RDMA:
+ if (rs->state > rs_listening) {
+ ret = ERR(EINVAL);
+@@ -1910,6 +1923,16 @@ int rgetsockopt(int socket, int level, int optname,
+ break;
+ }
+ break;
++ case IPPROTO_IPV6:
++ switch (optname) {
++ case IPV6_V6ONLY:
++ *((int *) optval) = !!(rs->ipv6_opts & (1 << optname));
++ *optlen = sizeof(int);
++ break;
++ default:
++ ret = ENOTSUP;
++ break;
++ }
+ case SOL_RDMA:
+ switch (optname) {
+ case RDMA_SQSIZE: