nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

Các đối tượng của lớp này biểu thị các điểm cuối mạng IP thô.

Tóm tắt

Lớp Nest Inet đóng gói các phương thức để tương tác với điểm cuối của mạng IP (các ổ cắm SOCK_RAW trên Linux và các hệ thống bắt nguồn từ BSD) hoặc các khối kiểm soát giao thức thô LwIP, vì hệ thống được định cấu hình phù hợp.

Tính kế thừa

Kế thừa từ: nl::Inet::IPEndPointBasis

Thuộc tính công khai

IPProto
IPProtocol
phiên bản của Giao thức thông báo điều khiển trên Internet (ICMP)
IPVer
IPVersion
Phiên bản của giao thức Internet.

Hàm công khai

Bind(IPAddressType addrType, IPAddress addr, InterfaceId intfId)
Liên kết điểm cuối với một địa chỉ IP của giao diện.
BindIPv6LinkLocal(InterfaceId intf, IPAddress addr)
Liên kết điểm cuối thô với một địa chỉ phạm vi liên kết cục bộ IPv6 tại chỉ mục giao diện đã chỉ định.
BindInterface(IPAddressType addrType, InterfaceId intf)
Liên kết điểm cuối với một giao diện mạng.
Close(void)
void
Đóng điểm cuối.
Free(void)
void
Đóng điểm cuối và sử dụng lại bộ nhớ của điểm cuối đó.
GetBoundInterface(void)
InterfaceId
Lấy giao diện liên kết trên điểm cuối này.
Listen(void)
Chuẩn bị điểm cuối để nhận thông báo ICMP.
SendMsg(const IPPacketInfo *pktInfo, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Gửi tin nhắn ICMP tới đích đã chỉ định.
SendTo(IPAddress addr, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Từ đồng nghĩa của SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags).
SendTo(IPAddress addr, InterfaceId intfId, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Gửi tin nhắn ICMP tới địa chỉ đích đã chỉ định.
SetICMPFilter(uint8_t numICMPTypes, const uint8_t *aICMPTypes)
Thiết lập tham số bộ lọc ICMP6 trong ngăn xếp mạng.

Thuộc tính công khai

IPProto

IPProtocol IPProto

phiên bản của Giao thức thông báo điều khiển trên Internet (ICMP)

Mặc dù trường này là một biến của lớp có thể thay đổi, nhưng đây là biến thể bất biến của lớp và không thể sửa đổi.

IPVer

IPVersion IPVer

Phiên bản của giao thức Internet.

Mặc dù trường này là một biến của lớp có thể thay đổi, nhưng đây là biến thể bất biến của lớp và không thể sửa đổi.

Hàm công khai

Liên kết

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

Liên kết điểm cuối với một địa chỉ IP của giao diện.

Liên kết điểm cuối với địa chỉ IP của giao diện mạng đã chỉ định.

Thông tin chi tiết
Các tham số
[in] addrType
phiên bản giao thức của địa chỉ IP
[in] addr
địa chỉ IP (phải là địa chỉ giao diện)
[in] intfId
chỉ báo giao diện mạng tuỳ chọn
Giá trị trả về
INET_NO_ERROR
thành công: điểm cuối liên kết với địa chỉ
INET_ERROR_INCORRECT_STATE
điểm cuối đã được liên kết trước đó
INET_NO_MEMORY
không đủ bộ nhớ cho điểm cuối
INET_ERROR_UNKNOWN_INTERFACE
Trên một số nền tảng, giao diện được chỉ định (không bắt buộc) sẽ không xuất hiện.
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType không khớp với IPVer.
INET_ERROR_WRONG_ADDRESS_TYPE
addrTypekIPAddressType_Any hoặc loại addr không bằng addrType.
other
lỗi hệ thống hoặc nền tảng khác

Trên LwIP, không được gọi phương thức này khi đã có khoá ngăn xếp LwIP.

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

Liên kết điểm cuối thô với một địa chỉ phạm vi liên kết cục bộ IPv6 tại chỉ mục giao diện đã chỉ định.

Đồng thời thiết lập nhiều tuỳ chọn cổng IPv6 thích hợp để truyền gói tin tới và đi từ các đích có liên kết.

Liên kết điểm cuối với địa chỉ liên kết cục bộ IPv6 addr trên giao diện mạng do intf chỉ định.

Thông tin chi tiết
Các tham số
[in] intf
Một InterfaceId để xác định phạm vi của địa chỉ.
[in] addr
Đối tượng IPAddress phạm vi liên kết cục bộ IPv6.
Các tham số
[in] intf
chỉ báo giao diện mạng
[in] addr
địa chỉ IP (phải là địa chỉ giao diện)
Giá trị trả về
INET_NO_ERROR
thành công: điểm cuối liên kết với địa chỉ
INET_ERROR_INCORRECT_STATE
điểm cuối đã được liên kết trước đó
INET_NO_MEMORY
không đủ bộ nhớ cho điểm cuối
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType không khớp với IPVer.
INET_ERROR_WRONG_ADDRESS_TYPE
addr không phải là địa chỉ liên kết cục bộ IPv6 hoặc intfINET_NULL_INTERFACEID.
other
lỗi hệ thống hoặc nền tảng khác
Trả về
INET_NO_ERROR khi thành công hoặc lỗi hệ điều hành được ánh xạ khi không thành công. Danh sách thông số không hợp lệ có thể dẫn đến INET_ERROR_WRONG_ADDRESS_TYPE. Nếu điểm cuối thô đã được liên kết hoặc đang lắng nghe, hãy trả về INET_ERROR_IN sẻ_STATE. Liên kết điểm cuối với một địa chỉ liên kết cục bộ IPv6 của giao diện.

Trên LwIP, không được gọi phương thức này khi đã có khoá ngăn xếp LwIP.

BindInterface

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

Liên kết điểm cuối với một giao diện mạng.

Liên kết điểm cuối với địa chỉ IP của giao diện mạng đã chỉ định.

Thông tin chi tiết
Các tham số
[in] addrType
phiên bản giao thức của địa chỉ IP.
[in] intf
chỉ báo về giao diện mạng.
Giá trị trả về
INET_NO_ERROR
thành công: điểm cuối liên kết với địa chỉ
INET_NO_MEMORY
không đủ bộ nhớ cho điểm cuối
INET_ERROR_NOT_IMPLEMENTED
chưa hoàn tất quá trình triển khai hệ thống.
INET_ERROR_UNKNOWN_INTERFACE
Trên một số nền tảng, giao diện này không xuất hiện.
other
lỗi hệ thống hoặc nền tảng khác

Trên LwIP, không được gọi phương thức này khi đã có khoá ngăn xếp LwIP.

Đóng

void Close(
  void
)

Đóng điểm cuối.

Nếu là mState != kState_Closed, sau đó, sẽ đóng điểm cuối và xoá điểm cuối đó khỏi tập hợp các điểm cuối đủ điều kiện cho các sự kiện giao tiếp.

Trên các hệ thống LwIP, không được gọi phương thức này khi đã có khoá ngăn xếp LwIP.

Miễn phí

void Free(
  void
)

Đóng điểm cuối và sử dụng lại bộ nhớ của điểm cuối đó.

Gọi phương thức Close, sau đó gọi phương thức InetLayerBasis::Release để trả đối tượng về nhóm bộ nhớ.

Trên các hệ thống LwIP, không được gọi phương thức này khi đã có khoá ngăn xếp LwIP.

GetBoundInterface

InterfaceId GetBoundInterface(
  void
)

Lấy giao diện liên kết trên điểm cuối này.

Thông tin chi tiết
Trả về
InterfaceId Mã giao diện ràng buộc.

Nghe

INET_ERROR Listen(
  void
)

Chuẩn bị điểm cuối để nhận thông báo ICMP.

Nếu mState đã là kState_Listening, thì không có thao tác nào được thực hiện, nếu không, mState sẽ được đặt thành kState_Listening và điểm cuối được chuẩn bị để nhận các thông báo ICMPv6, theo ngữ nghĩa của nền tảng.

Thông tin chi tiết
Giá trị trả về
INET_NO_ERROR
luôn được trả về.

Trong LwIP, phương thức này không được gọi khi đã có khoá ngăn xếp LwIP

SendMsg

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

Gửi tin nhắn ICMP tới đích đã chỉ định.

 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.

Thông tin chi tiết
Các tham số
[in] pktInfo
thông tin đích đến của tin nhắn
[in] msg
vùng đệm gói chứa thông báo UDP
[in] sendFlags
cờ tuỳ chọn truyền không bắt buộc
Giá trị trả về
INET_NO_ERROR
thành công: msg đã được đưa vào hàng đợi để truyền.
INET_ERROR_NOT_SUPPORTED
hệ thống không hỗ trợ tác vụ được yêu cầu.
INET_ERROR_WRONG_ADDRESS_TYPE
địa chỉ đích và địa chỉ giao diện ràng buộc không có phiên bản giao thức hoặc loại địa chỉ phù hợp.
INET_ERROR_MESSAGE_TOO_LONG
msg không chứa toàn bộ thông báo ICMP.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
Trên một số nền tảng, chỉ một phần bị cắt bớt của msg được đưa vào hàng đợi để truyền.
other
lỗi hệ thống hoặc nền tảng khác

SendTo

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

Từ đồng nghĩa của SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags).

SendTo

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

Gửi tin nhắn ICMP tới địa chỉ đích đã chỉ định.

 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.

Thông tin chi tiết
Các tham số
[in] addr
địa chỉ IP đích
[in] intfId
chỉ báo giao diện mạng tuỳ chọn
[in] msg
vùng đệm gói chứa thông báo UDP
[in] sendFlags
cờ tuỳ chọn truyền không bắt buộc
Giá trị trả về
INET_NO_ERROR
thành công: msg đã được đưa vào hàng đợi để truyền.
INET_ERROR_NOT_SUPPORTED
hệ thống không hỗ trợ tác vụ được yêu cầu.
INET_ERROR_WRONG_ADDRESS_TYPE
địa chỉ đích và địa chỉ giao diện ràng buộc không có phiên bản giao thức hoặc loại địa chỉ phù hợp.
INET_ERROR_MESSAGE_TOO_LONG
msg không chứa toàn bộ thông báo ICMP.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
Trên một số nền tảng, chỉ một phần bị cắt bớt của msg được đưa vào hàng đợi để truyền.
other
lỗi hệ thống hoặc nền tảng khác

SetICMPFilter

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

Thiết lập tham số bộ lọc ICMP6 trong ngăn xếp mạng.

Áp dụng tham số lọc ICMPv6 cho các mã trong aICMPTypes đối với điểm cuối cơ bản trong ngăn xếp mạng hệ thống.

Thông tin chi tiết
Các tham số
[in] numICMPTypes
độ dài của mảng tại aICMPTypes
[in] aICMPTypes
bộ mã loại ICMPv6 cần lọc.
Giá trị trả về
INET_NO_ERROR
thành công: đã thiết lập thông số bộ lọc
INET_ERROR_NOT_IMPLEMENTED
hệ thống không triển khai
INET_ERROR_WRONG_ADDRESS_TYPE
điểm cuối không phải loại IPv6
INET_ERROR_WRONG_PROTOCOL_TYPE
điểm cuối không phải loại ICMP6
other
lỗi hệ thống hoặc nền tảng khác