Logo Search packages:      
Sourcecode: g2ipmsg version File versions  Download package

static int ipmsg_send_recv_msg ( const udp_con_t *  con,
const msg_data_t *  orig_msg 
) [static]

IPMSGのIPMSG_RECVMSGを送出する.

Parameters:
[in] con UDPコネクション情報
[in] orig_msg 受信したメッセージのメッセージ情報
Return values:
0 正常終了
-EINVAL 引数異常
Attention:
内部リンケージ

Definition at line 458 of file protocol.c.

References ipmsg_notify_number().

Referenced by ipmsg_proc_send_msg().

                                                                     {
      const char             *ipaddr = NULL;
      int                         rc = 0;
      size_t                     len = 0;
      pktno_t             packet_num = 0;
      ipmsg_send_flags_t local_flags = 0;

      if ( (con == NULL) || (orig_msg == NULL) ) {
            rc = -EINVAL;
            goto error_out;
      }

      /*
       * フラグを設定する
       */
      local_flags = (IPMSG_RECVMSG|IPMSG_AUTORETOPT);
      
      /*
       * ピアのIPアドレスを参照する
       */
      ipaddr = udp_get_peeraddr(con);
      if (ipaddr == NULL) {
            rc = -ENOENT;
            goto error_out;
      }

      /*
       * 送信されたパケット番号を取得
       */
      packet_num = refer_pkt_no_name_from_msg(orig_msg);
      dbg_out("Send recv packet : (ipaddr, pktno) = (%s, %d)\n", 
          ipaddr, packet_num);

      /*
       * パケット送信
       */
      rc = ipmsg_notify_number(con, ipaddr , local_flags, packet_num);
      if (rc != 0) {
            goto error_out;
      }

      rc = 0; /* 正常終了 */

error_out:
      return rc;
}


Generated by  Doxygen 1.6.0   Back to index