static void ds_format_hdr(struct ds_header *hdr, union socket_addr *addr)
{
if (addr->sa.sa_family == AF_INET) {
- PRINTADDR(addr);
+// PRINTADDR(addr);
hdr->version = 4;
hdr->length = DS_IPV4_HDR_LEN;
hdr->port = addr->sin.sin_port;
struct epoll_event event;
int i, ret;
- PRINTADDR(src_addr);
+// PRINTADDR(src_addr);
qp = calloc(1, sizeof(*qp));
if (!qp)
return ERR(ENOMEM);
struct ds_dest **tdest, *new_dest;
int ret = 0;
- PRINTADDR(addr);
+// PRINTADDR(addr);
fastlock_acquire(&rs->map_lock);
tdest = tfind(addr, &rs->dest_map, ds_compare_addr);
if (tdest)
}
fastlock_acquire(&rs->slock);
- PRINTADDR(addr);
+// PRINTADDR(addr);
ret = connect(rs->udp_sock, addr, addrlen);
if (!ret)
ret = ds_get_dest(rs, addr, addrlen, &rs->conn_dest);
struct ds_header *hdr;
hdr = (struct ds_header *) (qp->rbuf + ds_wr_offset(wc->wr_id));
- return ((wc->byte_len >= sizeof(struct ibv_grh) + sizeof(*hdr)) &&
+ return ((wc->byte_len >= sizeof(struct ibv_grh) + DS_IPV4_HDR_LEN) &&
((hdr->version == 4 && hdr->length == DS_IPV4_HDR_LEN) ||
(hdr->version == 6 && hdr->length == DS_IPV6_HDR_LEN)));
}
if (ds_wr_is_recv(wc.wr_id)) {
if (rs->rqe_avail && wc.status == IBV_WC_SUCCESS &&
ds_valid_recv(qp, &wc)) {
+ printf("%s recv over QP\n", __func__);
rs->rqe_avail--;
rmsg = &rs->dmsg[rs->rmsg_tail];
rmsg->qp = qp;
} else {
smsg = (struct ds_smsg *)
(rs->sbuf + ds_wr_offset(wc.wr_id));
- printf("%s send smsg %p free %p\n", __func__, smsg, rs->smsg_free);
+// printf("%s send smsg %p free %p\n", __func__, smsg, rs->smsg_free);
smsg->next = rs->smsg_free;
rs->smsg_free = smsg;
rs->sqe_avail++;
struct ds_header *hdr;
int ret;
- printf("%s \n", __func__);
+// printf("%s \n", __func__);
if (!(rs->state & rs_readable))
return ERR(EINVAL);
if (!rs_have_rdata(rs)) {
- printf("%s need rdata \n", __func__);
+// printf("%s need rdata \n", __func__);
ret = ds_get_comp(rs, rs_nonblocking(rs, flags),
rs_have_rdata);
- printf("%s ret %d errno %s\n", __func__, ret, strerror(errno));
+// printf("%s ret %d errno %s\n", __func__, ret, strerror(errno));
if (ret)
return ret;
}
if (addrlen)
{
ds_set_src(src_addr, addrlen, hdr);
-PRINTADDR(src_addr);
+//PRINTADDR(src_addr);
}
if (!(flags & MSG_PEEK)) {
rs->rmsg_head = 0;
}
- printf("%s ret %d errno %s\n", __func__, ret, strerror(errno));
+// printf("%s ret %d errno %s\n", __func__, ret, strerror(errno));
return len;
}
msg.msg_iovlen = iovcnt + 1;
// printf("%s iov cnt %d\n", __func__, msg.msg_iovlen);
ret = sendmsg(rs->udp_sock, &msg, flags);
- return ret > 0 ? ret - sizeof hdr : ret;
+ return ret > 0 ? ret - hdr.length : ret;
}
static ssize_t ds_send_udp(struct rsocket *rs, const void *buf, size_t len,
struct rsocket *rs;
int ret;
- PRINTADDR(dest_addr);
- printf("%s sendto data 0x%x\n", __func__, *((uint32_t*)buf));
+// PRINTADDR(dest_addr);
+// printf("%s sendto data 0x%x\n", __func__, *((uint32_t*)buf));
rs = idm_at(&idm, socket);
if (rs->type == SOCK_STREAM) {
if (dest_addr || addrlen)