VPP-1027: DNS name resolver 43/8743/9
authorDave Barach <dave@barachs.net>
Tue, 10 Oct 2017 21:53:14 +0000 (17:53 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Fri, 13 Oct 2017 20:20:09 +0000 (20:20 +0000)
commit6545716c073c88ad86458620c6dbc59ba1cd00bb
tree2bd8b7d9cd0e221669081aba27786e1ce5eee964
parent7e550693dffd368b9dd8e0397674cfc4d10f9579
VPP-1027: DNS name resolver

This patch is a plausible first-cut, suitable for initial testing by
vcl (host stack client library).

Main features;
- recursive name resolution
- multiple ip4/ip6 name servers
- cache size limit enforcement
  - currently limited to 65K
- ttl / aging
- static mapping support
- show / clear / debug CLI commands

Binary APIs provided for the following:
- add/delete name servers
- enable/disable the name cache
- resolve a name

To Do list:
- Respond to ip4/ip6 client DNS requests (vs. binary API requests)
- Perf / scale tuning
  - map pending transaction ids to pool indices, so the cache
    can (greatly) exceed 65K entries
- Security improvements
  - Use unpredictable dns transaction IDs, related to previous item
  - Make sure that response-packet src ip addresses match the server
- Add binary APIs
  - deliver raw response data to clients
  - control recursive name resolution
- Documentation

Change-Id: I48c373d5c05d7108ccd814d4055caf8c75ca10b7
Signed-off-by: Dave Barach <dave@barachs.net>
14 files changed:
src/vat/api_format.c
src/vlibapi/api_shared.c
src/vnet.am
src/vnet/api_errno.h
src/vnet/dns/dns.api [new file with mode: 0644]
src/vnet/dns/dns.c [new file with mode: 0644]
src/vnet/dns/dns.h [new file with mode: 0644]
src/vnet/dns/dns_packet.h [new file with mode: 0644]
src/vnet/dns/reply_node.c [new file with mode: 0644]
src/vnet/dns/resolver_process.c [new file with mode: 0644]
src/vnet/ip/ip_init.c
src/vnet/udp/udp.h
src/vnet/vnet_all_api_h.h
src/vpp/api/custom_dump.c