132 lines
3.1 KiB
Plaintext
132 lines
3.1 KiB
Plaintext
|
DNS Client Application
|
||
|
======================
|
||
|
|
||
|
The DNS resolver or DNS client application demonstrates how to use the
|
||
|
DNS resolver API.
|
||
|
|
||
|
The DNS API allows to recover IPv4 and IPv6 addresses.
|
||
|
|
||
|
|
||
|
API Return Codes
|
||
|
================
|
||
|
|
||
|
API return codes are documented in the API (see include/iot/dns_client.h).
|
||
|
|
||
|
Macro | Value | Description
|
||
|
------------------------------------------------------------------------
|
||
|
O is always success
|
||
|
-EINVAL -22 if an invalid parameter was detected
|
||
|
-EIO -5 network error
|
||
|
-ENOMEM -12 memory error, perhaps related to network buffers
|
||
|
|
||
|
|
||
|
Requirements
|
||
|
============
|
||
|
|
||
|
'net_tools':
|
||
|
|
||
|
https://wiki.zephyrproject.org/view/Networking-with-Qemu
|
||
|
|
||
|
'dnsmasq' application. The dnsmasq version used in this sample is:
|
||
|
|
||
|
dnsmasq -v
|
||
|
Dnsmasq version 2.76 Copyright (c) 2000-2016 Simon Kelley
|
||
|
|
||
|
|
||
|
Building Instructions
|
||
|
=====================
|
||
|
|
||
|
Read src/config.h, change the IP addresses according to the LAN
|
||
|
environment.
|
||
|
|
||
|
In a terminal window, type make pristine && make to build this sample.
|
||
|
|
||
|
|
||
|
Usage
|
||
|
=====
|
||
|
|
||
|
Run 'loop_socat.sh' and 'loop-slip-tap.sh' as indicated at:
|
||
|
|
||
|
https://gerrit.zephyrproject.org/r/gitweb?p=net-tools.git;a=blob;f=README
|
||
|
|
||
|
Set the IPv4 ip address:
|
||
|
|
||
|
ip addr add 192.0.2.2/24 dev tap0
|
||
|
|
||
|
Open a terminal window and type:
|
||
|
|
||
|
dnsmasq -i tap0 -p 5353 -d
|
||
|
|
||
|
NOTE: some systems may require root privileges to run dnsmaq, use sudo or su.
|
||
|
|
||
|
If dnsmasq fails to start with an error like this:
|
||
|
|
||
|
dnsmasq: failed to create listening socket for port 5353: Address already in use
|
||
|
|
||
|
open a terminal window and type:
|
||
|
|
||
|
killall -s KILL dnsmasq
|
||
|
|
||
|
For QEMU, type:
|
||
|
|
||
|
make qemu
|
||
|
|
||
|
|
||
|
Sample Output (CONFIG_NET_IPV6=n, CONFIG_NET_IPV4=y)
|
||
|
====================================================
|
||
|
|
||
|
To exit from QEMU enter: 'CTRL+a, x'
|
||
|
[QEMU] CPU: qemu32
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: not_a_real_domain_name
|
||
|
rc: -22
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: zephyrproject.org
|
||
|
[run_dns:151] 140.211.169.8
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: www.zephyrproject.org
|
||
|
[run_dns:151] 140.211.169.8
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: gerrit.zephyrproject.org
|
||
|
[run_dns:151] 199.19.213.246
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: jira.zephyrproject.org
|
||
|
[run_dns:151] 199.19.213.246
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: jenkins.zephyrproject.org
|
||
|
[run_dns:151] 199.19.213.246
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: linuxfoundation.org
|
||
|
rc: -5
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: www.linuxfoundation.org
|
||
|
[run_dns:151] 140.211.169.4
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: collabprojects.linuxfoundation.org
|
||
|
[run_dns:151] 140.211.169.4
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: events.linuxfoundation.org
|
||
|
[run_dns:151] 140.211.169.4
|
||
|
|
||
|
-------------------------------------------
|
||
|
[run_dns:127] name: training.linuxfoundation.org
|
||
|
[run_dns:151] 140.211.169.4
|
||
|
|
||
|
Bye!
|
||
|
|
||
|
Known Issues
|
||
|
============
|
||
|
|
||
|
The above sample contains a rc: -22 (-EINVAL). This is the expected behavior
|
||
|
for that domain name.
|