nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

इस क्लास के ऑब्जेक्ट, ऐसे आईपी प्रोटोकॉल एंडपॉइंट दिखाते हैं जिन्हें तुरंत इंस्टॉल नहीं किया जा सकता.

खास जानकारी

इनहेरिटेंस

इनसे इनहेरिट की गई: nl::Inet::EndPointBasis
सीधे तौर पर पता लगाई गई सबक्लास:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

सार्वजनिक टाइप

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
enum
मौजूदा एंडपॉइंट की बुनियादी डाइनैमिक स्थिति.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
ट्रांसमिट करने के विकल्प, SendMsg तरीके के लिए फ़्लैग करते हैं.
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
मैसेज टेक्स्ट रिसेप्शन इवेंट हैंडलिंग फ़ंक्शन का टाइप.
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
रिसेप्शन की गड़बड़ी को इवेंट हैंडल करने के फ़ंक्शन का टाइप.

सार्वजनिक एट्रिब्यूट

OnMessageReceived
एंडपॉइंट के मैसेज रिसेप्शन का इवेंट हैंडलिंग का फ़ंक्शन डेलिगेट.
OnReceiveError
एंडपॉइंट से मिली गड़बड़ी को हैंडल करने वाला फ़ंक्शन डेलिगेट.
mState
enum nl::Inet::IPEndPointBasis::@8
मौजूदा एंडपॉइंट की बुनियादी डाइनैमिक स्थिति.

सुरक्षित एट्रिब्यूट

mBoundIntfId
InterfaceId

सार्वजनिक फ़ंक्शन

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
किसी आईपी मल्टीकास्ट ग्रुप में शामिल हों.
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
कोई आईपी मल्टीकास्ट ग्रुप छोड़ें.
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
सेट करें कि आईपी मल्टीकास्ट ट्रैफ़िक को लूप बैक किया जाना चाहिए या नहीं.

सुरक्षित किए गए फ़ंक्शन

Bind(IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
BindInterface(IPAddressType aAddressType, InterfaceId aInterfaceId)
GetSocket(IPAddressType aAddressType, int aType, int aProtocol)
HandleDataReceived(Weave::System::PacketBuffer *aBuffer)
void
HandlePendingIO(uint16_t aPort)
void
Init(InetLayer *aInetLayer)
void
PrepareIO(void)
SendMsg(const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)

सार्वजनिक स्टैटिक फ़ंक्शन

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

सुरक्षित स्टैटिक फ़ंक्शन

GetPacketInfo(Weave::System::PacketBuffer *buf)
LwIP आईपी लेयर के सोर्स और डेस्टिनेशन के पते की जानकारी पाएं.

सार्वजनिक टाइप

@8

 @8

मौजूदा एंडपॉइंट की बुनियादी डाइनैमिक स्थिति.

ऑब्जेक्ट को "तैयार" स्थिति में शुरू किया जाता है. किसी लोकल इंटरफ़ेस पते से बाइंड करने के बाद, "बाउंड" स्थिति पर जाएं. इसके बाद, जब आईसीएमपी मैसेज पाने के लिए इवेंट को हैंडल करने के लिए रजिस्टर करना जारी रखें, तब "सुनना" स्थिति पर जाएं.

ध्यान दें: पुराने तरीके से बाइनरी के साथ काम करने की वजहों के लिए, kBasisState_Closed स्टेट इन्यूरेशन को kState_Ready पर मैप किया जाता है. मौजूदा kState_Closed, "अभी तक नहीं खोला गया" और "पहले खोला गया अब बंद हो गया है" के बीच के अंतर को अलग से पहचानने के लिए मौजूद है, जो पहले kState_Ready और kState_Closed स्थितियों में मौजूद था.

प्रॉपर्टी
kState_Bound

एंडपॉइंट बाउंड है, लेकिन सुन नहीं रहा है.

kState_Closed

एंडपॉइंट बंद हो गया, अब रिलीज़ के लिए तैयार है.

kState_Listening

एंडपॉइंट को डेटाग्राम मिल रहे हैं.

kState_Ready

एंडपॉइंट शुरू किया गया, लेकिन खुला नहीं है.

@9

 @9

ट्रांसमिट करने के विकल्प, SendMsg तरीके के लिए फ़्लैग करते हैं.

प्रॉपर्टी
kSendFlag_RetainBuffer

सीधे मैसेज को किसी भी तरह की चेतावनी में शामिल न करें.

कॉपी की सूची बनाएं.

OnMessageReceivedFunct

void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)

मैसेज टेक्स्ट रिसेप्शन इवेंट हैंडलिंग फ़ंक्शन का टाइप.

OnMessageReceived के प्रतिनिधि के लिए इस तरह का फ़ंक्शन उपलब्ध कराएं, ताकि endPoint पर मैसेज टेक्स्ट रिसेप्शन इवेंट को प्रोसेस किया जा सके. यहां msg, मैसेज भेजने वाले से senderAddr पर मिला मैसेज टेक्स्ट है.

जानकारी
पैरामीटर
[in] endPoint
इवेंट से जुड़ा एंडपॉइंट.
[in] msg
मिला मैसेज.
[in] senderAddr
भेजने वाले का आईपी पता.

OnReceiveErrorFunct

void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)

रिसेप्शन की गड़बड़ी को इवेंट हैंडल करने के फ़ंक्शन का टाइप.

OnReceiveError के प्रतिनिधि को इस तरह का फ़ंक्शन दें, ताकि endPoint को रिसेप्शन की गड़बड़ी वाले इवेंट को प्रोसेस किया जा सके. err आर्ग्युमेंट, गड़बड़ी के टाइप के बारे में खास जानकारी देता है.

जानकारी
पैरामीटर
[in] endPoint
इवेंट से जुड़ा एंडपॉइंट.
[in] err
गड़बड़ी की वजह.

सार्वजनिक एट्रिब्यूट

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

एंडपॉइंट के मैसेज रिसेप्शन का इवेंट हैंडलिंग का फ़ंक्शन डेलिगेट.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

एंडपॉइंट से मिली गड़बड़ी को हैंडल करने वाला फ़ंक्शन डेलिगेट.

mState

enum nl::Inet::IPEndPointBasis::@8 mState

मौजूदा एंडपॉइंट की बुनियादी डाइनैमिक स्थिति.

ऑब्जेक्ट को "तैयार" स्थिति में शुरू किया जाता है. किसी लोकल इंटरफ़ेस पते से बाइंड करने के बाद, "बाउंड" स्थिति पर जाएं. इसके बाद, जब आईसीएमपी मैसेज पाने के लिए इवेंट को हैंडल करने के लिए रजिस्टर करना जारी रखें, तब "सुनना" स्थिति पर जाएं.

ध्यान दें: पुराने तरीके से बाइनरी के साथ काम करने की वजहों के लिए, kBasisState_Closed स्टेट इन्यूरेशन को kState_Ready पर मैप किया जाता है. मौजूदा kState_Closed, "अभी तक नहीं खोला गया" और "पहले खोला गया अब बंद हो गया है" के बीच के अंतर को अलग से पहचानने के लिए मौजूद है, जो पहले kState_Ready और kState_Closed स्थितियों में मौजूद था.

सुरक्षित एट्रिब्यूट

mBoundIntfId

InterfaceId mBoundIntfId

सार्वजनिक फ़ंक्शन

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

किसी आईपी मल्टीकास्ट ग्रुप में शामिल हों.

बताए गए इंटरफ़ेस पर, दिए गए मल्टीकास्ट ग्रुप में एंडपॉइंट से जुड़ें.

जानकारी
पैरामीटर
[in] aInterfaceId
मल्टीकास्ट ग्रुप में जोड़ने के लिए, नेटवर्क इंटरफ़ेस का इंडिकेटर
[in] aAddress
इंटरफ़ेस को जोड़ने के लिए मल्टीकास्ट ग्रुप बनाएं
रिटर्न वैल्यू
INET_NO_ERROR
सफल: मल्टीकास्ट ग्रुप हटाया गया
INET_ERROR_UNKNOWN_INTERFACE
अज्ञात नेटवर्क इंटरफ़ेस, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress, kIPAddressType_IPv4 या kIPAddressType_IPv6 नहीं है या मल्टीकास्ट नहीं है
other
सिस्टम या प्लैटफ़ॉर्म में कोई दूसरी गड़बड़ी हुई है

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

कोई आईपी मल्टीकास्ट ग्रुप छोड़ें.

दिए गए इंटरफ़ेस पर, दिए गए मल्टीकास्ट ग्रुप से एंडपॉइंट हटाएं.

जानकारी
पैरामीटर
[in] aInterfaceId
मल्टीकास्ट ग्रुप से हटाने के लिए, नेटवर्क इंटरफ़ेस का इंडिकेटर
[in] aAddress
इंटरफ़ेस हटाने के लिए मल्टीकास्ट ग्रुप चुनें
रिटर्न वैल्यू
INET_NO_ERROR
सफल: मल्टीकास्ट ग्रुप हटाया गया
INET_ERROR_UNKNOWN_INTERFACE
अज्ञात नेटवर्क इंटरफ़ेस, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress, kIPAddressType_IPv4 या kIPAddressType_IPv6 नहीं है या मल्टीकास्ट नहीं है
other
सिस्टम या प्लैटफ़ॉर्म में कोई दूसरी गड़बड़ी हुई है

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

सेट करें कि आईपी मल्टीकास्ट ट्रैफ़िक को लूप बैक किया जाना चाहिए या नहीं.

सेट करें कि आईपी मल्टीकास्ट ट्रैफ़िक को इस एंडपॉइंट पर वापस लूप में चलाना है या नहीं.

जानकारी
पैरामीटर
[in] aIPVersion
[in] aLoop
रिटर्न वैल्यू
INET_NO_ERROR
सफलता: मल्टीकास्ट लूपबैक व्यवहार सेट किया गया
other
सिस्टम या प्लैटफ़ॉर्म में कोई दूसरी गड़बड़ी हुई है

सुरक्षित किए गए फ़ंक्शन

बाइंड

INET_ERROR Bind(
  IPAddressType aAddressType,
  IPAddress aAddress,
  uint16_t aPort,
  InterfaceId aInterfaceId
)

BindInterface

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

INET_ERROR GetSocket(
  IPAddressType aAddressType,
  int aType,
  int aProtocol
)

HandleDataReceived

void HandleDataReceived(
  Weave::System::PacketBuffer *aBuffer
)

HandlePendingIO

void HandlePendingIO(
  uint16_t aPort
)

शुरू करें

void Init(
  InetLayer *aInetLayer
)

PrepareIO

SocketEvents PrepareIO(
  void
)

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *aPktInfo,
  Weave::System::PacketBuffer *aBuffer,
  uint16_t aSendFlags
)

सार्वजनिक स्टैटिक फ़ंक्शन

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

सुरक्षित स्टैटिक फ़ंक्शन

GetPacketInfo

IPPacketInfo * GetPacketInfo(
  Weave::System::PacketBuffer *buf
)

LwIP आईपी लेयर के सोर्स और डेस्टिनेशन के पते की जानकारी पाएं.

अगर पैकेट के बारे में LwIP की जानकारी इस्तेमाल की जाती है, तो वह पैकेट बफ़र में डेटा शुरू होने से पहले, रिज़र्व में रखी गई जगह में 'छिपाई गई' होती है. यह ज़रूरी है, क्योंकि सिस्टम लेयर इवेंट में सिर्फ़ दो आर्ग्युमेंट होते हैं. इस मामले में, पॉइंटर को एंड पॉइंट और बफ़र को पॉइंट देने के लिए इस्तेमाल किया जाता है.

जानकारी
पैरामीटर
[in] aBuffer
वह पैकेट बफ़र जिसमें आईपी मैसेज है
लौटाए गए सामान
यह, सफलता के बारे में पते की जानकारी का पॉइंटर होता है. अगर पैकेट में पते की जानकारी के लिए ज़रूरी जगह नहीं है, तो इसे NULL कर दें.

ज़्यादातर मामलों में, डेटा सेव होने से पहले जानकारी सेव करने का यह तरीका काम करता है, क्योंकि किसी LwIP आईपी मैसेज के पहले बफ़र में वह स्पेस होता है जिसका इस्तेमाल ईथरनेट/आईपी/यूडीपी हेडर के लिए किया जाता था. हालांकि, IPPacketInfo स्ट्रक्चर के मौजूदा साइज़ (40 बाइट) को देखते हुए, हो सकता है कि सिंगल पैकेट बफ़र में पेलोड के साथ स्ट्रक्चर को स्टोर करने के लिए ज़रूरत के मुताबिक जगह न हो. ऐसा सिर्फ़ बहुत बड़े IPv4 पैकेट के लिए होना चाहिए, जो ईथरनेट हेडर के बिना आते हैं.