DNS

Mô-đun này bao gồm các chức năng kiểm soát việc giao tiếp DNS.

Tóm tắt

Các hàm trong mô-đun này chỉ dùng được nếu bạn bật tính năng OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE.

Bảng liệt kê

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
enum
Kiểu biểu thị chế độ NAT64 trong otDnsQueryConfig.
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
enum
Kiểu đại diện cho cờ "Recursion Desired" (RD) trong otDnsQueryConfig.
otDnsServiceMode{
  OT_DNS_SERVICE_MODE_UNSPECIFIED = 0,
  OT_DNS_SERVICE_MODE_SRV = 1,
  OT_DNS_SERVICE_MODE_TXT = 2,
  OT_DNS_SERVICE_MODE_SRV_TXT = 3,
  OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE = 4,
  OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE = 5
}
enum
Kiểu biểu thị chế độ phân giải dịch vụ trong otDnsQueryConfig.
otDnsTransportProto{
  OT_DNS_TRANSPORT_UDP = 1,
  OT_DNS_TRANSPORT_TCP = 2
}
enum
Kiểu đại diện cho giao thức truyền tải DNS trong otDnsQueryConfig.

Typedef

otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext) typedef
void(*
Con trỏ được gọi khi nhận được phản hồi DNS cho một truy vấn phân giải địa chỉ.
otDnsAddressResponse typedef
Một hình ảnh minh hoạ không rõ ràng thể hiện phản hồi cho một truy vấn DNS phân giải địa chỉ.
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) typedef
void(*
Con trỏ được gọi khi nhận được phản hồi DNS cho truy vấn duyệt qua (liệt kê thực thể dịch vụ).
otDnsBrowseResponse typedef
Hình ảnh minh hoạ không rõ ràng về phản hồi cho một truy vấn DNS duyệt qua (liệt kê thực thể dịch vụ).
otDnsQueryConfig typedef
Đại diện cho cấu hình truy vấn DNS.
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext) typedef
void(*
Con trỏ được gọi khi nhận được phản hồi DNS cho một truy vấn phân giải thực thể dịch vụ.
otDnsServiceInfo typedef
Cung cấp thông tin cho một thực thể dịch vụ DNS.
otDnsServiceResponse typedef
Hình ảnh minh hoạ mờ về phản hồi cho một truy vấn DNS phân giải thực thể dịch vụ.
otDnsTxtEntry typedef
struct otDnsTxtEntry
Đại diện cho một mục của bản ghi TXT đại diện cho một cặp khoá/giá trị (RFC 6763 – phần 6.3).
otDnsTxtEntryIterator typedef
Đại diện cho một đối tượng lặp cho các mục nhập bản ghi TXT (cặp khoá/giá trị).

Hàm

otDnsAddressResponseGetAddress(const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Lấy địa chỉ IPv6 được liên kết với phản hồi DNS phân giải địa chỉ.
otDnsAddressResponseGetHostName(const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
Lấy tên máy chủ đầy đủ được liên kết với phản hồi DNS phân giải địa chỉ.
otDnsBrowseResponseGetHostAddress(const otDnsBrowseResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Lấy địa chỉ IPv6 của máy chủ từ phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).
otDnsBrowseResponseGetServiceInfo(const otDnsBrowseResponse *aResponse, const char *aInstanceLabel, otDnsServiceInfo *aServiceInfo)
Lấy thông tin về một thực thể dịch vụ qua phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).
otDnsBrowseResponseGetServiceInstance(const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize)
Lấy một thực thể dịch vụ được liên kết với phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).
otDnsBrowseResponseGetServiceName(const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
Lấy tên dịch vụ được liên kết với phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).
otDnsClientBrowse(otInstance *aInstance, const char *aServiceName, otDnsBrowseCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Gửi truy vấn duyệt qua DNS (liệt kê thực thể dịch vụ) cho một tên dịch vụ cụ thể.
otDnsClientGetDefaultConfig(otInstance *aInstance)
Lấy cấu hình truy vấn mặc định hiện tại mà ứng dụng DNS sử dụng.
otDnsClientResolveAddress(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Gửi một truy vấn DNS phân giải địa chỉ cho (các) bản ghi AAAA(IPv6) cho một tên máy chủ lưu trữ cụ thể.
otDnsClientResolveIp4Address(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Gửi truy vấn DNS phân giải địa chỉ cho (các) bản ghi A(IPv4) đối với một tên máy chủ lưu trữ cụ thể.
otDnsClientResolveService(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Bắt đầu quá trình phân giải thực thể dịch vụ DNS cho một thực thể dịch vụ cụ thể.
otDnsClientResolveServiceAndHostAddress(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
Bắt đầu quá trình phân giải thực thể dịch vụ DNS cho một thực thể dịch vụ cụ thể, trong đó có khả năng phân giải địa chỉ tiếp theo cho tên máy chủ lưu trữ được phát hiện cho thực thể dịch vụ đó.
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
Đặt cấu hình truy vấn mặc định trên máy khách DNS.
otDnsEncodeTxtData(const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength)
Mã hoá một danh sách cụ thể gồm các mục nhập bản ghi TXT (các cặp khoá/giá trị) thành dữ liệu TXT (theo định dạng do RFC 6763 chỉ định).
otDnsGetNextTxtEntry(otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry)
Phân tích cú pháp dữ liệu TXT từ một trình lặp và nhận mục nhập bản ghi TXT tiếp theo (cặp khoá/giá trị).
otDnsInitTxtEntryIterator(otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength)
void
Khởi động một trình lặp lại của bản ghi TXT.
otDnsIsNameCompressionEnabled(void)
bool
Cho biết đã bật chế độ "Nén tên DNS" hay chưa.
otDnsServiceResponseGetHostAddress(const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
Lấy địa chỉ IPv6 của máy chủ từ phản hồi phân giải thực thể dịch vụ DNS.
otDnsServiceResponseGetServiceInfo(const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo)
Nhận thông tin về một phiên bản dịch vụ qua phản hồi phân giải phiên bản dịch vụ DNS.
otDnsServiceResponseGetServiceName(const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize)
Lấy tên phiên bản dịch vụ được liên kết với phản hồi phân giải phiên bản dịch vụ DNS.
otDnsSetNameCompressionEnabled(bool aEnabled)
void
Bật/tắt chế độ "nén tên DNS".

Cấu trúc

otDnsQueryConfig

Đại diện cho cấu hình truy vấn DNS.

otDnsServiceInfo

Cung cấp thông tin cho một thực thể dịch vụ DNS.

otDnsTxtEntry

Đại diện cho một mục của bản ghi TXT đại diện cho một cặp khoá/giá trị (RFC 6763 – phần 6.3).

otDnsTxtEntryIterator

Đại diện cho một đối tượng lặp cho các mục nhập bản ghi TXT (cặp khoá/giá trị).

Bảng liệt kê

otDnsNat64Mode

 otDnsNat64Mode

Kiểu biểu thị chế độ NAT64 trong otDnsQueryConfig.

Chế độ NAT64 cho biết cho phép hay không cho phép dịch địa chỉ NAT64 trong quá trình phân giải địa chỉ máy khách DNS. Chế độ này chỉ được dùng khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE.

Thuộc tính
OT_DNS_NAT64_ALLOW

Cho phép dịch địa chỉ NAT64 trong quá trình phân giải địa chỉ máy khách DNS.

OT_DNS_NAT64_DISALLOW

Không cho phép dịch địa chỉ NAT64 trong quá trình phân giải địa chỉ máy khách DNS.

OT_DNS_NAT64_UNSPECIFIED

Chế độ NAT64 chưa được chỉ định. Sử dụng chế độ NAT64 mặc định.

otDnsRecursionFlag

 otDnsRecursionFlag

Kiểu đại diện cho cờ "Recursion Desired" (RD) trong otDnsQueryConfig.

Thuộc tính
OT_DNS_FLAG_NO_RECURSION

Cho biết máy chủ định danh DNS không thể phân giải truy vấn theo cách đệ quy.

OT_DNS_FLAG_RECURSION_DESIRED

Cho biết máy chủ định danh DNS có thể phân giải truy vấn theo cách đệ quy.

OT_DNS_FLAG_UNSPECIFIED

Biểu thị là cờ chưa được chỉ định.

otDnsServiceMode

 otDnsServiceMode

Kiểu biểu thị chế độ phân giải dịch vụ trong otDnsQueryConfig.

Chế độ này chỉ được dùng trong quá trình phân giải dịch vụ ứng dụng DNS otDnsClientResolveService(). Trường này xác định các loại bản ghi cần truy vấn.

Thuộc tính
OT_DNS_SERVICE_MODE_SRV

Chỉ truy vấn bản ghi SRV.

OT_DNS_SERVICE_MODE_SRV_TXT

Truy vấn cả bản ghi SRV và TXT trong cùng một thông báo.

OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE

Trước tiên, hãy truy vấn TXT/SRV. Nếu không thành công, hãy truy vấn riêng.

OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE

Truy vấn song song cho SRV và TXT bằng các thông báo riêng biệt.

OT_DNS_SERVICE_MODE_TXT

Chỉ truy vấn đối với bản ghi TXT.

OT_DNS_SERVICE_MODE_UNSPECIFIED

Chế độ chưa được chỉ định. Sử dụng chế độ dịch vụ mặc định.

otDnsTransportProto

 otDnsTransportProto

Kiểu đại diện cho giao thức truyền tải DNS trong otDnsQueryConfig.

Chỉ hỗ trợ OT_DNS_TRANSPORT_TCP này khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE.

Thuộc tính
OT_DNS_TRANSPORT_TCP

Truy vấn DNS phải được gửi qua UDP.

OT_DNS_TRANSPORT_UDP

Chưa xác định phương thức truyền DNS.

Typedef

otDnsAddressCallback

void(* otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext)

Con trỏ được gọi khi nhận được phản hồi DNS cho một truy vấn phân giải địa chỉ.

Trong lệnh gọi lại này, người dùng có thể sử dụng các hàm otDnsAddressResponseGet{Item}() cùng với con trỏ aResponse để biết thêm thông tin về phản hồi.

Con trỏ aResponse chỉ có thể được dùng trong lệnh gọi lại này và con trỏ sẽ không còn hợp lệ sau khi trở về từ hàm này. Vì vậy, người dùng KHÔNG ĐƯỢC giữ lại con trỏ aResponse để sử dụng sau này.

aError có thể có:

Thông tin chi tiết
Các tham số
[in] aError
Kết quả của giao dịch DNS.
[in] aResponse
Một con trỏ đến phản hồi (luôn là giá trị không rỗng).
[in] aContext
Con trỏ đến ngữ cảnh dành riêng cho ứng dụng.

  • OT_ERROR_NONE Đã nhận được một phản hồi.
  • OT_ERROR_ABORT Một giao dịch DNS đã bị ngăn xếp hủy.
  • OT_ERROR_DISPLAY_TIMEOUT Không nhận được phản hồi DNS nào trong thời gian chờ.

Nếu máy chủ từ chối yêu cầu phân giải địa chỉ, mã lỗi từ máy chủ được ánh xạ như sau:

  • (0) NOERROR Thành công (không có điều kiện lỗi) -> OT_ERROR_NONE
  • (1) Máy chủ FORMERR không thể diễn giải do lỗi định dạng -> OT_ERROR_PARSE
  • (2) Máy chủ SERVFAIL gặp lỗi nội bộ -> OT_ERROR_FAILED
  • (3) Tên NXDOMAIN lẽ ra phải tồn tại, không tồn tại -> OT_ERROR_NOT_FOUND
  • (4) Máy chủ NOTIMP không hỗ trợ loại truy vấn (OpCode) -> OT_ERROR_NOT_IMPLEMENTED
  • (5) REFUSED máy chủ bị từ chối vì lý do chính sách/bảo mật -> OT_ERROR_Security
  • (6) YXDOMAIN Một số tên không nên tồn tại, nhưng có tồn tại -> OT_ERROR_DUPLICATED
  • (7) YXRR Giả lập một số bộ bản đồ không nên tồn tại, nhưng có tồn tại -> OT_ERROR_DUPLICATED
  • (8) NXRR kín Một số tập dữ liệu lặp phải tồn tại, không tồn tại -> OT_ERROR_NOT_FOUND
  • (9) Dịch vụ NOTAUTH không có căn cứ cho vùng -> OT_ERROR_SECURE
  • (10) NOTZONE Một tên không nằm trong vùng -> OT_ERROR_PARSE
  • (20) BADNAME Tên không hợp lệ -> OT_ERROR_PARSE
  • (21) Thuật toán kém BADALG -> OT_ERROR_Security
  • (22) Rút ngắn BADTRUN không hợp lệ -> OT_ERROR_PARSE
  • Các mã phản hồi khác -> OT_ERROR_FAILED

otDnsAddressResponse

struct otDnsAddressResponse otDnsAddressResponse

Một hình ảnh minh hoạ không rõ ràng thể hiện phản hồi cho một truy vấn DNS phân giải địa chỉ.

Con trỏ đến thực thể của loại này được cung cấp qua lệnh gọi lại otDnsAddressCallback.

otDnsBrowseCallback

void(* otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext)

Con trỏ được gọi khi nhận được phản hồi DNS cho truy vấn duyệt qua (liệt kê thực thể dịch vụ).

Trong lệnh gọi lại này, người dùng có thể sử dụng các hàm otDnsBrowseResponseGet{Item}() cùng với con trỏ aResponse để biết thêm thông tin về phản hồi.

Con trỏ aResponse chỉ có thể được dùng trong lệnh gọi lại này và con trỏ sẽ không còn hợp lệ sau khi trở về từ hàm này. Vì vậy, người dùng KHÔNG ĐƯỢC giữ lại con trỏ aResponse để sử dụng sau này.

Để biết danh sách đầy đủ các giá trị có thể có cho aError, vui lòng xem otDnsAddressCallback().

Thông tin chi tiết
Các tham số
[in] aError
Kết quả của giao dịch DNS.
[in] aResponse
Một con trỏ đến phản hồi (luôn là giá trị không rỗng).
[in] aContext
Con trỏ đến ngữ cảnh dành riêng cho ứng dụng.

otDnsBrowseResponse

struct otDnsBrowseResponse otDnsBrowseResponse

Hình ảnh minh hoạ không rõ ràng về phản hồi cho một truy vấn DNS duyệt qua (liệt kê thực thể dịch vụ).

Con trỏ đến thực thể của loại này được cung cấp qua lệnh gọi lại otDnsBrowseCallback.

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

Đại diện cho cấu hình truy vấn DNS.

Bạn có thể đặt bất kỳ trường nào trong cấu trúc này thành 0 để cho biết trường không được chỉ định. Cách xử lý các trường chưa được chỉ định sẽ được xác định bằng hàm sử dụng thực thể của otDnsQueryConfig.

otDnsServiceCallback

void(* otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext)

Con trỏ được gọi khi nhận được phản hồi DNS cho một truy vấn phân giải thực thể dịch vụ.

Trong lệnh gọi lại này, người dùng có thể sử dụng các hàm otDnsServiceResponseGet{Item}() cùng với con trỏ aResponse để biết thêm thông tin về phản hồi.

Con trỏ aResponse chỉ có thể được dùng trong lệnh gọi lại này và con trỏ sẽ không còn hợp lệ sau khi trở về từ hàm này. Vì vậy, người dùng KHÔNG ĐƯỢC giữ lại con trỏ aResponse để sử dụng sau này.

Để biết danh sách đầy đủ các giá trị có thể có cho aError, vui lòng xem otDnsAddressCallback().

Thông tin chi tiết
Các tham số
[in] aError
Kết quả của giao dịch DNS.
[in] aResponse
Một con trỏ đến phản hồi (luôn là giá trị không rỗng).
[in] aContext
Con trỏ đến ngữ cảnh dành riêng cho ứng dụng.

otDnsServiceInfo

struct otDnsServiceInfo otDnsServiceInfo

Cung cấp thông tin cho một thực thể dịch vụ DNS.

otDnsServiceResponse

struct otDnsServiceResponse otDnsServiceResponse

Hình ảnh minh hoạ mờ về phản hồi cho một truy vấn DNS phân giải thực thể dịch vụ.

Con trỏ đến thực thể của loại này được cung cấp qua lệnh gọi lại otDnsAddressCallback.

otDnsTxtEntry

struct otDnsTxtEntry otDnsTxtEntry

Đại diện cho một mục của bản ghi TXT đại diện cho một cặp khoá/giá trị (RFC 6763 – phần 6.3).

Các vùng đệm chuỗi do mKeymValue trỏ đến PHẢI duy trì và không thay đổi sau khi một thực thể của cấu trúc như vậy được chuyển đến OpenThread (như một phần của thực thể otSrpClientService).

Một mảng các mục nhập otDnsTxtEntry được dùng trong otSrpClientService để chỉ định bản ghi TXT đầy đủ (danh sách các mục nhập).

otDnsTxtEntryIterator

struct otDnsTxtEntryIterator otDnsTxtEntryIterator

Đại diện cho một đối tượng lặp cho các mục nhập bản ghi TXT (cặp khoá/giá trị).

Các trường dữ liệu trong cấu trúc này dành cho lõi OpenThread sử dụng và phương thức gọi không được đọc hoặc thay đổi các trường đó.

Hàm

otDnsAddressResponseGetAddress

otError otDnsAddressResponseGetAddress(
  const otDnsAddressResponse *aResponse,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

Lấy địa chỉ IPv6 được liên kết với phản hồi DNS phân giải địa chỉ.

Chỉ được sử dụng từ otDnsAddressCallback.

Phản hồi có thể bao gồm nhiều bản ghi địa chỉ IPv6. Bạn có thể sử dụng aIndex để lặp lại danh sách địa chỉ. Chỉ mục 0 sẽ nhận địa chỉ đầu tiên, v.v. Khi đến cuối danh sách, OT_ERROR_NOT_FOUND sẽ được trả về.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[in] aIndex
Chỉ mục bản ghi địa chỉ cần truy xuất.
[out] aAddress
Con trỏ đến địa chỉ IPv6 để xuất địa chỉ (KHÔNG ĐƯỢC là NULL).
[out] aTtl
Con trỏ đến uint32_t để đầu ra TTL cho địa chỉ. Giá trị này có thể là NULL nếu phương thức gọi không muốn nhận TTL.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công địa chỉ.
OT_ERROR_NOT_FOUND
Không có bản ghi địa chỉ trong aResponse tại aIndex.
OT_ERROR_PARSE
Không thể phân tích cú pháp các bản ghi trong aResponse.
OT_ERROR_INVALID_STATE
Không có tiền tố NAT64 (chỉ áp dụng khi cho phép NAT64).

otDnsAddressResponseGetHostName

otError otDnsAddressResponseGetHostName(
  const otDnsAddressResponse *aResponse,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

Lấy tên máy chủ đầy đủ được liên kết với phản hồi DNS phân giải địa chỉ.

Chỉ được sử dụng từ otDnsAddressCallback.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[out] aNameBuffer
Bộ đệm cho mảng char để xuất tên máy chủ đầy đủ (PHẢI KHÔNG là NULL).
[in] aNameBufferSize
Kích thước của aNameBuffer.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công tên đầy đủ của máy chủ lưu trữ.
OT_ERROR_NO_BUFS
Tên này không vừa trong aNameBuffer.

otDnsBrowseResponseGetHostAddress

otError otDnsBrowseResponseGetHostAddress(
  const otDnsBrowseResponse *aResponse,
  const char *aHostName,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

Lấy địa chỉ IPv6 của máy chủ từ phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).

Chỉ được sử dụng từ otDnsBrowseCallback.

Phản hồi có thể bao gồm 0 hoặc nhiều bản ghi địa chỉ IPv6. Bạn có thể sử dụng aIndex để lặp lại danh sách địa chỉ. Chỉ mục 0 sẽ nhận địa chỉ đầu tiên, v.v. Khi đến cuối danh sách, OT_ERROR_NOT_FOUND sẽ được trả về.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[in] aHostName
Tên máy chủ lưu trữ để nhận địa chỉ (KHÔNG ĐƯỢC là RỖNG).
[in] aIndex
Chỉ mục bản ghi địa chỉ cần truy xuất.
[out] aAddress
Con trỏ đến địa chỉ IPv6 để xuất địa chỉ (KHÔNG ĐƯỢC là NULL).
[out] aTtl
Con trỏ đến uint32_t để đầu ra TTL cho địa chỉ. Giá trị này có thể là NULL nếu phương thức gọi không muốn nhận TTL.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công địa chỉ.
OT_ERROR_NOT_FOUND
Không có bản ghi địa chỉ nào cho aHostname trong aResponse tại aIndex.
OT_ERROR_PARSE
Không thể phân tích cú pháp các bản ghi trong aResponse.

otDnsBrowseResponseGetServiceInfo

otError otDnsBrowseResponseGetServiceInfo(
  const otDnsBrowseResponse *aResponse,
  const char *aInstanceLabel,
  otDnsServiceInfo *aServiceInfo
)

Lấy thông tin về một thực thể dịch vụ qua phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).

Chỉ được sử dụng từ otDnsBrowseCallback.

Một phản hồi DNS duyệt qua có thể bao gồm bản ghi SRV, TXT và AAAA cho các thực thể dịch vụ được liệt kê. Đây là yêu cầu NÊN chứ không phải là PHẢI, và máy chủ/giải quyết không bắt buộc phải cung cấp điều này. Hàm này cố gắng truy xuất thông tin này cho một thực thể dịch vụ nhất định khi có sẵn.

  • Nếu không tìm thấy bản ghi SRV nào trùng khớp trong aResponse, hàm OT_ERROR_NOT_FOUND sẽ được trả về. Trong trường hợp này, hệ thống sẽ không đọc bản ghi bổ sung (không có TXT và/hoặc AAAA).
  • Nếu tìm thấy một bản ghi SRV trùng khớp trong aResponse, thì aServiceInfo sẽ được cập nhật và OT_ERROR_NONE sẽ được trả về.
  • Nếu không tìm thấy bản ghi TXT nào trùng khớp trong aResponse, thì mTxtDataSize trong aServiceInfo sẽ được thiết lập thành 0.
  • Nếu độ dài dữ liệu TXT lớn hơn mTxtDataSize, thì giá trị này sẽ được đọc một phần và mTxtDataTruncated được đặt thành true.
  • Nếu không tìm thấy bản ghi AAAA nào phù hợp trong aResponse, mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse,mHostAddressis set to the first one. The other addresses can be retrieved usingotDnsBrowseResponseGetHostAddress()`.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[in] aInstanceLabel
Nhãn thực thể dịch vụ (KHÔNG ĐƯỢC là NULL).
[out] aServiceInfo
ServiceInfo để xuất thông tin về thực thể dịch vụ (KHÔNG ĐƯỢC là NULL).
Giá trị trả về
OT_ERROR_NONE
Thông tin về phiên bản dịch vụ đã được đọc. Đã cập nhật aServiceInfo.
OT_ERROR_NOT_FOUND
Không tìm thấy bản ghi SRV trùng khớp cho aInstanceLabel.
OT_ERROR_NO_BUFS
Tên máy chủ và/hoặc dữ liệu TXT không vừa với vùng đệm nhất định.
OT_ERROR_PARSE
Không thể phân tích cú pháp các bản ghi trong aResponse.

otDnsBrowseResponseGetServiceInstance

otError otDnsBrowseResponseGetServiceInstance(
  const otDnsBrowseResponse *aResponse,
  uint16_t aIndex,
  char *aLabelBuffer,
  uint8_t aLabelBufferSize
)

Lấy một thực thể dịch vụ được liên kết với phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).

Chỉ được sử dụng từ otDnsBrowseCallback.

Phản hồi có thể bao gồm nhiều bản ghi bản sao dịch vụ. Bạn có thể sử dụng aIndex để lặp lại cho danh sách. Chỉ mục bằng 0 sẽ cung cấp bản ghi đầu tiên. Khi đến cuối danh sách, OT_ERROR_NOT_FOUND sẽ được trả về.

Lưu ý rằng hàm này sẽ nhận nhãn thực thể dịch vụ chứ không phải tên thực thể dịch vụ đầy đủ có dạng ...

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[in] aIndex
Chỉ mục bản ghi của thực thể dịch vụ cần truy xuất.
[out] aLabelBuffer
Vùng đệm vào mảng char để xuất nhãn thực thể dịch vụ (PHẢI KHÔNG là NULL).
[in] aLabelBufferSize
Kích thước của aLabelBuffer.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công phiên bản dịch vụ.
OT_ERROR_NO_BUFS
Tên này không vừa trong aNameBuffer.
OT_ERROR_NOT_FOUND
Không có bản ghi thực thể dịch vụ nào trong aResponse lúc aIndex.
OT_ERROR_PARSE
Không thể phân tích cú pháp các bản ghi trong aResponse.

otDnsBrowseResponseGetServiceName

otError otDnsBrowseResponseGetServiceName(
  const otDnsBrowseResponse *aResponse,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

Lấy tên dịch vụ được liên kết với phản hồi duyệt qua DNS (liệt kê thực thể dịch vụ).

Chỉ được sử dụng từ otDnsBrowseCallback.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[out] aNameBuffer
Bộ đệm cho mảng char để xuất tên dịch vụ (KHÔNG ĐƯỢC là NULL).
[in] aNameBufferSize
Kích thước của aNameBuffer.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công tên dịch vụ.
OT_ERROR_NO_BUFS
Tên này không vừa trong aNameBuffer.

otDnsClientBrowse

otError otDnsClientBrowse(
  otInstance *aInstance,
  const char *aServiceName,
  otDnsBrowseCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Gửi truy vấn duyệt qua DNS (liệt kê thực thể dịch vụ) cho một tên dịch vụ cụ thể.

Có sẵn khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

aConfig có thể là NULL. Trong trường hợp này, cấu hình mặc định (từ otDnsClientGetDefaultConfig()) sẽ được dùng làm cấu hình cho truy vấn này. Trong aConfig không phải giá trị NULL, bạn có thể để nguyên một số trường (giá trị 0). Sau đó, các trường chưa xác định sẽ được thay thế bằng các giá trị trong cấu hình mặc định.

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
[in] aServiceName
Tên dịch vụ để truy vấn (PHẢI KHÔNG là NULL).
[in] aCallback
Con trỏ hàm sẽ được gọi khi nhận được phản hồi hoặc hết thời gian chờ.
[in] aContext
Con trỏ đến thông tin ngữ cảnh tuỳ ý.
[in] aConfig
Con trỏ đến cấu hình để sử dụng cho truy vấn này.
Giá trị trả về
OT_ERROR_NONE
Đã gửi truy vấn thành công. aCallback sẽ được gọi để báo cáo trạng thái.
OT_ERROR_NO_BUFS
Không đủ bộ đệm để chuẩn bị và gửi truy vấn.

otDnsClientGetDefaultConfig

const otDnsQueryConfig * otDnsClientGetDefaultConfig(
  otInstance *aInstance
)

Lấy cấu hình truy vấn mặc định hiện tại mà ứng dụng DNS sử dụng.

Khi ngăn xếp OpenThread bắt đầu, cấu hình truy vấn DNS mặc định được xác định từ một tập hợp các tuỳ chọn cấu hình OT, chẳng hạn như OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS, _DEFAULT_SERVER_PORT, _DEFAULT_RESPONSE_TIMEOUT, v.v. (xem config/dns_client.h để biết tất cả tuỳ chọn cấu hình có liên quan).

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
Trả về
Con trỏ đến cấu hình mặc định hiện tại đang được máy khách DNS sử dụng.

otDnsClientResolveAddress

otError otDnsClientResolveAddress(
  otInstance *aInstance,
  const char *aHostName,
  otDnsAddressCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Gửi một truy vấn DNS phân giải địa chỉ cho (các) bản ghi AAAA(IPv6) cho một tên máy chủ lưu trữ cụ thể.

aConfig có thể là NULL. Trong trường hợp này, cấu hình mặc định (từ otDnsClientGetDefaultConfig()) sẽ được dùng làm cấu hình cho truy vấn này. Trong aConfig không phải giá trị NULL, bạn có thể để nguyên một số trường (giá trị 0). Sau đó, các trường chưa xác định sẽ được thay thế bằng các giá trị trong cấu hình mặc định.

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
[in] aHostName
Tên máy chủ lưu trữ để truy vấn địa chỉ (PHẢI KHÔNG là NULL).
[in] aCallback
Con trỏ hàm sẽ được gọi khi nhận được phản hồi hoặc hết thời gian chờ.
[in] aContext
Con trỏ đến thông tin ngữ cảnh tuỳ ý.
[in] aConfig
Con trỏ đến cấu hình để sử dụng cho truy vấn này.
Giá trị trả về
OT_ERROR_NONE
Đã gửi truy vấn thành công. aCallback sẽ được gọi để báo cáo trạng thái.
OT_ERROR_NO_BUFS
Không đủ bộ đệm để chuẩn bị và gửi truy vấn.
OT_ERROR_INVALID_ARGS
Tên máy chủ có định dạng không hợp lệ.
OT_ERROR_INVALID_STATE
Không thể gửi truy vấn vì giao diện Thread không hoạt động.

otDnsClientResolveIp4Address

otError otDnsClientResolveIp4Address(
  otInstance *aInstance,
  const char *aHostName,
  otDnsAddressCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Gửi truy vấn DNS phân giải địa chỉ cho (các) bản ghi A(IPv4) đối với một tên máy chủ lưu trữ cụ thể.

Bắt buộc và dùng được khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE.

Khi nhận được phản hồi thành công, địa chỉ sẽ được trả về từ aCallback dưới dạng phiên bản NAT64 IPv6 đã dịch của địa chỉ IPv4 từ phản hồi truy vấn.

aConfig có thể là NULL. Trong trường hợp này, cấu hình mặc định (từ otDnsClientGetDefaultConfig()) sẽ được dùng làm cấu hình cho truy vấn này. Trong aConfig không phải giá trị NULL, bạn có thể để nguyên một số trường (giá trị 0). Sau đó, các trường chưa xác định sẽ được thay thế bằng các giá trị trong cấu hình mặc định.

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
[in] aHostName
Tên máy chủ lưu trữ để truy vấn địa chỉ (PHẢI KHÔNG là NULL).
[in] aCallback
Con trỏ hàm sẽ được gọi khi nhận được phản hồi hoặc hết thời gian chờ.
[in] aContext
Con trỏ đến thông tin ngữ cảnh tuỳ ý.
[in] aConfig
Con trỏ đến cấu hình để sử dụng cho truy vấn này.
Giá trị trả về
OT_ERROR_NONE
Đã gửi truy vấn thành công. aCallback sẽ được gọi để báo cáo trạng thái.
OT_ERROR_NO_BUFS
Không đủ bộ đệm để chuẩn bị và gửi truy vấn.
OT_ERROR_INVALID_ARGS
Tên máy chủ có định dạng không hợp lệ hoặc NAT64 không được bật trong cấu hình.
OT_ERROR_INVALID_STATE
Không thể gửi truy vấn vì giao diện Thread không hoạt động.

otDnsClientResolveService

otError otDnsClientResolveService(
  otInstance *aInstance,
  const char *aInstanceLabel,
  const char *aServiceName,
  otDnsServiceCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Bắt đầu quá trình phân giải thực thể dịch vụ DNS cho một thực thể dịch vụ cụ thể.

Có sẵn khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

aConfig có thể là NULL. Trong trường hợp này, cấu hình mặc định (từ otDnsClientGetDefaultConfig()) sẽ được dùng làm cấu hình cho truy vấn này. Trong aConfig không phải giá trị NULL, bạn có thể để nguyên một số trường (giá trị 0). Sau đó, các trường chưa xác định sẽ được thay thế bằng các giá trị trong cấu hình mặc định.

Hàm này gửi truy vấn về các bản ghi SRV và/hoặc TXT cho thực thể dịch vụ cụ thể. Trường mServiceMode trong otDnsQueryConfig xác định bản ghi nào cần truy vấn (chỉ dành cho SSV, chỉ TXT hoặc cả SRV và TXT) và cách thực hiện truy vấn (cùng nhau trong cùng một thư, tách biệt song song hoặc ở chế độ tối ưu hoá trong đó ứng dụng sẽ thử trước trong cùng một thông báo rồi thử riêng biệt nếu không nhận được phản hồi).

Bản ghi SRV cung cấp thông tin về cổng dịch vụ, mức độ ưu tiên và trọng lượng cùng với tên máy chủ lưu trữ liên kết với thực thể dịch vụ. Hàm này KHÔNG thực hiện quá trình phân giải địa chỉ cho tên máy chủ lưu trữ được tìm thấy từ bản ghi SRV. Máy chủ/trình giải quyết có thể cung cấp(các) bản ghi AAAA/A cho tên máy chủ lưu trữ trong phần Dữ liệu bổ sung của phản hồi cho truy vấn SRV/TXT và thông tin này có thể được truy xuất bằng cách sử dụng otDnsServiceResponseGetServiceInfo() trong otDnsServiceCallback. Người dùng API này KHÔNG ĐƯỢC giả định rằng địa chỉ máy chủ lưu trữ sẽ luôn có sẵn từ otDnsServiceResponseGetServiceInfo().

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
[in] aInstanceLabel
Nhãn thực thể dịch vụ.
[in] aServiceName
Tên dịch vụ (cùng với tên phiên bản đầy đủ của biểu mẫu aInstanceLabel).
[in] aCallback
Con trỏ hàm sẽ được gọi khi nhận được phản hồi hoặc hết thời gian chờ.
[in] aContext
Con trỏ đến thông tin ngữ cảnh tuỳ ý.
[in] aConfig
Con trỏ đến cấu hình để sử dụng cho truy vấn này.
Giá trị trả về
OT_ERROR_NONE
Đã gửi truy vấn thành công. aCallback sẽ được gọi để báo cáo trạng thái.
OT_ERROR_NO_BUFS
Không đủ bộ đệm để chuẩn bị và gửi truy vấn.
OT_ERROR_INVALID_ARGS
aInstanceLabel là giá trị NULL.

otDnsClientResolveServiceAndHostAddress

otError otDnsClientResolveServiceAndHostAddress(
  otInstance *aInstance,
  const char *aInstanceLabel,
  const char *aServiceName,
  otDnsServiceCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

Bắt đầu quá trình phân giải thực thể dịch vụ DNS cho một thực thể dịch vụ cụ thể, trong đó có khả năng phân giải địa chỉ tiếp theo cho tên máy chủ lưu trữ được phát hiện cho thực thể dịch vụ đó.

Có sẵn khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

aConfig có thể là NULL. Trong trường hợp này, cấu hình mặc định (từ otDnsClientGetDefaultConfig()) sẽ được dùng làm cấu hình cho truy vấn này. Trong aConfig không phải giá trị NULL, bạn có thể để nguyên một số trường (giá trị 0). Sau đó, các trường chưa xác định sẽ được thay thế bằng các giá trị trong cấu hình mặc định. Bạn không thể dùng hàm này với mServiceMode trong cấu hình DNS được đặt thành OT_DNS_SERVICE_MODE_TXT (tức là chỉ truy vấn cho bản ghi TXT) và hàm này sẽ trả về OT_ERROR_INVALID_ARGS.

Hoạt động tương tự như khi otDnsClientResolveService() gửi truy vấn cho bản ghi SRV và TXT. Tuy nhiên, nếu máy chủ/trình giải quyết không cung cấp bản ghi AAAA/A cho tên máy chủ trong phản hồi truy vấn SRV (trong phần Dữ liệu bổ sung), thì máy chủ sẽ phân giải tên máy chủ (gửi truy vấn AAAA) cho tên máy chủ đã phát hiện từ bản ghi SRV. Lệnh gọi lại aCallback được bật khi hệ thống nhận được phản hồi cho tất cả truy vấn (tức là đã hoàn tất quá trình phân giải địa chỉ máy chủ và dịch vụ).

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
[in] aInstanceLabel
Nhãn thực thể dịch vụ.
[in] aServiceName
Tên dịch vụ (cùng với tên phiên bản đầy đủ của biểu mẫu aInstanceLabel).
[in] aCallback
Con trỏ hàm sẽ được gọi khi nhận được phản hồi hoặc hết thời gian chờ.
[in] aContext
Con trỏ đến thông tin ngữ cảnh tuỳ ý.
[in] aConfig
Con trỏ đến cấu hình để sử dụng cho truy vấn này.
Giá trị trả về
OT_ERROR_NONE
Đã gửi truy vấn thành công. aCallback sẽ được gọi để báo cáo trạng thái.
OT_ERROR_NO_BUFS
Không đủ bộ đệm để chuẩn bị và gửi truy vấn.
OT_ERROR_INVALID_ARGS
aInstanceLabel là NULL hoặc aConfig không hợp lệ.

otDnsClientSetDefaultConfig

void otDnsClientSetDefaultConfig(
  otInstance *aInstance,
  const otDnsQueryConfig *aConfig
)

Đặt cấu hình truy vấn mặc định trên máy khách DNS.

aConfig có thể là NULL. Trong trường hợp này, cấu hình mặc định sẽ được đặt thành cấu hình mặc định từ các tuỳ chọn cấu hình OT OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}. Thao tác này sẽ đặt lại cấu hình truy vấn mặc định về cấu hình khi ngăn xếp OpenThread bắt đầu.

Trong một aConfig không phải là NULL, phương thức gọi có thể chọn không chỉ định một số trường trong thực thể otDnsQueryConfig (giá trị 0). Các trường chưa được chỉ định sẽ được thay thế bằng các định nghĩa tuỳ chọn cấu hình OT tương ứng OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} để tạo cấu hình truy vấn mặc định.

Khi bạn bật OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE, địa chỉ IPv6 của máy chủ trong cấu hình mặc định sẽ tự động được máy khách DNS thiết lập và cập nhật. Điều này chỉ được thực hiện khi người dùng không đặt hoặc chỉ định rõ ràng. Hành vi này yêu cầu máy khách SRP và tính năng tự động bắt đầu phải được bật. Sau đó, máy khách SRP sẽ giám sát Dữ liệu mạng luồng để tìm các mục nhập Dịch vụ DNS/SRP để chọn một máy chủ SRP. Địa chỉ máy chủ SRP đã chọn cũng được đặt làm địa chỉ máy chủ DNS trong cấu hình mặc định.

Thông tin chi tiết
Các tham số
[in] aInstance
Con trỏ đến một thực thể OpenThread.
[in] aConfig
Con trỏ đến cấu hình truy vấn mới để dùng làm mặc định.

otDnsEncodeTxtData

otError otDnsEncodeTxtData(
  const otDnsTxtEntry *aTxtEntries,
  uint16_t aNumTxtEntries,
  uint8_t *aTxtData,
  uint16_t *aTxtDataLength
)

Mã hoá một danh sách cụ thể gồm các mục nhập bản ghi TXT (các cặp khoá/giá trị) thành dữ liệu TXT (theo định dạng do RFC 6763 chỉ định).

Thông tin chi tiết
Các tham số
[in] aTxtEntries
Con trỏ đến một mảng otDnsTxtEntry.
[in] aNumTxtEntries
Số mục nhập trong mảng aTxtEntries.
[out] aTxtData
Con trỏ đến vùng đệm để xuất dữ liệu TXT đã mã hoá.
[in,out] aTxtDataLength
Trên dữ liệu đầu vào, dung lượng của vùng đệm aTxtData. Trên dữ liệu đầu ra, độ dài của dữ liệu TXT được mã hoá.
Giá trị trả về
OT_ERROR_NONE
Đã mã hoá thành công dữ liệu TXT, aTxtDataaTxtDataLength đã được cập nhật.
OT_ERROR_INVALID_ARGS
aTxtEntries không hợp lệ.
OT_ERROR_NO_BUS
Không thể khớp dữ liệu đã mã hoá trong vùng đệm aTxtData với aTxtDataLength.

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

Phân tích cú pháp dữ liệu TXT từ một trình lặp và nhận mục nhập bản ghi TXT tiếp theo (cặp khoá/giá trị).

aIterator PHẢI được khởi tạo bằng otDnsInitTxtEntryIterator() trước khi gọi hàm này và vùng đệm dữ liệu TXT dùng để khởi tạo biến lặp PHẢI duy trì và không thay đổi. Nếu không thì hành vi của hàm này là không xác định.

Nếu độ dài chuỗi khoá đã phân tích cú pháp nhỏ hơn hoặc bằng OT_DNS_TXT_KEY_ITER_MAX_LENGTH, thì chuỗi khoá sẽ được trả về ở mKey trong aEntry. Nhưng nếu khoá dài hơn, thì mKey sẽ được đặt thành NULL và toàn bộ chuỗi nhập TXT đã mã hoá sẽ được trả về trong mValuemValueLength.

Thông tin chi tiết
Các tham số
[in] aIterator
Một con trỏ đến trình lặp (PHẢI KHÔNG là NULL).
[out] aEntry
Con trỏ đến cấu trúc otDnsTxtEntry để xuất mục nhập được phân tích cú pháp/đọc (KHÔNG PHẢI là NULL).
Giá trị trả về
OT_ERROR_NONE
Mục nhập tiếp theo đã được phân tích cú pháp thành công. Đã cập nhật aEntry.
OT_ERROR_NOT_FOUND
Không còn mục nhập nào trong dữ liệu TXT.
OT_ERROR_PARSE
Dữ liệu TXT từ aIterator không được định dạng đúng.

otDnsInitTxtEntryIterator

void otDnsInitTxtEntryIterator(
  otDnsTxtEntryIterator *aIterator,
  const uint8_t *aTxtData,
  uint16_t aTxtDataLength
)

Khởi động một trình lặp lại của bản ghi TXT.

Con trỏ vùng đệm aTxtData và nội dung của con trỏ PHẢI duy trì và không thay đổi trong khi đối tượng aIterator đang được sử dụng.

Thông tin chi tiết
Các tham số
[in] aIterator
Một con trỏ tới trình lặp để khởi chạy (PHẢI KHÔNG là NULL).
[in] aTxtData
Con trỏ tới vùng đệm chứa dữ liệu TXT đã mã hoá.
[in] aTxtDataLength
Độ dài (số byte) của aTxtData.

otDnsIsNameCompressionEnabled

bool otDnsIsNameCompressionEnabled(
  void
)

Cho biết đã bật chế độ "Nén tên DNS" hay chưa.

Việc này chỉ dành cho mục đích kiểm thử và dùng được khi bạn bật cấu hình OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

Thông tin chi tiết
Trả về
TRUE nếu chế độ "nén tên DNS" được bật, nếu không thì sẽ là FALSE.

otDnsServiceResponseGetHostAddress

otError otDnsServiceResponseGetHostAddress(
  const otDnsServiceResponse *aResponse,
  const char *aHostName,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

Lấy địa chỉ IPv6 của máy chủ từ phản hồi phân giải thực thể dịch vụ DNS.

Chỉ được sử dụng từ otDnsServiceCallback.

Phản hồi có thể bao gồm 0 hoặc nhiều bản ghi địa chỉ IPv6. Bạn có thể sử dụng aIndex để lặp lại danh sách địa chỉ. Chỉ mục 0 sẽ nhận địa chỉ đầu tiên, v.v. Khi đến cuối danh sách, OT_ERROR_NOT_FOUND sẽ được trả về.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[in] aHostName
Tên máy chủ lưu trữ để nhận địa chỉ (KHÔNG ĐƯỢC là RỖNG).
[in] aIndex
Chỉ mục bản ghi địa chỉ cần truy xuất.
[out] aAddress
Con trỏ đến địa chỉ IPv6 để xuất địa chỉ (KHÔNG ĐƯỢC là NULL).
[out] aTtl
Con trỏ đến uint32_t để đầu ra TTL cho địa chỉ. Giá trị này có thể là NULL nếu phương thức gọi không muốn nhận TTL.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công địa chỉ.
OT_ERROR_NOT_FOUND
Không có bản ghi địa chỉ nào cho aHostname trong aResponse tại aIndex.
OT_ERROR_PARSE
Không thể phân tích cú pháp các bản ghi trong aResponse.

otDnsServiceResponseGetServiceInfo

otError otDnsServiceResponseGetServiceInfo(
  const otDnsServiceResponse *aResponse,
  otDnsServiceInfo *aServiceInfo
)

Nhận thông tin về một phiên bản dịch vụ qua phản hồi phân giải phiên bản dịch vụ DNS.

Chỉ được sử dụng từ otDnsServiceCallback được kích hoạt từ otDnsClientResolveService() hoặc otDnsClientResolveServiceAndHostAddress().

Khi tên này được dùng từ một lệnh gọi lại otDnsClientResolveService(), phản hồi DNS từ máy chủ/trình phân giải có thể bao gồm bản ghi AAAA trong mục Dữ liệu bổ sung cho tên máy chủ lưu trữ liên kết với thực thể dịch vụ đã được phân giải. Đây là yêu cầu NÊN chứ không phải là PHẢI nên máy chủ/giải quyết không bắt buộc phải cung cấp thông tin này. Hàm này cố gắng phân tích cú pháp(các) bản ghi AAAA nếu được đưa vào phản hồi. Nếu không được đưa vào, mHostAddress được đặt thành tất cả các số 0 (địa chỉ chưa chỉ định). Để phân giải địa chỉ máy chủ lưu trữ, người dùng có thể sử dụng hàm API máy khách DNS otDnsClientResolveServiceAndHostAddress(). Hàm này sẽ thực hiện quá trình phân giải dịch vụ, tiếp đó là truy vấn phân giải địa chỉ tên máy chủ lưu trữ (khi bản ghi AAAA không được máy chủ/trình phân giải không cung cấp trong phản hồi truy vấn SRV).

  • Nếu tìm thấy bản ghi SRV trùng khớp trong aResponse, thì aServiceInfo sẽ được cập nhật.
  • Nếu không tìm thấy bản ghi SRV nào phù hợp, OT_ERROR_NOT_FOUND sẽ được trả về trừ phi cấu hình truy vấn cho truy vấn này dùng OT_DNS_SERVICE_MODE_TXT cho mServiceMode (có nghĩa là yêu cầu chỉ dành cho bản ghi TXT). Trong trường hợp này, chúng tôi vẫn cố gắng phân tích cú pháp bản ghi SRV trong Mục Dữ liệu bổ sung của phản hồi (trong trường hợp máy chủ đã cung cấp thông tin).
  • Nếu không tìm thấy bản ghi TXT nào trùng khớp trong aResponse, thì mTxtDataSize trong aServiceInfo sẽ được thiết lập thành 0.
  • Nếu độ dài dữ liệu TXT lớn hơn mTxtDataSize, thì giá trị này sẽ được đọc một phần và mTxtDataTruncated được đặt thành true.
  • Nếu không tìm thấy bản ghi AAAA nào phù hợp trong aResponse, mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse,mHostAddressis set to the first one. The other addresses can be retrieved usingotDnsServiceResponseGetHostAddress()`.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[out] aServiceInfo
ServiceInfo để xuất thông tin về thực thể dịch vụ (KHÔNG ĐƯỢC là NULL).
Giá trị trả về
OT_ERROR_NONE
Thông tin về phiên bản dịch vụ đã được đọc. Đã cập nhật aServiceInfo.
OT_ERROR_NOT_FOUND
Không tìm thấy bản ghi bắt buộc trong aResponse.
OT_ERROR_NO_BUFS
Tên máy chủ và/hoặc dữ liệu TXT không vừa với vùng đệm nhất định.
OT_ERROR_PARSE
Không thể phân tích cú pháp các bản ghi trong aResponse.

otDnsServiceResponseGetServiceName

otError otDnsServiceResponseGetServiceName(
  const otDnsServiceResponse *aResponse,
  char *aLabelBuffer,
  uint8_t aLabelBufferSize,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

Lấy tên phiên bản dịch vụ được liên kết với phản hồi phân giải phiên bản dịch vụ DNS.

Chỉ được sử dụng từ otDnsServiceCallback.

Thông tin chi tiết
Các tham số
[in] aResponse
Con trỏ đến phản hồi.
[out] aLabelBuffer
Vùng đệm vào mảng char để xuất nhãn thực thể dịch vụ (PHẢI KHÔNG là NULL).
[in] aLabelBufferSize
Kích thước của aLabelBuffer.
[out] aNameBuffer
Bộ đệm cho mảng char để xuất phần còn lại của tên dịch vụ (có thể là NULL nếu người dùng không quan tâm đến việc nhận tên.
[in] aNameBufferSize
Kích thước của aNameBuffer.
Giá trị trả về
OT_ERROR_NONE
Đã đọc thành công tên dịch vụ.
OT_ERROR_NO_BUFS
Nhãn hoặc tên không vừa với vùng đệm nhất định.

otDnsSetNameCompressionEnabled

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

Bật/tắt chế độ "nén tên DNS".

Tính năng nén tên DNS được bật theo mặc định. Khi bị tắt, tên DNS sẽ được thêm vào dưới dạng đầy đủ và không bao giờ được nén. Quy định này áp dụng cho các mô-đun máy khách/máy chủ DNS và SRP của OpenThread.

Việc này chỉ dành cho mục đích kiểm thử và dùng được khi bạn bật cấu hình OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

Lưu ý rằng trong trường hợp bạn sử dụng OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE, chế độ này sẽ áp dụng cho mọi thực thể OpenThread (tức là gọi hàm này sẽ bật/tắt chế độ nén trên tất cả các thực thể OpenThread).

Thông tin chi tiết
Các tham số
[in] aEnabled
TRUE để bật chế độ "nén tên DNS", FALSE để tắt.

Macro

OT_DNS_MAX_LABEL_SIZE

 OT_DNS_MAX_LABEL_SIZE 64

Kích thước chuỗi nhãn tối đa (bao gồm ký tự rỗng ở cuối chuỗi).

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

Kích thước chuỗi tên tối đa (bao gồm ký tự rỗng ở cuối chuỗi).

OT_DNS_TXT_KEY_ITER_MAX_LENGTH

 OT_DNS_TXT_KEY_ITER_MAX_LENGTH 64

Độ dài tối đa của chuỗi khoá TXT được otDnsTxtEntryIterator hỗ trợ.

OT_DNS_TXT_KEY_MAX_LENGTH

 OT_DNS_TXT_KEY_MAX_LENGTH 9

Độ dài tối đa đề xuất của chuỗi khoá bản ghi TXT (RFC 6763 – mục 6.4).

OT_DNS_TXT_KEY_MIN_LENGTH

 OT_DNS_TXT_KEY_MIN_LENGTH 1

Độ dài tối thiểu của chuỗi khoá bản ghi TXT (RFC 6763 – mục 6.4).

Tài nguyên

Các chủ đề tham khảo API OpenThread bắt nguồn từ mã nguồn, có trên GitHub. Để biết thêm thông tin hoặc để đóng góp cho tài liệu của chúng tôi, hãy tham khảo Tài nguyên.