nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

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

สรุป

Nest Inet Layer สรุปวิธีการโต้ตอบกับปลายทางเครือข่าย IP (ซ็อกเก็ต SOCK_RAW บน Linux และระบบที่มาจาก BSD) หรือบล็อกการควบคุมโปรโตคอลดิบของ LwIP ตามที่มีการกำหนดค่าระบบดังกล่าว

การสืบทอด

รับค่าจาก nl::Inet::IPEndPointBasis

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

IPProto
IPProtocol
เวอร์ชันของ Internet Control Message Protocol (ICMP)
IPVer
IPVersion
เวอร์ชันของ Internet Protocol

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

Bind(IPAddressType addrType, IPAddress addr, InterfaceId intfId)
เชื่อมโยงปลายทางกับที่อยู่ IP ของอินเทอร์เฟซ
BindIPv6LinkLocal(InterfaceId intf, IPAddress addr)
เชื่อมโยงปลายทางดิบกับที่อยู่ขอบเขตลิงก์ภายในของ IPv6 ที่ดัชนีอินเทอร์เฟซที่ระบุ
BindInterface(IPAddressType addrType, InterfaceId intf)
เชื่อมโยงปลายทางกับอินเทอร์เฟซเครือข่าย
Close(void)
void
ปิดปลายทาง
Free(void)
void
ปิดปลายทางและนำหน่วยความจำกลับมาใช้ใหม่
GetBoundInterface(void)
InterfaceId
รับอินเทอร์เฟซที่เชื่อมโยงในปลายทางนี้
Listen(void)
เตรียมปลายทางเพื่อรับข้อความ ICMP
SendMsg(const IPPacketInfo *pktInfo, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
ส่งข้อความ ICMP ไปยังปลายทางที่ระบุ
SendTo(IPAddress addr, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
คำพ้องของ SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags)
SendTo(IPAddress addr, InterfaceId intfId, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
ส่งข้อความ ICMP ไปยังที่อยู่ปลายทางที่ระบุ
SetICMPFilter(uint8_t numICMPTypes, const uint8_t *aICMPTypes)
ตั้งค่าพารามิเตอร์ตัวกรอง ICMP6 ในกลุ่มเครือข่าย

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

IPProto

IPProtocol IPProto

เวอร์ชันของ Internet Control Message Protocol (ICMP)

แม้ว่าช่องนี้จะเป็นตัวแปรคลาสที่เปลี่ยนแปลงได้ แต่ค่าจะเป็นค่าคงที่ของคลาสซึ่งจะไม่ได้รับการแก้ไข

IPVer

IPVersion IPVer

เวอร์ชันของ Internet Protocol

แม้ว่าช่องนี้จะเป็นตัวแปรคลาสที่เปลี่ยนแปลงได้ แต่ค่าจะเป็นค่าคงที่ของคลาสซึ่งจะไม่ได้รับการแก้ไข

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

เชื่อมโยง

INET_ERROR Bind(
  IPAddressType addrType,
  IPAddress addr,
  InterfaceId intfId
)

เชื่อมโยงปลายทางกับที่อยู่ IP ของอินเทอร์เฟซ

เชื่อมโยงปลายทางกับที่อยู่ IP ของอินเทอร์เฟซเครือข่ายที่ระบุ

รายละเอียด
พารามิเตอร์
[in] addrType
เวอร์ชันโปรโตคอลของที่อยู่ IP
[in] addr
ที่อยู่ IP (ต้องเป็นที่อยู่อินเทอร์เฟซ)
[in] intfId
ตัวบ่งชี้อินเทอร์เฟซเครือข่ายแบบไม่บังคับ
แสดงผลค่า
INET_NO_ERROR
สำเร็จ: ปลายทางเชื่อมโยงกับที่อยู่
INET_ERROR_INCORRECT_STATE
ได้เชื่อมโยงปลายทางก่อนหน้านี้แล้ว
INET_NO_MEMORY
หน่วยความจำไม่เพียงพอสำหรับปลายทาง
INET_ERROR_UNKNOWN_INTERFACE
ในบางแพลตฟอร์ม อินเทอร์เฟซที่ระบุ (ไม่บังคับ) จะไม่ปรากฏ
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType ไม่ตรงกับ IPVer
INET_ERROR_WRONG_ADDRESS_TYPE
addrType เท่ากับ kIPAddressType_Any หรือประเภทของ addr ไม่เท่ากับ addrType
other
ข้อผิดพลาดเกี่ยวกับระบบหรือแพลตฟอร์มอื่น

ใน LwIP ต้องไม่เรียกเมธอดนี้เมื่อได้มาซึ่งสแต็กล็อก LwIP แล้ว

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

เชื่อมโยงปลายทางดิบกับที่อยู่ขอบเขตลิงก์ภายในของ IPv6 ที่ดัชนีอินเทอร์เฟซที่ระบุ

นอกจากนี้ ยังตั้งค่าตัวเลือกซ็อกเก็ต IPv6 ต่างๆ ที่เหมาะสำหรับการส่งแพ็กเก็ตไปยังและปลายทางที่ลิงก์ด้วย

เชื่อมโยงปลายทางกับที่อยู่ลิงก์ภายในของ IPv6 addr บนอินเทอร์เฟซเครือข่ายที่ระบุโดย intf

รายละเอียด
พารามิเตอร์
[in] intf
InterfaceId สำหรับระบุขอบเขตของที่อยู่
[in] addr
ออบเจ็กต์ IPAddress ขอบเขตของลิงก์ภายใน IPv6
พารามิเตอร์
[in] intf
ตัวบ่งชี้อินเทอร์เฟซเครือข่าย
[in] addr
ที่อยู่ IP (ต้องเป็นที่อยู่อินเทอร์เฟซ)
แสดงผลค่า
INET_NO_ERROR
สำเร็จ: ปลายทางเชื่อมโยงกับที่อยู่
INET_ERROR_INCORRECT_STATE
ได้เชื่อมโยงปลายทางก่อนหน้านี้แล้ว
INET_NO_MEMORY
หน่วยความจำไม่เพียงพอสำหรับปลายทาง
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType ไม่ตรงกับ IPVer
INET_ERROR_WRONG_ADDRESS_TYPE
addr ไม่ใช่ที่อยู่สำหรับลิงก์ภายในแบบ IPv6 หรือ intf เป็น INET_NULL_INTERFACEID
other
ข้อผิดพลาดเกี่ยวกับระบบหรือแพลตฟอร์มอื่น
การส่งคืน
INET_NO_ERROR เมื่อทำงานสำเร็จ หรือข้อผิดพลาดของระบบปฏิบัติการที่แมปไว้เมื่อล้มเหลว รายการพารามิเตอร์ที่ไม่ถูกต้องอาจทำให้เกิด INET_ERROR_WRONG_ADDRESS_TYPE หากปลายทางแบบ Raw ถูกเชื่อมโยงอยู่แล้วหรือกำลังฟังอยู่ ระบบจะแสดงผล INET_ERROR_INCORRECT_STATE เชื่อมโยงปลายทางกับที่อยู่ลิงก์ภายในของ IPv6 ของอินเทอร์เฟซ

ใน LwIP ต้องไม่เรียกเมธอดนี้เมื่อได้มาซึ่งสแต็กล็อก LwIP แล้ว

BindInterface

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

เชื่อมโยงปลายทางกับอินเทอร์เฟซเครือข่าย

เชื่อมโยงปลายทางกับที่อยู่ IP ของอินเทอร์เฟซเครือข่ายที่ระบุ

รายละเอียด
พารามิเตอร์
[in] addrType
เวอร์ชันโปรโตคอลของที่อยู่ IP
[in] intf
ตัวบ่งชี้อินเทอร์เฟซเครือข่าย
แสดงผลค่า
INET_NO_ERROR
สำเร็จ: ปลายทางเชื่อมโยงกับที่อยู่
INET_NO_MEMORY
หน่วยความจำไม่เพียงพอสำหรับปลายทาง
INET_ERROR_NOT_IMPLEMENTED
การติดตั้งใช้งานระบบไม่สมบูรณ์
INET_ERROR_UNKNOWN_INTERFACE
ในบางแพลตฟอร์ม อินเทอร์เฟซจะไม่ปรากฏขึ้น
other
ข้อผิดพลาดเกี่ยวกับระบบหรือแพลตฟอร์มอื่น

ใน LwIP ต้องไม่เรียกเมธอดนี้เมื่อได้มาซึ่งสแต็กล็อก LwIP แล้ว

ปิด

void Close(
  void
)

ปิดปลายทาง

หากเป็น mState != kState_Closed ระบบจะปิดใช้ปลายทางดังกล่าวโดยนำออกจากชุดปลายทางที่มีสิทธิ์สำหรับเหตุการณ์การสื่อสาร

ในระบบ LwIP ต้องไม่เรียกใช้เมธอดนี้เมื่อได้รับสแต็กล็อก LwIP แล้ว

ฟรี

void Free(
  void
)

ปิดปลายทางและนำหน่วยความจำกลับมาใช้ใหม่

เรียกใช้เมธอด Close จากนั้นเรียกใช้เมธอด InetLayerBasis::Release เพื่อส่งกลับออบเจ็กต์ไปยังพูลหน่วยความจำ

ในระบบ LwIP ต้องไม่เรียกใช้เมธอดนี้เมื่อได้รับสแต็กล็อก LwIP แล้ว

GetBoundInterface

InterfaceId GetBoundInterface(
  void
)

รับอินเทอร์เฟซที่เชื่อมโยงในปลายทางนี้

รายละเอียด
การส่งคืน
InterfaceId รหัสอินเทอร์เฟซที่เชื่อมโยง

ฟัง

INET_ERROR Listen(
  void
)

เตรียมปลายทางเพื่อรับข้อความ ICMP

หาก mState เป็น kState_Listening อยู่แล้ว ก็จะไม่มีการดำเนินการใดๆ มิเช่นนั้นระบบจะตั้งค่า mState เป็น kState_Listening และปลายทางจะได้รับการเตรียมรับข้อความ ICMPv6 ตามความหมายของแพลตฟอร์ม

รายละเอียด
แสดงผลค่า
INET_NO_ERROR
ที่ส่งคืนเสมอ

ใน LwIP ต้องไม่เรียกเมธอดนี้เมื่อได้มาซึ่งสแต็กล็อก LwIP แล้ว

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *pktInfo,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

ส่งข้อความ ICMP ไปยังปลายทางที่ระบุ

 Send the ICMP message \c msg using the destination information given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

รายละเอียด
พารามิเตอร์
[in] pktInfo
ข้อมูลปลายทางของข้อความ
[in] msg
บัฟเฟอร์แพ็กเกตที่มีข้อความ UDP
[in] sendFlags
แฟล็กตัวเลือกการส่งที่ไม่บังคับ
แสดงผลค่า
INET_NO_ERROR
สำเร็จ: msg อยู่ในคิวสำหรับส่ง
INET_ERROR_NOT_SUPPORTED
ระบบไม่สนับสนุนการดำเนินการที่ขอ
INET_ERROR_WRONG_ADDRESS_TYPE
ที่อยู่ปลายทางและที่อยู่อินเทอร์เฟซที่เชื่อมโยงไม่มีเวอร์ชันโปรโตคอลหรือประเภทที่อยู่ที่ตรงกัน
INET_ERROR_MESSAGE_TOO_LONG
msg ไม่มีข้อความ ICMP ทั้งหมด
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
ในบางแพลตฟอร์ม จะมีเพียงส่วนที่ถูกตัดทอนของ msg เท่านั้นที่รอคิวสำหรับการส่ง
other
ข้อผิดพลาดเกี่ยวกับระบบหรือแพลตฟอร์มอื่น

SendTo

INET_ERROR SendTo(
  IPAddress addr,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

คำพ้องของ SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags)

SendTo

INET_ERROR SendTo(
  IPAddress addr,
  InterfaceId intfId,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

ส่งข้อความ ICMP ไปยังที่อยู่ปลายทางที่ระบุ

 Send the ICMP message in \c msg to the destination given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

รายละเอียด
พารามิเตอร์
[in] addr
ที่อยู่ IP ปลายทาง
[in] intfId
ตัวบ่งชี้อินเทอร์เฟซเครือข่ายแบบไม่บังคับ
[in] msg
บัฟเฟอร์แพ็กเกตที่มีข้อความ UDP
[in] sendFlags
แฟล็กตัวเลือกการส่งที่ไม่บังคับ
แสดงผลค่า
INET_NO_ERROR
สำเร็จ: msg อยู่ในคิวสำหรับส่ง
INET_ERROR_NOT_SUPPORTED
ระบบไม่สนับสนุนการดำเนินการที่ขอ
INET_ERROR_WRONG_ADDRESS_TYPE
ที่อยู่ปลายทางและที่อยู่อินเทอร์เฟซที่เชื่อมโยงไม่มีเวอร์ชันโปรโตคอลหรือประเภทที่อยู่ที่ตรงกัน
INET_ERROR_MESSAGE_TOO_LONG
msg ไม่มีข้อความ ICMP ทั้งหมด
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
ในบางแพลตฟอร์ม จะมีเพียงส่วนที่ถูกตัดทอนของ msg เท่านั้นที่รอคิวสำหรับการส่ง
other
ข้อผิดพลาดเกี่ยวกับระบบหรือแพลตฟอร์มอื่น

SetICMPFilter

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

ตั้งค่าพารามิเตอร์ตัวกรอง ICMP6 ในกลุ่มเครือข่าย

ใช้พารามิเตอร์การกรอง ICMPv6 สำหรับโค้ดใน aICMPTypes กับปลายทางที่สำคัญในสแต็กเครือข่ายของระบบ

รายละเอียด
พารามิเตอร์
[in] numICMPTypes
ความยาวของอาร์เรย์ที่ aICMPTypes
[in] aICMPTypes
ชุดรหัสประเภท ICMPv6 ที่จะกรอง
แสดงผลค่า
INET_NO_ERROR
สำเร็จ: ตั้งค่าพารามิเตอร์ตัวกรอง
INET_ERROR_NOT_IMPLEMENTED
ระบบไม่ได้ใช้
INET_ERROR_WRONG_ADDRESS_TYPE
ปลายทางไม่ใช่ประเภท IPv6
INET_ERROR_WRONG_PROTOCOL_TYPE
ปลายทางไม่ใช่ประเภท ICMP6
other
ข้อผิดพลาดเกี่ยวกับระบบหรือแพลตฟอร์มอื่น