nl::Inet

Tóm tắt

Bảng liệt kê

@7{
  kInetEvent_TCPConnectComplete = _INET_CONFIG_EVENT(0),
  kInetEvent_TCPConnectionReceived = _INET_CONFIG_EVENT(1),
  kInetEvent_TCPDataReceived = _INET_CONFIG_EVENT(2),
  kInetEvent_TCPDataSent = _INET_CONFIG_EVENT(3),
  kInetEvent_TCPError = _INET_CONFIG_EVENT(4),
  kInetEvent_UDPDataReceived = _INET_CONFIG_EVENT(5),
  kInetEvent_DNSResolveComplete = _INET_CONFIG_EVENT(6),
  kInetEvent_TunDataReceived = _INET_CONFIG_EVENT(7),
  kInetEvent_RawDataReceived = _INET_CONFIG_EVENT(8)
}
enum
Định nghĩa kiểu sự kiện lớp Inet.
DNSOptions{
  kDNSOption_AddrFamily_Mask = 0x07,
  kDNSOption_Flags_Mask = 0xF8,
  kDNSOption_AddrFamily_Any = 0x00,
  kDNSOption_AddrFamily_IPv4Only = 0x01,
  kDNSOption_AddrFamily_IPv4Preferred = 0x02,
  kDNSOption_AddrFamily_IPv6Only = 0x03,
  kDNSOption_AddrFamily_IPv6Preferred = 0x04,
  kDNSOption_ValidFlags = 0
}
enum
Các tuỳ chọn kiểm soát cách thực hiện quá trình phân giải địa chỉ IP.
IPAddressType{
  kIPAddressType_Unknown = 0,
  kIPAddressType_IPv4 = 1,
  kIPAddressType_IPv6 = 2,
  kIPAddressType_Any = 3
}
enum
Nhóm địa chỉ giao thức Internet.
IPProtocol{
  kIPProtocol_ICMPv6 = 58,
  kIPProtocol_ICMPv4 = 1
}
enum
Số lượng một số giao thức trong nhóm IP.
IPV6MulticastGroup{
  kIPV6MulticastGroup_AllRouters = 2
}
enum
Mã nhận dạng nhóm truyền đa hướng cho giao thức Internet.
IPVersion{
  kIPVersion_6 = 6,
  kIPVersion_4 = 4
}
enum
Phiên bản của giao thức IP đang được sử dụng.
IPv6MulticastFlag{
  kIPv6MulticastFlag_Transient = 0x01,
  kIPv6MulticastFlag_Prefix = 0x02
}
enum
Cờ đa hướng giao thức Internet v6.
IPv6MulticastScope{
  kIPv6MulticastScope_Interface = 1,
  kIPv6MulticastScope_Link = 2,
  kIPv6MulticastScope_IPv4 = 3,
  kIPv6MulticastScope_Admin = 4,
  kIPv6MulticastScope_Site = 5,
  kIPv6MulticastScope_Organization = 8,
  kIPv6MulticastScope_Global = 14
}
enum
Phạm vi địa chỉ đa hướng của giao thức Internet.

Typedef

InterfaceId typedef
struct netif *
Chỉ báo cho giao diện mạng của hệ thống.

Biến

sIOCTLSocket = -1
int

Hàm

CheckMulticastGroupArgs(InterfaceId aInterfaceId, const IPAddress & aAddress)
CloseIOCTLSocket(void)
void
Đóng ổ cắm chung do GetIOCTLSocket tạo.
FormatInetLayerError(char *buf, uint16_t bufSize, int32_t err)
bool
Nếu xảy ra lỗi Lớp Inet, hàm này sẽ trả về một chuỗi C kết thúc bằng NULL mà con người có thể đọc được, dùng để mô tả lỗi.
GetIOCTLSocket(void)
int
Trả về một ổ cắm đa năng chung hữu ích để gọi một số IOCTL mạng nhất định.
GetInterfaceName(InterfaceId intfId, char *nameBuf, size_t nameBufSize)
NL_DLL_EXPORT INET_ERROR
Lấy tên của giao diện mạng.
INET_IsInetEvent(Weave::System::EventType aType)
bool
Kiểm tra để xác minh xem System::EventType có phải là loại sự kiện lớp Inet hợp lệ hay không.
InterfaceNameToId(const char *intfName, InterfaceId & intfId)
NL_DLL_EXPORT INET_ERROR
Tìm kiếm tên được chỉ định trong danh sách giao diện mạng.
LwIPBindInterface(struct raw_pcb *aRaw, InterfaceId intfId)
LwIPBindInterface(struct udp_pcb *aUDP, InterfaceId intfId)
NetmaskToPrefixLength(const uint8_t *netmask, uint16_t netmaskLen)
uint8_t
Tính độ dài tiền tố từ mặt nạ mạng có độ dài thay đổi.
ParseHostAndPort(const char *aString, uint16_t aStringLen, const char *& aHost, uint16_t & aHostLen, uint16_t & aPort)
Phân tích cú pháp một chuỗi mà con người có thể đọc được, chứa địa chỉ máy chủ hoặc địa chỉ IP và số cổng không bắt buộc (được phân tách bằng dấu ":"), hỗ trợ các định dạng sau:
ParseHostPortAndInterface(const char *aString, uint16_t aStringLen, const char *& aHost, uint16_t & aHostLen, uint16_t & aPort, const char *& aInterface, uint16_t & aInterfaceLen)
Phân tích cú pháp một chuỗi mà con người có thể đọc được chứa địa chỉ máy chủ hoặc địa chỉ IP, số cổng không bắt buộc (được phân tách bằng dấu ":") và tên giao diện không bắt buộc (được phân tách bằng dấu ":"), hỗ trợ các định dạng sau:
RegisterInetLayerErrorFormatter(void)
void
Đăng ký trình định dạng lỗi văn bản cho các lỗi Inet Layer (Lớp Inet).
SocketsIPv4JoinLeaveMulticastGroup(int aSocket, InterfaceId aInterfaceId, const IPAddress & aAddress, int aCommand)
SocketsIPv6JoinLeaveMulticastGroup(int aSocket, InterfaceId aInterfaceId, const IPAddress & aAddress, int aCommand)
SocketsSetMulticastLoopback(int aSocket, bool aLoopback, int aProtocol, int aOption)
SocketsSetMulticastLoopback(int aSocket, IPVersion aIPVersion, bool aLoopback)

Lớp

nl::Inet::AsyncDNSResolverSockets

Đây là lớp nội bộ của InetLayer cung cấp API trợ giúp cho quá trình phân giải Hệ thống tên miền không đồng bộ (DNS) trong InetLayer.

nl::Inet::DNSResolver

Đây là lớp nội bộ của InetLayer cung cấp bản tóm tắt bản phân giải Hệ thống tên miền (DNS) trong InetLayer.

nl::Inet::EndPointBasis

Cơ sở của các lớp điểm cuối truyền tải qua Internet.

nl::Inet::IPAddress

Địa chỉ giao thức Internet.

nl::Inet::IPEndPointBasis

Các đối tượng của lớp này đại diện cho các điểm cuối giao thức IP không thể tạo thực thể.

nl::Inet::IPPacketInfo

Thông tin về tin nhắn đến/gọi đi/kết nối.

nl::Inet::IPPrefix

Tiền tố địa chỉ giao thức Internet.

nl::Inet::InetLayer

Nhờ vậy, bạn có thể truy cập vào các dịch vụ Internet, trong đó có bộ tính giờ, hoạt động phân giải Hệ thống tên miền (DNS), truyền tải mạng TCP, truyền tải mạng UDP và truyền tải mạng thô cho một luồng duy nhất.

nl::Inet::InetLayerBasis

Đây là lớp cơ sở của các đối tượng được tính tham chiếu do đối tượng InetLayer quản lý.

nl::Inet::InterfaceAddressIterator

Trình lặp cho danh sách địa chỉ IP của giao diện mạng hệ thống.

nl::Inet::InterfaceIterator

Trình lặp cho danh sách giao diện mạng hệ thống.

nl::Inet::RawEndPoint

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

nl::Inet::SocketEvents

Biểu thị một tập hợp các sự kiện I/O được yêu cầu/đang chờ xử lý trên một ổ cắm.

nl::Inet::TCPEndPoint

Các đối tượng của lớp này đại diện cho các điểm cuối truyền tải TCP.

nl::Inet::TunEndPoint

Các đối tượng của lớp này đại diện cho giao diện đường hầm.

nl::Inet::UDPEndPoint

Các đối tượng của lớp này đại diện cho các điểm cuối truyền tải UDP.

Hiệp hội

nl::Inet::PeerSockAddr

Không gian tên

nl::Inet::Platform

Bảng liệt kê

@7

 @7

Định nghĩa kiểu sự kiện lớp Inet.

Thuộc tính
kInetEvent_DNSResolveComplete

Sự kiện hoàn tất quá trình phân giải tên DNS.

kInetEvent_RawDataReceived

Sự kiện nhận dữ liệu qua điểm cuối thô InetLayer.

kInetEvent_TCPConnectComplete

Sự kiện hoàn tất kết nối TCP.

kInetEvent_TCPConnectionReceived

Sự kiện tiếp nhận kết nối TCP.

kInetEvent_TCPDataReceived

Sự kiện nhận dữ liệu qua kết nối TCP.

kInetEvent_TCPDataSent

Sự kiện truyền dữ liệu qua kết nối TCP.

kInetEvent_TCPError

Sự kiện lỗi trên kết nối TCP.

kInetEvent_TunDataReceived

Sự kiện tiếp nhận dữ liệu qua đường hầm Weave.

kInetEvent_UDPDataReceived

Sự kiện nhận dữ liệu qua UDP.

DNSOptions

 DNSOptions

Các tuỳ chọn kiểm soát cách thực hiện quá trình phân giải địa chỉ IP.

Thuộc tính
kDNSOption_AddrFamily_Any

Trả về địa chỉ IPv4 và/hoặc IPv6 theo thứ tự được máy chủ định danh trả về.

kDNSOption_AddrFamily_IPv4Only

Chỉ trả về các địa chỉ IPv4.

kDNSOption_AddrFamily_IPv4Preferred

Trả về địa chỉ IPv4 và/hoặc IPv6, trong đó địa chỉ IPv4 được liệt kê trước.

kDNSOption_AddrFamily_IPv6Only

Chỉ trả về các địa chỉ IPv6.

kDNSOption_AddrFamily_IPv6Preferred

Trả về địa chỉ IPv4 và/hoặc IPv6, trong đó địa chỉ IPv6 được liệt kê trước.

kDNSOption_AddrFamily_Mask

Các bit trong giá trị số nguyên DNSOptions đại diện cho nhóm địa chỉ mong muốn.

kDNSOption_Flags_Mask

Các bit trong giá trị số nguyên DNSOptions dành riêng cho cờ.

kDNSOption_ValidFlags

Tập hợp tất cả các cờ DNSOption hợp lệ.

IPAddressType

 IPAddressType

Nhóm địa chỉ giao thức Internet.

Giá trị của loại IPAddressType được phương thức IPAddress::Type() trả về. Chúng cho biết nhóm địa chỉ liên quan đến việc sử dụng địa chỉ.

Thuộc tính
kIPAddressType_Any

Địa chỉ Internet không xác định (độc lập với phiên bản giao thức)

kIPAddressType_IPv4

Giao thức Internet phiên bản 4.

kIPAddressType_IPv6

Giao thức Internet phiên bản 6.

kIPAddressType_Unknown

Không được sử dụng.

IPProtocol

 IPProtocol

Số lượng một số giao thức trong nhóm IP.

Thuộc tính
kIPProtocol_ICMPv4

ICMP phiên bản 4.

kIPProtocol_ICMPv6

ICMP phiên bản 6.

IPV6MulticastGroup

 IPV6MulticastGroup

Mã nhận dạng nhóm truyền đa hướng cho giao thức Internet.

Giá trị của loại IPV6MulticastGroup được dùng để gọi phương thức IPAddress::MakeIPv6Multicast(). Các thông tin này cho biết các giá trị nhận dạng nhóm phân biệt do IETF đăng ký với IANA.

Thuộc tính
kIPV6MulticastGroup_AllRouters

RFC 4291.

IPVersion

 IPVersion

Phiên bản của giao thức IP đang được sử dụng.

Thuộc tính
kIPVersion_4

IPv4.

kIPVersion_6

IPv6.

IPv6MulticastFlag

 IPv6MulticastFlag

Cờ đa hướng giao thức Internet v6.

Giá trị của loại IPv6MulticastFlag được dùng để gọi các phương thức IPAddress::MakeIPv6Multicast(). Các thông báo này cho biết loại địa chỉ phát đa hướng IPv6 cần tạo. Những số điện thoại này do IETF đăng ký với IANA.

Thuộc tính
kIPv6MulticastFlag_Prefix

Địa chỉ phát đa hướng là (1) dựa trên tiền tố mạng.

kIPv6MulticastFlag_Transient

Địa chỉ đa hướng là (1) tạm thời (tức là được gán động) thay vì (0) phổ biến (tức là được gán IANA).

IPv6MulticastScope

 IPv6MulticastScope

Phạm vi địa chỉ đa hướng của giao thức Internet.

Giá trị của loại IPv6MulticastScope được dùng để gọi phương thức IPAddress::MakeIPv6Multicast(). Các trường này cho biết phạm vi có thể định tuyến của nhóm phát đa hướng được chỉ định theo kết quả. Những số điện thoại này do IETF đăng ký với IANA.

Thuộc tính
kIPv6MulticastScope_Admin

Phạm vi thực tế theo địa phương.

kIPv6MulticastScope_Global

Phạm vi trên toàn cầu.

kIPv6MulticastScope_IPv4

Phạm vi thực tế cục bộ ("IPv4").

kIPv6MulticastScope_Interface

Phạm vi giao diện cục bộ.

kIPv6MulticastScope_Link

Phạm vi liên kết cục bộ.

kIPv6MulticastScope_Organization

Phạm vi tổ chức-địa phương.

kIPv6MulticastScope_Site

Phạm vi thực tế theo địa phương.

Typedef

InterfaceId

struct netif * InterfaceId

Chỉ báo cho giao diện mạng của hệ thống.

Khả năng di chuyển phụ thuộc vào việc không từng chứng kiến được bí danh này. Trong tương lai, nó có thể được thay thế bằng một lớp mờ cụ thể.

Lưu ý: Thuật ngữ "mã nhận dạng giao diện" cũng thường đề cập đến 64 bit thấp hơn của địa chỉ IPv6 trong tất cả các tài liệu tiêu chuẩn IETF có liên quan, trong đó từ viết tắt "IID" thường được sử dụng. Trong văn bản này, thuật ngữ "chỉ báo giao diện" đề cập đến các giá trị của loại đại diện này.

Biến

sIOCTLSocket

int sIOCTLSocket = -1

Hàm

CheckMulticastGroupArgs

INET_ERROR CheckMulticastGroupArgs(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

CloseIOCTLSocket

void CloseIOCTLSocket(
  void
)

Đóng ổ cắm chung do GetIOCTLSocket tạo.

Hàm này được cung cấp cho các trường hợp không mở ổ cắm IOCTL toàn cục sẽ được ghi lại là rò rỉ.

Lưu ý: Hàm này KHÔNG an toàn cho luồng đối với GetIOCTLSocket.

FormatInetLayerError

bool FormatInetLayerError(
  char *buf,
  uint16_t bufSize,
  int32_t err
)

Nếu xảy ra lỗi Lớp Inet, hàm này sẽ trả về một chuỗi C kết thúc bằng NULL mà con người có thể đọc được, dùng để mô tả lỗi.

Thông tin chi tiết
Các tham số
[in] buf
Vùng đệm mà chuỗi lỗi sẽ được đặt vào đó.
[in] bufSize
Kích thước của vùng đệm đã cung cấp tính bằng byte.
[in] err
Lỗi cần được mô tả.
Trả về
true Nếu chuỗi mô tả được ghi vào vùng đệm đã cung cấp.
Trả về
false Nếu lỗi được cung cấp không phải là lỗi Lớp Inet.

GetIOCTLSocket

int GetIOCTLSocket(
  void
)

Trả về một ổ cắm đa năng chung hữu ích để gọi một số IOCTL mạng nhất định.

Hàm này an toàn với luồng trên mọi nền tảng.

GetInterfaceName

NL_DLL_EXPORT INET_ERROR GetInterfaceName(
  InterfaceId intfId,
  char *nameBuf,
  size_t nameBufSize
)

Lấy tên của giao diện mạng.

Writes the name of the network interface as \c NUL terminated text string
at \c nameBuf. The name of the unspecified network interface is the empty
string.

Thông tin chi tiết
Các tham số
[in] intfId
giao diện mạng
[in] nameBuf
vùng bộ nhớ để ghi tên giao diện
[in] nameBufSize
kích thước của khu vực được biểu thị bằng nameBuf
Giá trị trả về
INET_NO_ERROR
kết quả thành công, tên giao diện đã được viết
INET_ERROR_NO_MEMORY
tên quá lớn nên không thể ghi vào bộ đệm
other
lỗi hệ thống hoặc nền tảng khác

INET_IsInetEvent

bool INET_IsInetEvent(
  Weave::System::EventType aType
)

Kiểm tra để xác minh xem System::EventType có phải là loại sự kiện lớp Inet hợp lệ hay không.

Thông tin chi tiết
Các tham số
[in] aType
Loại sự kiện Lớp hệ thống dệt.
Trả về
true nếu nằm trong phạm vi được liệt kê; nếu không thì là false.

InterfaceNameToId

NL_DLL_EXPORT INET_ERROR InterfaceNameToId(
  const char *intfName,
  InterfaceId & intfId
)

Tìm kiếm tên được chỉ định trong danh sách giao diện mạng.

On LwIP, this function must be called with the LwIP stack lock acquired.

The \c intfId parameter is not updated unless the value returned is
\c INET_NO_ERROR. It should be initialized with \c INET_NULL_INTERFACEID
before calling this function.

Thông tin chi tiết
Các tham số
[in] intfName
tên của giao diện mạng để tìm
[out] intfId
chỉ báo giao diện mạng để chỉ định
Giá trị trả về
INET_NO_ERROR
thành công, đã cho biết giao diện mạng
INET_ERROR_UNKNOWN_INTERFACE
không tìm thấy giao diện mạng nào
other
lỗi hệ thống hoặc nền tảng khác

LwIPBindInterface

INET_ERROR LwIPBindInterface(
  struct raw_pcb *aRaw,
  InterfaceId intfId
)

LwIPBindInterface

INET_ERROR LwIPBindInterface(
  struct udp_pcb *aUDP,
  InterfaceId intfId
)

NetmaskToPrefixLength

uint8_t NetmaskToPrefixLength(
  const uint8_t *netmask,
  uint16_t netmaskLen
)

Tính độ dài tiền tố từ mặt nạ mạng có độ dài thay đổi.

ParseHostAndPort

INET_ERROR ParseHostAndPort(
  const char *aString,
  uint16_t aStringLen,
  const char *& aHost,
  uint16_t & aHostLen,
  uint16_t & aPort
)

Phân tích cú pháp một chuỗi mà con người có thể đọc được, chứa địa chỉ máy chủ hoặc địa chỉ IP và số cổng không bắt buộc (được phân tách bằng dấu ":"), hỗ trợ các định dạng sau:

  • :
  • :
  • []:

Thông tin chi tiết
Các tham số
[in] aString
Chuỗi mà con người có thể sử dụng để phân tích cú pháp.
[in] aStringLen
Độ dài của aString, tính bằng ký tự.
[out] aHost
Con trỏ đến phần tên máy chủ lưu trữ của chuỗi đã phân tích cú pháp.
[out] aHostLen
Độ dài (tính bằng ký tự) của một Máy chủ lưu trữ.
[out] aPort
Số cổng (nếu có) và được phân tích cú pháp thành công; nếu không thì sẽ là 0.
Trả về
INET_ERROR_INVALID_HOST_NAME Nếu dữ liệu đầu vào cần phân tích cú pháp có độ dài bằng 0 hoặc không đúng định dạng.
Trả về
INET_ERROR_HOST_NAME_TOO_LONG Nếu tên máy chủ vượt quá 253 ký tự.
Trả về
INET_NO_ERROR Khi thành công.

ParseHostPortAndInterface

INET_ERROR ParseHostPortAndInterface(
  const char *aString,
  uint16_t aStringLen,
  const char *& aHost,
  uint16_t & aHostLen,
  uint16_t & aPort,
  const char *& aInterface,
  uint16_t & aInterfaceLen
)

Phân tích cú pháp một chuỗi mà con người có thể đọc được chứa địa chỉ máy chủ hoặc địa chỉ IP, số cổng không bắt buộc (được phân tách bằng dấu ":") và tên giao diện không bắt buộc (được phân tách bằng dấu ":"), hỗ trợ các định dạng sau:

  • %
  • :
  • :%
  • %
  • :
  • :%
  • %
  • []:
  • []:%

Thông tin chi tiết
Các tham số
[in] aString
Chuỗi mà con người có thể sử dụng để phân tích cú pháp.
[in] aStringLen
Độ dài của aString, tính bằng ký tự.
[out] aHost
Con trỏ đến phần tên máy chủ lưu trữ của chuỗi đã phân tích cú pháp.
[out] aHostLen
Độ dài (tính bằng ký tự) của một Máy chủ lưu trữ.
[out] aPort
Số cổng (nếu có) và được phân tích cú pháp thành công; nếu không thì sẽ là 0.
[out] aInterface
Con trỏ đến phần giao diện của chuỗi đã phân tích cú pháp.
[out] aInterfaceLen
Độ dài (tính bằng ký tự) của aInterface.
Trả về
INET_ERROR_INVALID_HOST_NAME Nếu dữ liệu đầu vào cần phân tích cú pháp có độ dài bằng 0 hoặc không đúng định dạng.
Trả về
INET_ERROR_HOST_NAME_TOO_LONG Nếu tên máy chủ vượt quá 253 ký tự.
Trả về
INET_NO_ERROR Khi thành công.

RegisterInetLayerErrorFormatter

void RegisterInetLayerErrorFormatter(
  void
)

Đăng ký trình định dạng lỗi văn bản cho các lỗi Inet Layer (Lớp Inet).

SocketsIPv4JoinLeaveMulticastGroup

INET_ERROR SocketsIPv4JoinLeaveMulticastGroup(
  int aSocket,
  InterfaceId aInterfaceId,
  const IPAddress & aAddress,
  int aCommand
)

SocketsIPv6JoinLeaveMulticastGroup

INET_ERROR SocketsIPv6JoinLeaveMulticastGroup(
  int aSocket,
  InterfaceId aInterfaceId,
  const IPAddress & aAddress,
  int aCommand
)

SocketsSetMulticastLoopback

INET_ERROR SocketsSetMulticastLoopback(
  int aSocket,
  bool aLoopback,
  int aProtocol,
  int aOption
)

SocketsSetMulticastLoopback

INET_ERROR SocketsSetMulticastLoopback(
  int aSocket,
  IPVersion aIPVersion,
  bool aLoopback
)