README 6.3 KB

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