コード例 #1
0
ファイル: sim-socket.c プロジェクト: ckw1375/mptcp
ssize_t sim_sock_sendmsg (struct SimSocket *socket, const struct msghdr *msg, int flags)
{
  struct socket *kernel_socket = (struct socket *)socket;
  struct iovec *kernel_iov = copy_iovec (msg->msg_iov, msg->msg_iovlen);
  struct msghdr kernel_msg = *msg;
  kernel_msg.msg_flags = flags;
  kernel_msg.msg_iov = kernel_iov;
  int retval = sock_sendmsg (kernel_socket, &kernel_msg, iov_size (msg));
  sim_free (kernel_iov);
  return retval;
}
コード例 #2
0
ファイル: wpdu.cpp プロジェクト: helixum/wow-cata
wpdu::wpdu(const iovec& iov): valid_flag_(0),comm_len(MAX_COMM_STR_LEN)
{
  community_name[0] = 0;
   reset_iov(iovec_);
   version_ = version1;         // TODO: figure where this should come from
   ACE_NEW(iovec_.iov_base, char[iov.iov_len]);
   if (!iovec_.iov_base) {
     valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL;
     return;
   }

   copy_iovec(iovec_, iov);
   valid_flag_ = SNMP_CLASS_SUCCESS;
}
コード例 #3
0
ファイル: sim-socket.c プロジェクト: ckw1375/mptcp
ssize_t sim_sock_recvmsg (struct SimSocket *socket, struct msghdr *msg, int flags)
{
  struct socket *kernel_socket = (struct socket *)socket;
  struct iovec *kernel_iov = copy_iovec (msg->msg_iov, msg->msg_iovlen);
  struct iovec *user_iov = msg->msg_iov;
  struct cmsghdr *user_cmsgh = msg->msg_control;
  size_t user_cmsghlen = msg->msg_controllen;
  msg->msg_iov = kernel_iov;
  int retval = sock_recvmsg (kernel_socket, msg, iov_size (msg), flags);
  msg->msg_iov = user_iov;
  msg->msg_control = user_cmsgh;
  msg->msg_controllen = user_cmsghlen - msg->msg_controllen;
  sim_free (kernel_iov);
  return retval;
}