otError Udp::RemoveSocket(UdpSocket &aSocket) { if (mSockets == &aSocket) { mSockets = mSockets->GetNext(); } else { for (UdpSocket *socket = mSockets; socket; socket = socket->GetNext()) { if (socket->GetNext() == &aSocket) { socket->SetNext(aSocket.GetNext()); break; } } } aSocket.SetNext(NULL); return OT_ERROR_NONE; }
otError Udp::AddSocket(UdpSocket &aSocket) { for (UdpSocket *cur = mSockets; cur; cur = cur->GetNext()) { if (cur == &aSocket) { ExitNow(); } } aSocket.SetNext(mSockets); mSockets = &aSocket; exit: return OT_ERROR_NONE; }