nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

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

สรุป

การสืบทอด

รับค่าจาก nl::Inet::EndPointBasis
Direct Known Subclasses:
  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)
รับข้อมูลที่อยู่ต้นทางและปลายทางของเลเยอร์ LwIP

ประเภทสาธารณะ

@8

 @8

สถานะไดนามิกพื้นฐานของปลายทางที่สำคัญ

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

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

พร็อพเพอร์ตี้
kState_Bound

เชื่อมโยงปลายทางแล้ว แต่ไม่ได้ฟัง

kState_Closed

ผู้ใช้ปลายทางปิดแล้ว พร้อมเผยแพร่

kState_Listening

ปลายทางได้รับ Datagram

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

LeaveMulticastGroup

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
)

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 เกี่ยวกับแพ็กเก็ตจะถูก "ซ่อน" ในพื้นที่ที่สงวนไว้ก่อนเริ่มข้อมูลในบัฟเฟอร์แพ็กเก็ต ซึ่งเป็นสิ่งจำเป็นเนื่องจากเหตุการณ์เลเยอร์ระบบมีเพียง 2 อาร์กิวเมนต์ ซึ่งในกรณีนี้จะใช้เพื่อสื่อสารตัวชี้ไปยังจุดสิ้นสุดและตัวชี้ไปยังบัฟเฟอร์

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

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