mirror of
https://github.com/espressif/openthread.git
synced 2026-07-30 07:37:46 +00:00
support udp socket connect (#1526)
This commit is contained in:
@@ -99,6 +99,7 @@ otMessage *otUdpNewMessage(otInstance *aInstance, bool aLinkSecurityEnabled);
|
||||
* @sa otUdpNewMessage
|
||||
* @sa otUdpClose
|
||||
* @sa otUdpBind
|
||||
* @sa otUdpConnect
|
||||
* @sa otUdpSend
|
||||
*
|
||||
*/
|
||||
@@ -114,6 +115,7 @@ ThreadError otUdpOpen(otInstance *aInstance, otUdpSocket *aSocket, otUdpReceive
|
||||
* @sa otUdpNewMessage
|
||||
* @sa otUdpOpen
|
||||
* @sa otUdpBind
|
||||
* @sa otUdpConnect
|
||||
* @sa otUdpSend
|
||||
*
|
||||
*/
|
||||
@@ -129,12 +131,30 @@ ThreadError otUdpClose(otUdpSocket *aSocket);
|
||||
*
|
||||
* @sa otUdpNewMessage
|
||||
* @sa otUdpOpen
|
||||
* @sa otUdpConnect
|
||||
* @sa otUdpClose
|
||||
* @sa otUdpSend
|
||||
*
|
||||
*/
|
||||
ThreadError otUdpBind(otUdpSocket *aSocket, otSockAddr *aSockName);
|
||||
|
||||
/**
|
||||
* Connect a UDP/IPv6 socket.
|
||||
*
|
||||
* @param[in] aSocket A pointer to a UDP socket structure.
|
||||
* @param[in] aSockName A pointer to an IPv6 socket address structure.
|
||||
*
|
||||
* @retval kThreadErrorNone Connect operation was successful.
|
||||
*
|
||||
* @sa otUdpNewMessage
|
||||
* @sa otUdpOpen
|
||||
* @sa otUdpBind
|
||||
* @sa otUdpClose
|
||||
* @sa otUdpSend
|
||||
*
|
||||
*/
|
||||
ThreadError otUdpConnect(otUdpSocket *aSocket, otSockAddr *aSockName);
|
||||
|
||||
/**
|
||||
* Send a UDP/IPv6 message.
|
||||
*
|
||||
@@ -146,6 +166,7 @@ ThreadError otUdpBind(otUdpSocket *aSocket, otSockAddr *aSockName);
|
||||
* @sa otUdpOpen
|
||||
* @sa otUdpClose
|
||||
* @sa otUdpBind
|
||||
* @sa otUdpConnect
|
||||
* @sa otUdpSend
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -91,6 +91,12 @@ ThreadError otUdpBind(otUdpSocket *aSocket, otSockAddr *aSockName)
|
||||
return socket->Bind(*static_cast<const Ip6::SockAddr *>(aSockName));
|
||||
}
|
||||
|
||||
ThreadError otUdpConnect(otUdpSocket *aSocket, otSockAddr *aSockName)
|
||||
{
|
||||
Ip6::UdpSocket *socket = static_cast<Ip6::UdpSocket *>(aSocket);
|
||||
return socket->Connect(*static_cast<const Ip6::SockAddr *>(aSockName));
|
||||
}
|
||||
|
||||
ThreadError otUdpSend(otUdpSocket *aSocket, otMessage *aMessage, const otMessageInfo *aMessageInfo)
|
||||
{
|
||||
Ip6::UdpSocket *socket = static_cast<Ip6::UdpSocket *>(aSocket);
|
||||
|
||||
@@ -115,6 +115,11 @@ void SecureServer::Receive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
|
||||
|
||||
if (!mNetif.GetDtls().IsStarted())
|
||||
{
|
||||
Ip6::SockAddr sockAddr;
|
||||
sockAddr.mAddress = aMessageInfo.GetPeerAddr();
|
||||
sockAddr.mPort = aMessageInfo.GetPeerPort();
|
||||
mSocket.Connect(sockAddr);
|
||||
|
||||
mPeerAddress.SetPeerAddr(aMessageInfo.GetPeerAddr());
|
||||
mPeerAddress.SetPeerPort(aMessageInfo.GetPeerPort());
|
||||
|
||||
|
||||
@@ -69,6 +69,12 @@ ThreadError UdpSocket::Bind(const SockAddr &aSockAddr)
|
||||
return kThreadError_None;
|
||||
}
|
||||
|
||||
ThreadError UdpSocket::Connect(const SockAddr &aSockAddr)
|
||||
{
|
||||
mPeerName = aSockAddr;
|
||||
return kThreadError_None;
|
||||
}
|
||||
|
||||
ThreadError UdpSocket::Close(void)
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
|
||||
@@ -102,6 +102,15 @@ public:
|
||||
*/
|
||||
ThreadError Bind(const SockAddr &aSockAddr);
|
||||
|
||||
/**
|
||||
* This method connects the UDP socket.
|
||||
*
|
||||
* @param[in] aSockAddr A reference to the socket address.
|
||||
*
|
||||
* @retval kThreadError_None Successfully connected the socket.
|
||||
*/
|
||||
ThreadError Connect(const SockAddr &aSockAddr);
|
||||
|
||||
/**
|
||||
* This method closes the UDP socket.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user