README 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. This is the source for the development version of BIND 10.
  2. BIND is the popular implementation of a DNS server, developer
  3. interfaces, and DNS tools. BIND 10 is a rewrite of BIND 9. BIND 10
  4. is written in C++ and Python and provides a modular environment
  5. for serving, maintaining, and developing DNS.
  6. BIND10-devel is new development leading up to the production
  7. BIND 10 release. It contains prototype code and experimental
  8. interfaces. Nevertheless it is ready to use now for testing the
  9. new BIND 10 infrastructure ideas. The Year 2 milestones of the
  10. five year plan are described here:
  11. https://bind10.isc.org/wiki/Year2Milestones
  12. This release includes the bind10 master process, b10-msgq message
  13. bus, b10-auth authoritative DNS server (with SQLite3 and in-memory
  14. backends), b10-resolver recursive or forwarding DNS server, b10-cmdctl
  15. remote control daemon, b10-cfgmgr configuration manager, b10-xfrin
  16. AXFR inbound service, b10-xfrout outgoing AXFR service, b10-zonemgr
  17. secondary manager, b10-stats statistics collection and reporting
  18. daemon, b10-stats-httpd for HTTP access to XML-formatted stats,
  19. b10-host DNS lookup utility, and a new libdns++ library for C++
  20. with a python wrapper.
  21. Documentation is included and also available via the BIND 10
  22. website at http://bind10.isc.org/
  23. The latest released source may be downloaded from:
  24. ftp://ftp.isc.org/isc/bind10/
  25. Users and developers are encouraged to participate on the BIND 10
  26. mailing lists:
  27. https://lists.isc.org/mailman/listinfo/bind10-users
  28. https://lists.isc.org/mailman/listinfo/bind10-dev
  29. Bugs may be reported as tickets via the developers website:
  30. http://bind10.isc.org/
  31. BUILDING
  32. See the Guide for detailed installation directions at
  33. doc/guide/bind10-guide.html.
  34. Simple build instructions:
  35. ./configure
  36. make
  37. If building from Git repository, run:
  38. autoreconf --install
  39. before running ./configure
  40. Requires autoconf 2.59 or newer.
  41. Use automake-1.11 or better for working Python 3.1 tests.
  42. Alternatively, you could manually specify an absolute path to python
  43. executable by the --with-pythonpath option of the configure script,
  44. e.g.,
  45. % ./configure --with-pythonpath=/usr/local/bin/python3.1
  46. Operating-System specific tips:
  47. - FreeBSD
  48. You may need to install a python binding for sqlite3 by hand. A
  49. sample procedure is as follows:
  50. - add the following to /etc/make.conf
  51. PYTHON_VERSION=3.1
  52. - build and install the python binding from ports, assuming the top
  53. directory of the ports system is /usr/ports
  54. % cd /usr/ports/databases/py-sqlite3/
  55. % make
  56. % sudo make install
  57. INSTALLATION
  58. Install with:
  59. make install
  60. TESTS
  61. The tests use the googletests framework for C++. It is available
  62. from http://code.google.com/p/googletest/. To enable the tests,
  63. configure BIND 10 with:
  64. ./configure --with-gtest
  65. Then run "make check" to run these tests.
  66. TEST COVERAGE
  67. Code coverage reports may be generated using make. These are
  68. based on running on the unit tests. The resulting reports are placed
  69. in coverage-cpp-html and coverage-python-html directories for C++
  70. and Python, respectively.
  71. The code coverage report for the C++ tests uses LCOV. It is available
  72. from http://ltp.sourceforge.net/. To generate the HTML report,
  73. first configure BIND 10 with:
  74. ./configure --with-lcov
  75. The code coverage report for the Python tests uses coverage.py (aka
  76. pycoverage). It is available from http://nedbatchelder.com/code/coverage/.
  77. To generate the HTML report, first configure BIND 10 with:
  78. ./configure --with-pycoverage
  79. Doing code coverage tests:
  80. make coverage
  81. Does the clean, perform, and report targets for C++ and Python.
  82. make clean-coverage
  83. Zeroes the code coverage counters and removes the HTML reports
  84. for C++ and Python.
  85. make perform-coverage
  86. Runs the C++ (using the googletests framework) and Python
  87. tests.
  88. make report-coverage
  89. Generates the coverage reports in HTML for C++ and Python.
  90. make clean-cpp-coverage
  91. Zeroes the code coverage counters and removes the HTML report
  92. for the C++ tests.
  93. make clean-python-coverage
  94. Zeroes the code coverage counters and removes the HTML report
  95. for the Python tests.
  96. make report-cpp-coverage
  97. Generates the coverage report in HTML for C++, excluding
  98. some unrelated headers. The HTML reports are placed in a
  99. directory called coverage-cpp-html/.
  100. make report-python-coverage
  101. Generates the coverage report in HTML for Python. The HTML
  102. reports are placed in a directory called coverage-python-html/.
  103. DEVELOPERS
  104. The generated run_*.sh scripts available in the src/bin directories
  105. are for running the code using the source tree.
  106. RUNNING
  107. You can start the BIND 10 processes by running bind10 which is
  108. installed to the sbin directory under the installation prefix.
  109. The default location is:
  110. /usr/local/sbin/bind10
  111. For development work, you can also run the bind10 services from the
  112. source tree:
  113. ./src/bin/bind10/run_bind10.sh
  114. (Which will use the modules and configurations also from the source
  115. tree.)
  116. CONFIGURATION
  117. Commands can be given through the bindctl tool.
  118. The server must be running for bindctl to work.
  119. The following configuration commands are available
  120. help: show the different command modules
  121. <module> help: show the commands for module
  122. <module> <command> help: show info for the command
  123. config show [identifier]: Show the currently set values. If no identifier is
  124. given, the current location is used. If a config
  125. option is a list or a map, the value is not
  126. shown directly, but must be requested separately.
  127. config go [identifier]: Go to the given location within the configuration.
  128. config set [identifier] <value>: Set a configuration value.
  129. config unset [identifier]: Remove a value (reverts to default if the option
  130. is mandatory).
  131. config add [identifier] <value>: add a value to a list
  132. config remove [identifier] <value>: remove a value from a list
  133. config revert: Revert all changes that have not been committed
  134. config commit: Commit all changes
  135. config diff: Show the changes that have not been committed yet
  136. EXAMPLE SESSION
  137. ~> bindctl
  138. ["login success "] login as root
  139. > help
  140. BindCtl, verstion 0.1
  141. usage: <module name> <command name> [param1 = value1 [, param2 = value2]]
  142. Type Tab character to get the hint of module/command/paramters.
  143. Type "help(? h)" for help on bindctl.
  144. Type "<module_name> help" for help on the specific module.
  145. Type "<module_name> <command_name> help" for help on the specific command.
  146. Available module names:
  147. help Get help for bindctl
  148. config Configuration commands
  149. Xfrin same here
  150. Auth same here
  151. Boss same here
  152. > config help
  153. Module config Configuration commands
  154. Available commands:
  155. help (Get help for module)
  156. show (Show configuration)
  157. add (Add entry to configuration list)
  158. remove (Remove entry from configuration list)
  159. set (Set a configuration value)
  160. unset (Unset a configuration value)
  161. diff (Show all local changes)
  162. revert (Revert all local changes)
  163. commit (Commit all local changes)
  164. go (Go to a specific configuration part)
  165. > config show
  166. Xfrin/ module
  167. Auth/ module
  168. Boss/ module
  169. > config show Xfrin
  170. transfers_in: 10 integer
  171. > config go Auth
  172. /Auth> config show
  173. database_file: None string
  174. /Auth> config set database_file /tmp/bind10_zones.db
  175. /Auth> config commit
  176. /Auth> config go /
  177. > config show Auth/
  178. database_file: /tmp/bind10_zones.db string
  179. > config diff
  180. {}
  181. > config set Auth/foobar
  182. Error: missing identifier or value
  183. > config set Auth/database_file foobar
  184. > config diff
  185. {'Auth': {'database_file': 'foobar'}}
  186. > config revert
  187. > config diff
  188. {}
  189. > quit