nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

ออบเจ็กต์ของคลาสนี้แสดงถึงปลายทางโปรโตคอล IP ที่ขาดไม่ได้

สรุป

การสืบทอด

รับค่าจาก: nl::Inet::EndPointBasis
SubSubซึ่งเป็นที่ทราบโดยตรง:
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

สถานะไดนามิกพื้นฐานของปลายทางที่ระบุ

ออบเจ็กต์จะเริ่มต้นในสถานะ "Ready" ดําเนินการต่อไปยังสถานะ "bound" หลังเชื่อมโยงกับที่อยู่อินเทอร์เฟซในระบบแล้วดําเนินการต่อไปยังสถานะ "listening" เมื่อมีการลงทะเบียนต่อเนื่องสําหรับการจัดการเหตุการณ์สําหรับการรับข้อความ ICMP

หมายเหตุ: การแจกแจงสถานะ kBasisState_Closed จะแมปกับ kState_Ready เนื่องจากเหตุผลในความเข้ากันได้กับไบนารีที่ผ่านมา kState_Closed ที่มีอยู่มีไว้เพื่อแยกความแตกต่างระหว่าง "ยังไม่เปิด&&tt; และ " ก่อนหน้านี้ ปิดตอนนี้แล้ว&; ที่มีอยู่ในรัฐ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 เพื่อประมวลผลเหตุการณ์การรับ SMS ในวันที่ 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
สาเหตุของข้อผิดพลาด

แอตทริบิวต์สาธารณะ

ได้รับข้อความแล้ว

OnMessageReceivedFunct OnMessageReceived

ผู้รับมอบสิทธิ์ฟังก์ชันการจัดการข้อความการรับปลายทาง

ข้อผิดพลาด OnReceive

OnReceiveErrorFunct OnReceiveError

ปลายทางจะได้รับฟังก์ชันการจัดการเหตุการณ์ข้อผิดพลาด

รัฐ

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

สถานะไดนามิกพื้นฐานของปลายทางที่ระบุ

ออบเจ็กต์จะเริ่มต้นในสถานะ "Ready" ดําเนินการต่อไปยังสถานะ "bound" หลังเชื่อมโยงกับที่อยู่อินเทอร์เฟซในระบบแล้วดําเนินการต่อไปยังสถานะ "listening" เมื่อมีการลงทะเบียนต่อเนื่องสําหรับการจัดการเหตุการณ์สําหรับการรับข้อความ ICMP

หมายเหตุ: การแจกแจงสถานะ kBasisState_Closed จะแมปกับ kState_Ready เนื่องจากเหตุผลในความเข้ากันได้กับไบนารีที่ผ่านมา kState_Closed ที่มีอยู่มีไว้เพื่อแยกความแตกต่างระหว่าง "ยังไม่เปิด&&tt; และ " ก่อนหน้านี้ ปิดตอนนี้แล้ว&; ที่มีอยู่ในรัฐkState_ReadyและkState_Closedก่อนหน้านี้

แอตทริบิวต์ที่ได้รับการปกป้อง

mBoundIntfId

InterfaceId mBoundIntfId

ฟังก์ชันสาธารณะ

เข้าร่วมกลุ่มมัลติแคสต์

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
ข้อผิดพลาดระบบหรือแพลตฟอร์มอื่น

ออกจากกลุ่มมัลติแคสต์

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
ข้อผิดพลาดระบบหรือแพลตฟอร์มอื่น

ตั้งค่าหลายแคสต์วนซ้ํา

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
)

แฮนเดิลข้อมูลที่ได้รับ

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

แฮนเดิลที่รอดําเนินการ

void HandlePendingIO(
  uint16_t aPort
)

เริ่ม

void Init(
  InetLayer *aInetLayer
)

เตรียมพร้อม

SocketEvents PrepareIO(
  void
)

ส่ง Msg

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

ฟังก์ชันสาธารณะแบบคงที่

รหัสการค้นหา NetNetFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

ฟังก์ชันแบบคงที่ที่มีการปกป้อง

GetPacketInfo

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

รับข้อมูลที่อยู่ IP ของเลเยอร์ LwIP และปลายทาง

เมื่อใช้ข้อมูล LwIP เกี่ยวกับแพ็กเก็ตจะซ่อน 'ซ่อน&#39 ไว้ในพื้นที่ที่สงวนไว้ก่อนเริ่มต้นข้อมูลในบัฟเฟอร์ของแพ็กเก็ต ซึ่งเป็นเหตุการณ์ที่จําเป็น เนื่องจากเหตุการณ์ในเลเยอร์ระบบมีอาร์กิวเมนต์เพียง 2 รายการเท่านั้น ซึ่งในกรณีนี้ใช้ในการถ่ายทอดตัวชี้ไปยังจุดสิ้นสุดและตัวชี้ไปยังบัฟเฟอร์

รายละเอียด
พารามิเตอร์
[in] aBuffer
บัฟเฟอร์แพ็กเก็ตที่มีข้อความ IP
การคืนสินค้า
ตัวชี้ไปยังข้อมูลที่อยู่ที่สําเร็จ ไม่เช่นนั้น จะมีค่าว่างหากมีแพ็กเก็ตสําหรับข้อมูลที่อยู่ไม่เพียงพอ

ในกรณีส่วนใหญ่ กลอุบายว่าจะเก็บข้อมูลก่อนข้อมูลทํางาน เนื่องจากบัฟเฟอร์แรกในข้อความ IP ของ LwIP จะมีการเว้นวรรคที่ใช้สําหรับส่วนหัวอีเทอร์เน็ต/IP/UDP แต่ด้วยขนาดปัจจุบันของโครงสร้าง IPPacketInfo (40 ไบต์) จึงเป็นไปได้ว่าอาจมีพื้นที่ไม่เพียงพอที่จะจัดเก็บโครงสร้างพร้อมกับเพย์โหลดในบัฟเฟอร์แพ็กเก็ตเดียว ในทางปฏิบัติ กรณีนี้จะเกิดขึ้นเฉพาะกับแพ็กเก็ต IPv4 ที่มีขนาดใหญ่มากที่มาถึงโดยไม่มีส่วนหัวของอีเทอร์เน็ต