support udp socket connect (#1526)

This commit is contained in:
Buke Po
2017-03-29 21:04:35 -07:00
committed by Jonathan Hui
parent 812cc838eb
commit 98795b6c60
5 changed files with 47 additions and 0 deletions
+21
View File
@@ -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
*
*/
+6
View File
@@ -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);
+5
View File
@@ -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());
+6
View File
@@ -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;
+9
View File
@@ -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.
*