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{
|
enum Kiểu biểu thị chế độ NAT64 trong otDnsQueryConfig . |
otDnsRecursionFlag{
|
enum Kiểu đại diện cho cờ "Recursion Desired" (RD) trong otDnsQueryConfig . |
otDnsServiceMode{
|
enum Kiểu biểu thị chế độ phân giải dịch vụ trong otDnsQueryConfig . |
otDnsTransportProto{
|
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)
|
typedefvoid(*
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
|
typedefstruct 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ỉ. |
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext)
|
typedefvoid(*
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
|
typedefstruct 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ụ). |
otDnsQueryConfig
|
typedefstruct otDnsQueryConfig
Đại diện cho cấu hình truy vấn DNS. |
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext)
|
typedefvoid(*
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
|
typedefstruct otDnsServiceInfo
Cung cấp thông tin cho một thực thể dịch vụ DNS. |
otDnsServiceResponse
|
typedefstruct 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ụ. |
otDnsTxtEntry
|
typedefstruct 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
|
typedefstruct 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ị). |
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)
|
const otDnsQueryConfig *
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ố |
|
- 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ố |
|
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ố |
|
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 mKey
và mValue
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ố |
|
||||||||
Giá trị trả về |
|
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ố |
|
||||||
Giá trị trả về |
|
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ố |
|
||||||||||
Giá trị trả về |
|
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àmOT_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
trongaServiceInfo
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 using
otDnsBrowseResponseGetHostAddress()`.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||
Giá trị trả về |
|
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ố |
|
||||||||
Giá trị trả về |
|
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ố |
|
||||||
Giá trị trả về |
|
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ố |
|
||||||||||
Giá trị trả về |
|
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ố |
|
||
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ố |
|
||||||||||
Giá trị trả về |
|
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ố |
|
||||||||||
Giá trị trả về |
|
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ố |
|
||||||||||||
Giá trị trả về |
|
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ố |
|
||||||||||||
Giá trị trả về |
|
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ố |
|
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ố |
|
||||||||
Giá trị trả về |
|
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 mValue
và mValueLength
.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
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ố |
|
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ố |
|
||||||||||
Giá trị trả về |
|
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ùngOT_DNS_SERVICE_MODE_TXT
chomServiceMode
(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
trongaServiceInfo
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 using
otDnsServiceResponseGetHostAddress()`.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||
Giá trị trả về |
|
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ố |
|
||||||||||
Giá trị trả về |
|
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ố |
|
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.