added interface for dnsd
This commit is contained in:
parent
c2c01e9f4c
commit
d465ef05b7
|
@ -7,6 +7,7 @@
|
||||||
;;; Copyright (c) 1996-2002 by Mike Sperber.
|
;;; Copyright (c) 1996-2002 by Mike Sperber.
|
||||||
;;; Copyright (c) 2000-2002 by Martin Gasbichler.
|
;;; Copyright (c) 2000-2002 by Martin Gasbichler.
|
||||||
;;; Copyright (c) 1998-2001 by Eric Marsden.
|
;;; Copyright (c) 1998-2001 by Eric Marsden.
|
||||||
|
;;; Copyright (c) 2005-2006 by Norbert Freudemann.
|
||||||
;;; For copyright information, see the file COPYING which comes with
|
;;; For copyright information, see the file COPYING which comes with
|
||||||
;;; the distribution.
|
;;; the distribution.
|
||||||
|
|
||||||
|
@ -147,7 +148,7 @@
|
||||||
dns-inverse-lookup ; obsolete, use dns-lookup-ip
|
dns-inverse-lookup ; obsolete, use dns-lookup-ip
|
||||||
dns-lookup-ip ; simple lookup function
|
dns-lookup-ip ; simple lookup function
|
||||||
dns-lookup-nameserver ; simple lookup function
|
dns-lookup-nameserver ; simple lookup function
|
||||||
dns-lookup-mail-exchanger ; simple lookpu function
|
dns-lookup-mail-exchanger ; simple lookup function
|
||||||
pretty-print-dns-message ; prints a human readable dns-msg
|
pretty-print-dns-message ; prints a human readable dns-msg
|
||||||
force-ip ; reruns a lookup until a ip is resolved
|
force-ip ; reruns a lookup until a ip is resolved
|
||||||
force-ip-list ; reruns a lookup until a list of ips is resolved
|
force-ip-list ; reruns a lookup until a list of ips is resolved
|
||||||
|
@ -160,7 +161,25 @@
|
||||||
host-fqdn
|
host-fqdn
|
||||||
system-fqdn
|
system-fqdn
|
||||||
|
|
||||||
dns-get-information
|
address32? ; for dnsd.scm
|
||||||
|
octet-pair->number ; -"-
|
||||||
|
number->octet-pair ; -"-
|
||||||
|
parse ; -"- produces a message-record-type
|
||||||
|
mc-message->octets ; -"- produces a byte-encoded (compressed) message
|
||||||
|
make-fqdn-name ; -"- maybe adds an ending dot to a string
|
||||||
|
fqdn? ; -"- checks for fully quallified domain names
|
||||||
|
cut-name ; -"- domain name split tool
|
||||||
|
dn-split? ; -"- domain name split tool
|
||||||
|
dns-server-error? ; -"- error condition predicate
|
||||||
|
dns-format-error? ; -"-
|
||||||
|
dns-server-failure? ; -"-
|
||||||
|
dns-name-error? ; -"-
|
||||||
|
dns-not-implemented? ; -"-
|
||||||
|
dns-refused? ; -"-
|
||||||
|
dns-error? ; -"-
|
||||||
|
bad-nameserver? ; -"-
|
||||||
|
dns-query/cache ; -"-
|
||||||
|
add-size-tag
|
||||||
|
|
||||||
(network-protocol :syntax)
|
(network-protocol :syntax)
|
||||||
network-protocol?
|
network-protocol?
|
||||||
|
@ -171,38 +190,67 @@
|
||||||
|
|
||||||
pretty-print-dns-message
|
pretty-print-dns-message
|
||||||
|
|
||||||
message? message-header message-questions message-answers
|
make-message message? message-header message-questions message-answers
|
||||||
message-nameservers message-additionals message-source
|
message-nameservers message-additionals message-source
|
||||||
|
set-message-source!
|
||||||
|
|
||||||
make-query-message make-simple-query-message
|
make-query-message make-simple-query-message
|
||||||
|
|
||||||
header? header-flags header-question-count header-answer-count
|
make-header header? header-id header-flags header-question-count
|
||||||
header-nameserver-count header-additional-count
|
header-answer-count header-nameserver-count header-additional-count
|
||||||
|
|
||||||
flags? flags-query-type flags-opcode flags-authoritative?
|
make-flags flags? flags-query-type flags-opcode flags-authoritative?
|
||||||
flags-truncated? flags-recursion-desired? flags-recursion-available?
|
flags-truncated? flags-recursion-desired? flags-recursion-available?
|
||||||
flags-zero flags-response-code
|
flags-zero flags-response-code set-flags-response-code!
|
||||||
|
set-flags-authoritative! set-flags-recursion-available!
|
||||||
|
set-flags-truncated!
|
||||||
|
|
||||||
question? question-name question-type question-class
|
make-question question? question-name question-type question-class
|
||||||
|
|
||||||
(message-class :syntax)
|
(message-class :syntax)
|
||||||
message-class? message-class-name message-class-number
|
message-class? message-class-name message-class-number
|
||||||
|
|
||||||
|
the-message-class
|
||||||
|
message-class-number->type
|
||||||
|
message-class-symbol->type
|
||||||
|
|
||||||
(message-type :syntax)
|
(message-type :syntax)
|
||||||
message-type? message-type-name message-type-number
|
message-type? message-type-name message-type-number
|
||||||
|
|
||||||
|
the-message-type
|
||||||
|
message-type-number->type
|
||||||
|
message-type-symbol->type
|
||||||
|
|
||||||
|
make-resource-record
|
||||||
resource-record?
|
resource-record?
|
||||||
resource-record-name resource-record-type
|
resource-record-name
|
||||||
resource-record-class resource-record-ttl
|
resource-record-type
|
||||||
|
resource-record-class
|
||||||
|
resource-record-ttl
|
||||||
resource-record-data
|
resource-record-data
|
||||||
|
|
||||||
resource-record-data-a? resource-record-data-a-ip
|
make-resource-record-data-a
|
||||||
resource-record-data-ns? resource-record-data-ns-name
|
resource-record-data-a?
|
||||||
resource-record-data-cname? resource-record-data-cname-name
|
resource-record-data-a-ip
|
||||||
resource-record-data-mx? resource-record-data-mx-preference
|
|
||||||
resource-record-data-mx-exchanger resource-record-data-ptr?
|
make-resource-record-data-ns
|
||||||
|
resource-record-data-ns?
|
||||||
|
resource-record-data-ns-name
|
||||||
|
|
||||||
|
make-resource-record-data-cname
|
||||||
|
resource-record-data-cname?
|
||||||
|
resource-record-data-cname-name
|
||||||
|
|
||||||
|
make-resource-record-data-mx
|
||||||
|
resource-record-data-mx?
|
||||||
|
resource-record-data-mx-preference
|
||||||
|
resource-record-data-mx-exchanger
|
||||||
|
|
||||||
|
make-resource-record-data-ptr
|
||||||
|
resource-record-data-ptr?
|
||||||
resource-record-data-ptr-name
|
resource-record-data-ptr-name
|
||||||
|
|
||||||
|
make-resource-record-data-soa
|
||||||
resource-record-data-soa?
|
resource-record-data-soa?
|
||||||
resource-record-data-soa-mname
|
resource-record-data-soa-mname
|
||||||
resource-record-data-soa-rname
|
resource-record-data-soa-rname
|
||||||
|
@ -212,6 +260,18 @@
|
||||||
resource-record-data-soa-expire
|
resource-record-data-soa-expire
|
||||||
resource-record-data-soa-minimum
|
resource-record-data-soa-minimum
|
||||||
|
|
||||||
|
make-resource-record-data-aaaa
|
||||||
|
resource-record-data-aaaa?
|
||||||
|
resource-record-data-aaaa-ipv6
|
||||||
|
|
||||||
|
make-resource-record-data-hinfo
|
||||||
|
resource-record-data-hinfo?
|
||||||
|
resource-record-data-hinfo-data
|
||||||
|
|
||||||
|
make-resource-record-data-txt
|
||||||
|
resource-record-data-txt?
|
||||||
|
resource-record-data-txt-text
|
||||||
|
|
||||||
cache? cache-answer cache-ttl cache-time
|
cache? cache-answer cache-ttl cache-time
|
||||||
|
|
||||||
resolv.conf-parse-error?
|
resolv.conf-parse-error?
|
||||||
|
@ -224,6 +284,7 @@
|
||||||
ip-string->address32
|
ip-string->address32
|
||||||
ip-string->in-addr.arpa-string
|
ip-string->in-addr.arpa-string
|
||||||
octet-ip->address32 ;for dns.scm
|
octet-ip->address32 ;for dns.scm
|
||||||
|
address32->octet-ip ;for dns.scm
|
||||||
ip-string?))
|
ip-string?))
|
||||||
|
|
||||||
(define-interface cgi-scripts-interface
|
(define-interface cgi-scripts-interface
|
||||||
|
@ -266,6 +327,150 @@
|
||||||
(export with-fatal-error-handler*
|
(export with-fatal-error-handler*
|
||||||
(with-fatal-error-handler :syntax)))
|
(with-fatal-error-handler :syntax)))
|
||||||
|
|
||||||
|
;; DNS server
|
||||||
|
|
||||||
|
(define-interface dnsd-silex-interface
|
||||||
|
(export lexer
|
||||||
|
lexer-getc
|
||||||
|
lexer-ungetc
|
||||||
|
lexer-init))
|
||||||
|
|
||||||
|
(define-interface dnsd-rw-locks-interface
|
||||||
|
(export make-r/w-lock
|
||||||
|
obtain-R/w-lock
|
||||||
|
obtain-r/W-lock
|
||||||
|
release-R/w-lock
|
||||||
|
release-r/W-lock
|
||||||
|
with-R/w-lock
|
||||||
|
with-r/W-lock))
|
||||||
|
|
||||||
|
(define-interface dnsd-semaphores-interface
|
||||||
|
(export make-semaphore
|
||||||
|
set-semaphore!
|
||||||
|
semaphore-post
|
||||||
|
semaphore-wait))
|
||||||
|
|
||||||
|
(define-interface dnsd-mf-parser-interface
|
||||||
|
(export parse-mf))
|
||||||
|
|
||||||
|
(define-interface dnsd-logging-interface
|
||||||
|
(export display-debug
|
||||||
|
apply-w/debug
|
||||||
|
dnsd-log))
|
||||||
|
|
||||||
|
(define-interface dnsd-rr-def-interface
|
||||||
|
(export dns-rr-a
|
||||||
|
dns-rr-ns
|
||||||
|
dns-rr-cname
|
||||||
|
dns-rr-soa
|
||||||
|
dns-rr-ptr
|
||||||
|
dns-rr-hinfo
|
||||||
|
dns-rr-mx
|
||||||
|
dns-rr-txt
|
||||||
|
dns-rr-aaaa))
|
||||||
|
|
||||||
|
(define-interface dnsd-options-interface
|
||||||
|
(export make-default-dnsd-options
|
||||||
|
make-options-from-list
|
||||||
|
dnsd-options?
|
||||||
|
dnsd-options-port
|
||||||
|
dnsd-options-dir
|
||||||
|
dnsd-options-nameservers
|
||||||
|
dnsd-options-use-axfr?
|
||||||
|
dnsd-options-use-cache?
|
||||||
|
dnsd-options-cleanup-interval
|
||||||
|
dnsd-options-retry-interval
|
||||||
|
dnsd-options-use-db?
|
||||||
|
dnsd-options-use-recursion?
|
||||||
|
dnsd-options-rec-timeout
|
||||||
|
dnsd-options-socket-timeout
|
||||||
|
dnsd-options-socket-max-tries
|
||||||
|
dnsd-options-max-connections
|
||||||
|
dnsd-options-blacklist-time
|
||||||
|
dnsd-options-blacklist-value
|
||||||
|
dnsd-options-use-pre/post
|
||||||
|
dnsd-options-debug-mode
|
||||||
|
with-port
|
||||||
|
with-dir
|
||||||
|
with-nameservers
|
||||||
|
with-axfr
|
||||||
|
with-cache
|
||||||
|
with-cleanup-interval
|
||||||
|
with-retry-interval
|
||||||
|
with-db
|
||||||
|
with-recursion
|
||||||
|
with-rec-timeout
|
||||||
|
with-socket-timeout
|
||||||
|
with-socket-max-tries
|
||||||
|
with-max-connections
|
||||||
|
with-blacklist-time
|
||||||
|
with-blacklist-value
|
||||||
|
with-use-pre/post
|
||||||
|
with-debug-mode))
|
||||||
|
|
||||||
|
(define-interface dnsd-database-interface
|
||||||
|
(export maybe-get-soa-rr-name
|
||||||
|
db-clear-database
|
||||||
|
db-clear-zone
|
||||||
|
db-update-zone
|
||||||
|
db-get-zone
|
||||||
|
db-get-zone-for-axfr
|
||||||
|
db-get-zone-soa-rr
|
||||||
|
db-pretty-print
|
||||||
|
db-lookup-rec))
|
||||||
|
|
||||||
|
(define-interface dnsddb-options-interface
|
||||||
|
(export make-default-dnsddb-options
|
||||||
|
make-db-options-from-list
|
||||||
|
dnsddb-options?
|
||||||
|
dnsddb-options-name
|
||||||
|
dnsddb-options-class
|
||||||
|
dnsddb-options-type
|
||||||
|
dnsddb-options-primary? ;; depreached
|
||||||
|
dnsddb-options-file
|
||||||
|
dnsddb-options-filetype
|
||||||
|
dnsddb-options-master-name
|
||||||
|
dnsddb-options-master-ip
|
||||||
|
with-name
|
||||||
|
with-class
|
||||||
|
with-type
|
||||||
|
with-primary?
|
||||||
|
with-file
|
||||||
|
with-filetype
|
||||||
|
with-master-name
|
||||||
|
with-master-ip))
|
||||||
|
|
||||||
|
(define-interface dnsd-cache-interface
|
||||||
|
(export dnsd-cache-clear!
|
||||||
|
dnsd-cache-clean!
|
||||||
|
dnsd-cache-lookup?
|
||||||
|
dnsd-cache-update!
|
||||||
|
dnsd-cache-pretty-print))
|
||||||
|
|
||||||
|
(define-interface dnsd-slist-interface
|
||||||
|
(export dnsd-slist-clear!
|
||||||
|
dnsd-slist-clean!
|
||||||
|
dnsd-slist-lookup
|
||||||
|
dnsd-slist-update!
|
||||||
|
dnsd-slist-pretty-print
|
||||||
|
|
||||||
|
dnsd-blacklist-clear!
|
||||||
|
;deprecated dnsd-blacklist-clean!
|
||||||
|
dnsd-blacklist!
|
||||||
|
dnsd-blacklist-unlist!
|
||||||
|
dnsd-blacklist-print))
|
||||||
|
|
||||||
|
(define-interface dnsd-resolver-interface
|
||||||
|
(export dnsd-ask-resolver-rec
|
||||||
|
dnsd-ask-resolver-direct
|
||||||
|
;; Some stuff needed in dnsd.scm:
|
||||||
|
msg-set-rcode!
|
||||||
|
make-response))
|
||||||
|
|
||||||
|
(define-interface dnsd-interface
|
||||||
|
(export))
|
||||||
|
|
||||||
|
|
||||||
;; FTP server
|
;; FTP server
|
||||||
|
|
||||||
(define-interface ftpd-interface
|
(define-interface ftpd-interface
|
||||||
|
@ -536,21 +741,22 @@
|
||||||
|
|
||||||
(define-structure dns dns-interface
|
(define-structure dns dns-interface
|
||||||
(open scheme-with-scsh
|
(open scheme-with-scsh
|
||||||
(subset srfi-1 (filter reverse! delete lset-difference lset-union))
|
(subset srfi-1 (filter reverse! delete lset-difference lset-union
|
||||||
|
fold fold-right concatenate))
|
||||||
tables
|
tables
|
||||||
ascii
|
ascii
|
||||||
formats
|
formats
|
||||||
signals
|
signals
|
||||||
finite-types
|
finite-types
|
||||||
define-record-types
|
define-record-types
|
||||||
random
|
|
||||||
queues
|
queues
|
||||||
conditions
|
conditions
|
||||||
handle
|
handle
|
||||||
sort
|
sort
|
||||||
threads
|
threads
|
||||||
locks
|
locks
|
||||||
ips)
|
ips
|
||||||
|
srfi-27)
|
||||||
(files (lib dns)))
|
(files (lib dns)))
|
||||||
|
|
||||||
(define-structure ips ips-interface
|
(define-structure ips ips-interface
|
||||||
|
@ -610,6 +816,159 @@
|
||||||
(open scheme conditions handle)
|
(open scheme conditions handle)
|
||||||
(files (lib handle-fatal-error)))
|
(files (lib handle-fatal-error)))
|
||||||
|
|
||||||
|
;; DNS server ******************************************************************
|
||||||
|
|
||||||
|
(define-structure dnsd dnsd-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
(subset srfi-1 (fold-right take drop filter lset-difference lset-union))
|
||||||
|
srfi-2
|
||||||
|
(subset srfi-13 (string-downcase))
|
||||||
|
|
||||||
|
threads
|
||||||
|
thread-fluids ;; fork-thread
|
||||||
|
rendezvous ; Needs SUnterlib
|
||||||
|
rendezvous-channels ; Needs SUnterlib
|
||||||
|
|
||||||
|
tables
|
||||||
|
ascii
|
||||||
|
finite-types
|
||||||
|
define-record-types
|
||||||
|
handle-fatal-error
|
||||||
|
ips ;???
|
||||||
|
dns
|
||||||
|
|
||||||
|
dnsd-options
|
||||||
|
dnsd-logging
|
||||||
|
dnsddb-options
|
||||||
|
;; dnsd-rw-locks
|
||||||
|
dnsd-semaphores
|
||||||
|
dnsd-rr-def
|
||||||
|
dnsd-mf-parser
|
||||||
|
dnsd-database
|
||||||
|
dnsd-cache
|
||||||
|
dnsd-slist
|
||||||
|
dnsd-resolver)
|
||||||
|
|
||||||
|
(files (dnsd dnsd)))
|
||||||
|
|
||||||
|
(define-structure dnsd-resolver dnsd-resolver-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
(subset srfi-1 (fold-right delete filter take drop))
|
||||||
|
srfi-2
|
||||||
|
srfi-27 ; for shake-list
|
||||||
|
|
||||||
|
|
||||||
|
threads
|
||||||
|
thread-fluids ;; fork-thread
|
||||||
|
rendezvous ; Needs SUnterlib
|
||||||
|
rendezvous-channels ; Needs SUnterlib
|
||||||
|
|
||||||
|
define-record-types
|
||||||
|
handle-fatal-error
|
||||||
|
dns
|
||||||
|
|
||||||
|
dnsd-cache
|
||||||
|
dnsd-logging
|
||||||
|
dnsd-slist
|
||||||
|
dnsd-options)
|
||||||
|
|
||||||
|
(files (dnsd resolver)))
|
||||||
|
|
||||||
|
(define-structure dnsd-logging dnsd-logging-interface
|
||||||
|
(open scheme-with-scsh)
|
||||||
|
(files (dnsd logging)))
|
||||||
|
|
||||||
|
|
||||||
|
(define-structure dnsddb-options dnsddb-options-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
define-record-types
|
||||||
|
dns)
|
||||||
|
(files (dnsd db-options)))
|
||||||
|
|
||||||
|
(define-structure dnsd-database dnsd-database-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
(subset srfi-1 (fold-right))
|
||||||
|
srfi-2
|
||||||
|
(subset srfi-13 (string-downcase))
|
||||||
|
|
||||||
|
define-record-types
|
||||||
|
tables
|
||||||
|
dns
|
||||||
|
|
||||||
|
dnsd-rw-locks
|
||||||
|
dnsd-logging)
|
||||||
|
|
||||||
|
(files (dnsd database)))
|
||||||
|
|
||||||
|
(define-structure dnsd-cache dnsd-cache-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
define-record-types
|
||||||
|
(subset srfi-1 (fold-right))
|
||||||
|
(subset srfi-13 (string-downcase))
|
||||||
|
tables
|
||||||
|
dns
|
||||||
|
|
||||||
|
dnsd-rw-locks)
|
||||||
|
(files (dnsd cache)))
|
||||||
|
|
||||||
|
(define-structure dnsd-slist dnsd-slist-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
define-record-types
|
||||||
|
(subset srfi-1 (fold-right filter))
|
||||||
|
srfi-2
|
||||||
|
(subset srfi-13 (string-downcase))
|
||||||
|
tables
|
||||||
|
dns
|
||||||
|
|
||||||
|
dnsd-options
|
||||||
|
dnsd-rw-locks)
|
||||||
|
(files (dnsd slist)))
|
||||||
|
|
||||||
|
(define-structure dnsd-options dnsd-options-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
define-record-types)
|
||||||
|
(files (dnsd options)))
|
||||||
|
|
||||||
|
(define-structure dnsd-rw-locks dnsd-rw-locks-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
locks
|
||||||
|
threads
|
||||||
|
define-record-types)
|
||||||
|
(files (dnsd rw-locks)))
|
||||||
|
|
||||||
|
(define-structure dnsd-semaphores dnsd-semaphores-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
define-record-types
|
||||||
|
locks)
|
||||||
|
(files (dnsd semaphores)))
|
||||||
|
|
||||||
|
(define-structure dnsd-rr-def dnsd-rr-def-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
ips
|
||||||
|
dns
|
||||||
|
srfi-2)
|
||||||
|
(files (dnsd rr-def)))
|
||||||
|
|
||||||
|
(define-structure dnsd-mf-parser dnsd-mf-parser-interface
|
||||||
|
(open scheme-with-scsh
|
||||||
|
(subset srfi-1 (fold-right))
|
||||||
|
srfi-2
|
||||||
|
(subset srfi-13 (string-downcase))
|
||||||
|
|
||||||
|
handle-fatal-error
|
||||||
|
dns
|
||||||
|
|
||||||
|
dnsd-options
|
||||||
|
dnsd-logging
|
||||||
|
dnsd-silex
|
||||||
|
dnsd-rr-def)
|
||||||
|
(files (dnsd masterfile-parser)))
|
||||||
|
|
||||||
|
(define-structure dnsd-silex dnsd-silex-interface
|
||||||
|
(open scheme-with-scsh)
|
||||||
|
(files (dnsd masterfile.l)))
|
||||||
|
|
||||||
|
|
||||||
;; FTP server
|
;; FTP server
|
||||||
|
|
||||||
(define-structure ftpd ftpd-interface
|
(define-structure ftpd ftpd-interface
|
||||||
|
|
Loading…
Reference in New Issue