nl:: اینت:: IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

اشیاء این کلاس نشان دهنده نقاط پایانی پروتکل IP غیرقابل اثبات هستند.

خلاصه

وراثت

از: 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)
به یک گروه چندپخشی IP بپیوندید.
LeaveMulticastGroup (InterfaceId aInterfaceId, const IPAddress & aAddress)
گروه IP چندپخشی را ترک کنید.
SetMulticastLoopback (IPVersion aIPVersion, bool aLoopback)
تنظیم کنید که آیا ترافیک چندپخشی IP باید برگردانده شود یا خیر.

توابع محافظت شده

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)
اطلاعات آدرس منبع و مقصد لایه IP LwIP را دریافت کنید.

انواع عمومی

@8

 @8

وضعیت دینامیکی پایه نقطه پایانی زیربنایی.

اشیاء در حالت "آماده" مقداردهی اولیه می شوند، پس از اتصال به یک آدرس رابط محلی، به حالت "محصول" می روند، سپس زمانی که ادامه برای مدیریت رویدادها برای دریافت پیام های ICMP ثبت شده اند، به حالت "گوش دادن" می روند.

توجه: شمارش حالت 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
آدرس IP فرستنده

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

وضعیت دینامیکی پایه نقطه پایانی زیربنایی.

اشیاء در حالت "آماده" مقداردهی اولیه می شوند، پس از اتصال به یک آدرس رابط محلی، به حالت "محصول" می روند، سپس زمانی که ادامه برای مدیریت رویدادها برای دریافت پیام های ICMP ثبت شده اند، به حالت "گوش دادن" می روند.

توجه: شمارش حالت kBasisState_Closed به دلایل سازگاری باینری تاریخی به kState_Ready نگاشت شده است. kState_Closed موجود برای شناسایی جداگانه تمایز بین "هنوز باز نشده" و "قبلاً باز شده اکنون بسته است" وجود دارد که قبلاً در حالت‌های kState_Ready و kState_Closed وجود داشت.

ویژگی های محافظت شده

mBoundIntfId

InterfaceId mBoundIntfId

توابع عمومی

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

به یک گروه چندپخشی IP بپیوندید.

نقطه پایانی را به گروه چندپخشی ارائه شده در رابط مشخص شده بپیوندید.

جزئیات
مولفه های
[in] aInterfaceId
نشانگر رابط شبکه برای افزودن به گروه چندپخشی
[in] aAddress
گروه چندپخشی برای افزودن رابط به
ارزش های بازگشتی
INET_NO_ERROR
موفقیت: گروه چندپخشی حذف شد
INET_ERROR_UNKNOWN_INTERFACE
رابط شبکه ناشناخته، aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress kIPAddressType_IPv4 یا kIPAddressType_IPv6 نیست یا چندپخشی نیست
other
یک خطای سیستم یا پلتفرم دیگر

ترکMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

گروه IP چندپخشی را ترک کنید.

نقطه پایانی را از گروه چندپخشی ارائه شده در رابط مشخص شده حذف کنید.

جزئیات
مولفه های
[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
)

تنظیم کنید که آیا ترافیک چندپخشی IP باید برگردانده شود یا خیر.

تنظیم کنید که آیا ترافیک چندپخشی IP باید به این نقطه پایانی بازگردد یا خیر.

جزئیات
مولفه های
[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
)

IO را آماده کنید

SocketEvents PrepareIO(
  void
)

ارسال پیام

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
)

اطلاعات آدرس منبع و مقصد لایه IP LwIP را دریافت کنید.

هنگام استفاده از LwIP اطلاعات مربوط به بسته قبل از شروع داده ها در بافر بسته در فضای رزرو شده پنهان می شود. این امر ضروری است زیرا رویدادهای لایه سیستم فقط دو آرگومان دارند که در این مورد برای انتقال اشاره گر به نقطه پایانی و اشاره گر به بافر استفاده می شود.

جزئیات
مولفه های
[in] aBuffer
بافر بسته حاوی پیام IP
برمی گرداند
اشاره گر به اطلاعات آدرس در مورد موفقیت؛ در غیر این صورت، اگر فضای کافی در بسته برای اطلاعات آدرس وجود نداشته باشد، NULL.

در بیشتر موارد، این ترفند ذخیره سازی اطلاعات قبل از داده کار می کند، زیرا اولین بافر در یک پیام IP LwIP حاوی فضایی است که برای هدرهای Ethernet/IP/UDP استفاده شده است. با این حال، با توجه به اندازه فعلی ساختار IPPacketInfo (40 بایت)، ممکن است فضای کافی برای ذخیره سازه همراه با بار در یک بسته بسته وجود نداشته باشد. در عمل، این باید فقط برای بسته‌های IPv4 بسیار بزرگی که بدون هدر اترنت وارد می‌شوند اتفاق بیفتد.