nl::Inet::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

ปลายทางที่ได้รับ 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
)

Init

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
)

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

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

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

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