ndb 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. .TH NDB 8
  2. .SH NAME
  3. query, ipquery, mkhash, mkdb, mkhosts, cs, csquery, dns, dnstcp, dnsquery, dnsdebug, inform \- network database
  4. .SH SYNOPSIS
  5. .B ndb/query
  6. [
  7. .B -am
  8. ] [
  9. .B -f
  10. .I dbfile
  11. ]
  12. .I "attr value"
  13. [
  14. .I rattr
  15. .\" [
  16. .\" .I reps
  17. .\" ]
  18. ]
  19. .br
  20. .B ndb/ipquery
  21. .I "attr value"
  22. .I rattr...
  23. .br
  24. .B ndb/mkhash
  25. .I "file attr"
  26. .br
  27. .B ndb/mkdb
  28. .br
  29. .B ndb/mkhosts
  30. [
  31. .I domain
  32. [
  33. .I dbfile
  34. ] ]
  35. .br
  36. .B ndb/cs
  37. [
  38. .B -n
  39. ] [
  40. .B -f
  41. .I dbfile
  42. ] [
  43. .B -x
  44. .I netmtpt
  45. ]
  46. .br
  47. .B ndb/csquery
  48. [
  49. .B -s
  50. ]
  51. [
  52. .I server
  53. [
  54. .I addr...
  55. ]
  56. ]
  57. .br
  58. .B ndb/dns
  59. [
  60. .B -norRs
  61. ] [
  62. .B -a
  63. .I maxage
  64. ] [
  65. .B -f
  66. .I dbfile
  67. ] [
  68. .B -N
  69. .I target
  70. ] [
  71. .B -x
  72. .I netmtpt
  73. ] [
  74. .B -z
  75. .I program
  76. ]
  77. .br
  78. .B ndb/dnstcp
  79. [
  80. .B -rR
  81. ] [
  82. .B -f
  83. .I dbfile
  84. ] [
  85. .B -x
  86. .I netmtpt
  87. ] [
  88. .I conn-dir
  89. ]
  90. .br
  91. .B ndb/dnsquery
  92. .br
  93. .B ndb/dnsdebug
  94. [
  95. .B -rx
  96. ] [
  97. .B -f
  98. .I dbfile
  99. ] [ [
  100. .BI @ server
  101. ]
  102. .I domain-name
  103. [
  104. .I type
  105. ] ]
  106. .br
  107. .B ndb/inform
  108. [
  109. .B -x
  110. .I netmtpt
  111. ]
  112. .SH DESCRIPTION
  113. The network database holds administrative information used by
  114. network programs such as
  115. .IR dhcpd (8),
  116. .IR ipconfig (8),
  117. .IR con (1),
  118. etc.
  119. .PP
  120. .I Ndb/query
  121. searches the database
  122. .I dbfile
  123. .RB ( /lib/ndb/local
  124. by default)
  125. for an attribute of type
  126. .I attr
  127. and value
  128. .IR value .
  129. If
  130. .I rattr
  131. is not specified, all entries matched by the search are printed.
  132. If
  133. .I rattr
  134. is specified, the value of the first pair with attribute
  135. .I rattr
  136. of all the matched entries normally is printed.
  137. Under
  138. .B -m
  139. and
  140. .IR rattr ,
  141. the values of all pairs with a
  142. .I rattr
  143. attribute within the first matching entry are printed.
  144. Under
  145. .B -a
  146. and
  147. .IR rattr ,
  148. all values of pairs with a
  149. .I rattr
  150. attribute within all entries are printed.
  151. .PP
  152. .I Ndb/ipquery
  153. uses
  154. .I ndbipinfo
  155. (see
  156. .IR ndb (2))
  157. to search for the values of the attributes
  158. .I rattr
  159. corresponding to the system
  160. with entries of attribute type
  161. .I attr
  162. and
  163. value
  164. .IR value .
  165. .PP
  166. .I Ndb/inform
  167. sends an RFC2136 DNS
  168. .I inform
  169. packet to a nameserver to associate the host's IPv4 address with its DNS name.
  170. This is required if the domain's nameserver is
  171. a Microsoft Windows Active Directory controller.
  172. .SS "Database maintenance"
  173. .I Ndb/mkhash
  174. creates a hash file for all entries with attribute
  175. .I attr
  176. in database file
  177. .IR file .
  178. The hash files are used by
  179. .I ndb/query
  180. and by the ndb library routines.
  181. .PP
  182. .I Ndb/mkdb
  183. is used in concert with
  184. .IR awk (1)
  185. scripts to convert
  186. uucp systems files and IP host files
  187. into database files.
  188. It is very specific to the situation at Murray Hill.
  189. .PP
  190. When the database files change underfoot,
  191. .I ndb/cs
  192. and
  193. .I ndb/dns
  194. track them properly. Nonetheless, to keep the database searches efficient
  195. it is necessary to run
  196. .I ndb/mkhash
  197. whenever the files are modified.
  198. It may be profitable to control this by a frequent
  199. .IR cron (8)
  200. job.
  201. .PP
  202. .I Ndb/mkhosts
  203. generates a BSD style
  204. .BR hosts ,
  205. .BR hosts.txt ,
  206. and
  207. .B hosts.equiv
  208. files from an ndb data base file specified on the
  209. command line (default
  210. .BR /lib/ndb/local ).
  211. For local reasons the files are called
  212. .BR hosts.1127 ,
  213. .BR astro.txt ,
  214. and
  215. .BR hosts.equiv .
  216. .SS "Connection service"
  217. .I Ndb/cs
  218. is a server used by
  219. .IR dial (2)
  220. to translate network names.
  221. It is started at boot time.
  222. It finds out what networks are configured
  223. by looking for
  224. .B /net/*/clone
  225. when it starts.
  226. It can also be told about networks by writing to
  227. .B /net/cs
  228. a message of the form:
  229. .IP
  230. .B "add net1 net2 ..."
  231. .PP
  232. .I Ndb/cs
  233. also sets the system name in
  234. .B /dev/sysname
  235. if it can figure it out.
  236. The options are:
  237. .TF -n
  238. .TP
  239. .B -f
  240. supplies the name of the data base file to use,
  241. default
  242. .BR /lib/ndb/local .
  243. .TP
  244. .B -n
  245. causes cs to do nothing but set the system name.
  246. .TP
  247. .B -x
  248. specifies the mount point of the
  249. network.
  250. .PD
  251. .PP
  252. .I Ndb/csquery
  253. queries
  254. .I ndb/cs
  255. to see how it resolves addresses.
  256. .I Ndb/csquery
  257. prompts for addresses and prints what
  258. .I ndb/cs
  259. returns.
  260. .I Server
  261. defaults to
  262. .BR /net/cs .
  263. If any
  264. .I addrs
  265. are specified,
  266. .I ndb/csquery
  267. prints their translations and immediately exits.
  268. The exit status will be nil only if all addresses
  269. were successfully translated.
  270. The
  271. .B -s
  272. flag sets exit status without printing any results.
  273. .br
  274. .ne 4
  275. .SS "Domain name service"
  276. .I Ndb/dns
  277. serves
  278. .I ndb/cs
  279. and remote systems by translating Internet domain names.
  280. .I Ndb/dns
  281. is started at boot time.
  282. By default
  283. .I dns
  284. serves only requests written to
  285. .BR /net/dns .
  286. Programs must
  287. .I seek
  288. to offset 0 before reading or writing
  289. .B /net/dns
  290. or
  291. .BR /net/cs .
  292. The options are:
  293. .TF -n
  294. .TP
  295. .B -a
  296. sets the maximum time in seconds that an unreferenced
  297. domain name will remain cached.
  298. The default is one hour (3600).
  299. .TP
  300. .B -f
  301. supplies the name of the data base file to use,
  302. default
  303. .BR /lib/ndb/local .
  304. .TP
  305. .B -n
  306. whenever a DNS zone that we serve changes, send UDP NOTIFY
  307. messages to any dns slaves for that zone
  308. (see the
  309. .L dnsslave
  310. attribute below).
  311. .TP
  312. .B -N
  313. sets the goal for the number of domain names cached to
  314. .I target
  315. rather than the default of 8,000.
  316. .TP
  317. .B -o
  318. used with
  319. .BR -s ,
  320. .B -o
  321. causes
  322. .I dns
  323. to assume that it straddles inside and outside networks
  324. and that the outside network is mounted on
  325. .BR /net.alt .
  326. Queries for inside addresses will be sent via
  327. .B /net/udp
  328. (or
  329. .B /net/tcp
  330. in response to truncated replies)
  331. and those for outside addresses via
  332. .B /net.alt/udp
  333. (or
  334. .BR /net.alt/tcp ).
  335. This makes
  336. .I dns
  337. suitable for serving non-Plan-9 systems in an organization with
  338. firewalls, DNS proxies, etc.,
  339. particularly if they don't work very well.
  340. See `Straddling Server' below for details.
  341. .TP
  342. .B -r
  343. act as a resolver only:
  344. send `recursive' queries, asking the other servers
  345. to complete lookups.
  346. If present,
  347. .B /env/DNSSERVER
  348. must be a space-separated list of such DNS servers' IP addresses,
  349. otherwise optional
  350. .IR ndb (6)
  351. .B dns
  352. attributes name DNS servers to forward queries to.
  353. .TP
  354. .B -R
  355. ignore the `recursive' bit on incoming requests.
  356. Do not complete lookups on behalf of remote systems.
  357. .TP
  358. .B -s
  359. also answer domain requests sent to UDP port 53.
  360. .TP
  361. .B -x
  362. specifies the mount point of the
  363. network.
  364. .TP
  365. .B -z
  366. whenever we receive a UDP NOTIFY message, run
  367. .I program
  368. with the domain name of the area as its argument.
  369. .PD
  370. .PP
  371. When the
  372. .B -r
  373. option is specified, the servers used come from the
  374. .I dns
  375. attribute in the database. For example, to specify a set of dns servers that
  376. will resolve requests for systems on the network
  377. .IR mh-net :
  378. .IP
  379. .EX
  380. ipnet=mh-net ip=135.104.0.0 ipmask=255.255.0.0
  381. dns=ns1.cs.bell-labs.com
  382. dns=ns2.cs.bell-labs.com
  383. dom=ns1.cs.bell-labs.com ip=135.104.1.11
  384. dom=ns2.cs.bell-labs.com ip=135.104.1.12
  385. .EE
  386. .LP
  387. The server for a domain is indicated by a database entry containing
  388. both a
  389. .I dom
  390. and a
  391. .I ns
  392. attribute.
  393. .IP
  394. .EX
  395. dom=
  396. ns=A.ROOT-SERVERS.NET
  397. ns=B.ROOT-SERVERS.NET
  398. ns=C.ROOT-SERVERS.NET
  399. dom=A.ROOT-SERVERS.NET ip=198.41.0.4
  400. dom=B.ROOT-SERVERS.NET ip=128.9.0.107
  401. dom=C.ROOT-SERVERS.NET ip=192.33.4.12
  402. .EE
  403. .LP
  404. The last three lines provide a mapping for the
  405. server names to their ip addresses. This is only
  406. a hint and will be superseded from whatever is learned
  407. from servers owning the domain.
  408. .SS "Authoritative Name Servers"
  409. You can also serve a subtree of the domain name space from the local
  410. database. You indicate subtrees that you would like to serve by adding an
  411. .B soa=
  412. attribute to the root entry.
  413. For example, the Bell Labs CS research domain is:
  414. .IP
  415. .EX
  416. dom=cs.bell-labs.com soa=
  417. refresh=3600 ttl=3600
  418. ns=plan9.bell-labs.com
  419. ns=ns1.cs.bell-labs.com
  420. ns=ns2.cs.bell-labs.com
  421. mb=presotto@plan9.bell-labs.com
  422. mx=mail.research.bell-labs.com pref=20
  423. mx=plan9.bell-labs.com pref=10
  424. dnsslave=nslocum.cs.bell-labs.com
  425. dnsslave=vex.cs.bell-labs.com
  426. .EE
  427. .LP
  428. Here, the
  429. .B mb
  430. entry is the mail address of the person responsible for the
  431. domain (default
  432. .BR postmaster ).
  433. The
  434. .B mx
  435. entries list mail exchangers for the domain name and
  436. .B refresh
  437. and
  438. .B ttl
  439. define the area refresh interval and the minimum TTL for
  440. records in this domain.
  441. The
  442. .B dnsslave
  443. entries specify slave DNS servers that should be notified
  444. when the domain changes. The notification also requires
  445. the
  446. .B -n
  447. flag.
  448. .
  449. .SS "Reverse Domains"
  450. You can also serve reverse lookups (returning the name that
  451. goes with an IP address) by adding an
  452. .B soa=
  453. attribute to the entry defining the root of the reverse space.
  454. .PP
  455. For example, to provide reverse lookup for all addresses in
  456. starting with
  457. .L 135.104
  458. or
  459. .LR fd00:: ,
  460. .I ndb
  461. must contain a record like:
  462. .IP
  463. .EX
  464. dom=104.135.in-addr.arpa soa=
  465. dom=d.f.ip6.arpa soa= # special case, rfc 4193
  466. refresh=3600 ttl=3600
  467. ns=plan9.bell-labs.com
  468. ns=ns1.cs.bell-labs.com
  469. ns=ns2.cs.bell-labs.com
  470. .EE
  471. .LP
  472. Notice the form of the reverse address.
  473. For IPv4, it's the bytes of the address range you are serving reversed
  474. and expressed in decimal, and with
  475. .L .in-addr.arpa
  476. appended.
  477. For IPv6, it's the nibbles (4-bit fields) of the address range you are serving
  478. reversed and expressed in hexadecimal, and with
  479. .L .ip6.arpa
  480. appended.
  481. These are the standard forms for a domain name in a PTR record.
  482. .PP
  483. If such an
  484. .B soa
  485. entry exists in the database, reverse addresses will
  486. automatically be generated from any IP addresses in the database
  487. that are under this root. For example
  488. .IP
  489. .EX
  490. dom=ns1.cs.bell-labs.com ip=135.104.1.11
  491. .EE
  492. .LP
  493. will automatically create both forward and reverse entries for
  494. .BR ns1.cs.bell-labs.com .
  495. Unlike other DNS servers, there's no way to generate
  496. inconsistent forward and reverse entries.
  497. .SS "Classless reverse delegation"
  498. Following RFC 2317, it is possible to serve reverse DNS data
  499. for IPv4 subnets smaller than /24.
  500. Declare the non-/24 subnet, the reverse domain and the individual systems.
  501. .PP
  502. For example,
  503. this is how to serve RFC-2317
  504. .B ptr
  505. records for the subnet
  506. .LR 65.14.39.128/123 .
  507. .IP
  508. .EX
  509. ipnet=our-t1 ip=65.14.39.128 ipmask=/123
  510. dom=128.39.14.65.in-addr.arpa soa=
  511. refresh=3600 ttl=3600
  512. ns=ns1.our-domain.com
  513. ns=ns2.our-domain.com
  514. ip=65.14.39.129 dom=router.our-domain.com
  515. .EE
  516. .
  517. .SS "Delegating Name Service Authority"
  518. Delegation of a further subtree to another set of name servers
  519. is indicated by an
  520. .B soa=delegated
  521. attribute.
  522. .IP
  523. .EX
  524. dom=bignose.cs.research.bell-labs.com
  525. soa=delegated
  526. ns=anna.cs.research.bell-labs.com
  527. ns=dj.cs.research.bell-labs.com
  528. .EE
  529. .LP
  530. Nameservers within the delegated domain (as in this example)
  531. must have their IP addresses listed elsewhere in
  532. .I ndb
  533. files.
  534. .
  535. .SS "Wildcards, MX and CNAME records"
  536. Wild-carded domain names can also be used.
  537. For example, to specify a mail forwarder for all Bell Labs research systems:
  538. .IP
  539. .EX
  540. dom=*.research.bell-labs.com
  541. mx=research.bell-labs.com
  542. .EE
  543. .LP
  544. `Cname' aliases may be established by adding a
  545. .B cname
  546. attribute giving the real domain name;
  547. the name attached to the
  548. .B dom
  549. attribute is the alias.
  550. `Cname' aliases are severely restricted;
  551. the aliases may have no other attributes than
  552. .B dom
  553. and are daily further restricted in their use by new RFCs.
  554. .IP
  555. .EX
  556. cname=anna.cs.bell-labs.com dom=www.cs.bell-labs.com
  557. .EE
  558. .PP
  559. makes
  560. .BI www. ...
  561. a synonym for the canonical name
  562. .BI anna. ... .
  563. .SS "Straddling Server"
  564. Many companies have an inside network
  565. protected from outside access with firewalls.
  566. They usually provide internal `root' DNS servers
  567. (of varying reliability and correctness)
  568. that serve internal domains and pass on DNS queries for
  569. outside domains to the outside, relaying the results
  570. back and caching them for future use.
  571. Some companies don't even let DNS queries nor replies through
  572. their firewalls at all, in either direction.
  573. .PP
  574. In such a situation, running
  575. .B "dns -so"
  576. on a machine that imports access to the outside network via
  577. .B /net.alt
  578. from a machine that straddles the firewalls,
  579. or that straddles the firewalls itself,
  580. will let internal machines query such a machine
  581. and receive answers from outside nameservers for outside addresses
  582. and inside nameservers for inside addresses, giving the appearance
  583. of a unified domain name space,
  584. while bypassing the corporate DNS proxies or firewalls.
  585. This is different from running
  586. .B "dns -s"
  587. and
  588. .B "dns -sRx /net.alt -f /lib/ndb/external"
  589. on the same machine,
  590. which keeps the inside and outside namespaces entirely separate.
  591. .PP
  592. Under
  593. .BR -o ,
  594. several
  595. .I sys
  596. names are significant:
  597. .BR inside-dom ,
  598. .BR inside-ns ,
  599. and
  600. .BR outside-ns .
  601. .I Inside-dom
  602. should contain a series of
  603. .B dom
  604. pairs naming domains internal to the organization.
  605. .I Inside-ns
  606. should contain a series of
  607. .B ip
  608. pairs naming the internal DNS `root' servers.
  609. .I Outside-ns
  610. should contain a series of
  611. .B ip
  612. pairs naming the external DNS servers to consult.
  613. .SS "Zone Transfers and TCP"
  614. .I Dnstcp
  615. is invoked,
  616. usually from
  617. .BR /rc/bin/service/tcp53 ,
  618. to answer DNS queries with long answers via TCP,
  619. notably to transfer a zone within the database
  620. .I dbfile
  621. (default
  622. .BR /lib/ndb/local )
  623. to its invoker on the network at
  624. .I netmtpt
  625. (default
  626. .BR /net ).
  627. Standard input will be read for DNS requests and the DNS answers
  628. will appear on standard output.
  629. Recursion is disabled by
  630. .BR -R ;
  631. acting as a pure resolver is enabled by
  632. .BR -r .
  633. If
  634. .I conn-dir
  635. is provided, it is assumed to be a directory within
  636. .IB netmtpt /tcp
  637. and is used to find the caller's address.
  638. .SS "DNS Queries and Debugging"
  639. .I Ndb/dnsquery
  640. can be used to query
  641. .I ndb/dns
  642. to see how it resolves requests.
  643. .I Ndb/dnsquery
  644. prompts for commands of the form
  645. .IP
  646. .I "domain-name request-type"
  647. .LP
  648. where
  649. .I request-type
  650. can be
  651. .BR ip ,
  652. .BR ipv6 ,
  653. .BR mx ,
  654. .BR ns ,
  655. .BR cname ,
  656. .BR ptr ....
  657. In the case of the inverse query type,
  658. .BR ptr ,
  659. .I dnsquery
  660. will reverse the ip address and tack on the
  661. .B .in-addr.arpa
  662. if necessary.
  663. .PP
  664. .I Ndb/dnsdebug
  665. is like
  666. .I ndb/dnsquery
  667. but bypasses the local server.
  668. It communicates via UDP (and sometimes TCP) with the domain name servers
  669. in the same way that the local resolver would and displays
  670. all packets received.
  671. The query can be specified on the command line or
  672. can be prompted for.
  673. The queries look like those of
  674. .I ndb/dnsquery
  675. with one addition.
  676. .I Ndb/dnsdebug
  677. can be directed to query a particular name server by
  678. the command
  679. .BI @ name-server\f1.
  680. From that point on, all queries go to that name server
  681. rather than being resolved by
  682. .IR dnsdebug .
  683. The
  684. .B @
  685. command returns query resolution to
  686. .IR dnsdebug .
  687. Finally, any command preceded by a
  688. .BI @ name-server
  689. sets the name server only for that command.
  690. .PP
  691. Normally
  692. .I dnsdebug
  693. uses the
  694. .B /net
  695. interface and the database file
  696. .BR /lib/ndb/local.
  697. The
  698. .B -f
  699. option supplies the name of the data base file to use.
  700. The
  701. .B -r
  702. option is the same as for
  703. .IR ndb/dns .
  704. The
  705. .B -x
  706. option directs
  707. .I dnsdebug
  708. to use the
  709. .B /net.alt
  710. interface and
  711. .B /lib/ndb/external
  712. database file.
  713. .SH EXAMPLES
  714. Look up
  715. .B helix
  716. in
  717. .IR ndb .
  718. .IP
  719. .EX
  720. % ndb/query sys helix
  721. sys=helix dom=helix.research.bell-labs.com bootf=/mips/9powerboot
  722. ip=135.104.117.31 ether=080069020427
  723. .EE
  724. .br
  725. .ne 8
  726. .LP
  727. Look up
  728. .B plan9.bell-labs.com
  729. and its IP address in the DNS.
  730. .IP
  731. .EX
  732. % ndb/dnsquery
  733. > plan9.bell-labs.com ip
  734. plan9.bell-labs.com ip 204.178.31.2
  735. > 204.178.31.2 ptr
  736. 2.31.178.204.in-addr.arpa ptr plan9.bell-labs.com
  737. 2.31.178.204.in-addr.arpa ptr ampl.com
  738. >
  739. .EE
  740. .LP
  741. Print the names of all systems that boot via PXE.
  742. .IP
  743. .EX
  744. % ndb/query -a bootf /386/9pxeload sys
  745. .EE
  746. .SH FILES
  747. .TF /lib/ndb/local.*xxx
  748. .TP
  749. .B /env/DNSSERVER
  750. resolver's DNS servers' IP addresses.
  751. .TP
  752. .B /lib/ndb/local
  753. first database file searched
  754. .TP
  755. .B /lib/ndb/local.*
  756. hash files for
  757. .B /lib/ndb/local
  758. .TP
  759. .B /srv/cs
  760. service file for
  761. .I ndb/cs
  762. .TP
  763. .B /net/cs
  764. where
  765. .B /srv/cs
  766. gets mounted
  767. .TP
  768. .B /srv/dns
  769. service file for
  770. .I ndb/dns
  771. .TP
  772. .B /net/dns
  773. where
  774. .B /srv/dns
  775. gets mounted
  776. .SH SOURCE
  777. .B /sys/src/cmd/ndb
  778. .SH SEE ALSO
  779. .IR ndb (2),
  780. .IR ndb (6)
  781. .SH BUGS
  782. .I Ndb
  783. databases are case-sensitive;
  784. ethernet addresses must be in lower-case hexadecimal.