[dhcp-agent-commits] dhcp-agent/conf default.sysconf,1.6,1.7
Status: Alpha
Brought to you by:
actmodern
From: <act...@us...> - 2003-06-17 07:34:39
|
Update of /cvsroot/dhcp-agent/dhcp-agent/conf In directory sc8-pr-cvs1:/tmp/cvs-serv15379/conf Modified Files: default.sysconf Log Message: revamped sysconf code Index: default.sysconf =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/conf/default.sysconf,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** default.sysconf 8 Jun 2003 22:15:24 -0000 1.6 --- default.sysconf 17 Jun 2003 07:34:36 -0000 1.7 *************** *** 11,17 **** (define configure-interface #f) ! (define reconfigure-interface #f) ! (let* ((configured-ip-address #f)) (set! configure-interface --- 11,17 ---- (define configure-interface #f) ! ; XXX -- no need for unconfigure interface, client will handle that internally. ! (let ((configured-ip-address #f)) (set! configure-interface *************** *** 37,51 **** (if (not (client-interface-up client-control dhcp-requested-ip-address subnet-mask mtu)) (client-fatal-message "could not bring up interface... exiting.") ! (set! configured-ip-address dhcp-requested-ip-address)))))) ! ! (set! reconfigure-interface ! (lambda () ! ! (if configured-ip-address ! (if (not (string=? configured-ip-address dhcp-requested-ip-address)) ! (begin ! (client-info-message "ip address changed during reconfiguration:") ! (client-info-message (string-append "using new address: " dhcp-requested-ip-address)) ! (configure-interface))))))) ; XXX --- 37,41 ---- (if (not (client-interface-up client-control dhcp-requested-ip-address subnet-mask mtu)) (client-fatal-message "could not bring up interface... exiting.") ! (set! configured-ip-address dhcp-requested-ip-address))))))) ; XXX *************** *** 54,69 **** ; All configure-* functions are placed inside of closures. This ; allows seemless persistantance of old values and thus ! ; reconfigure-* can be written easily. ; - ; reconfigure-* is called during rebind or renew. ; Domain and domain-name servers - ; (define configure-dns #f) - (define reconfigure-dns #f) (define unconfigure-dns #f) ! (let* ((configured-domain-name #f) (configured-domain-name-servers #f) --- 44,56 ---- ; All configure-* functions are placed inside of closures. This ; allows seemless persistantance of old values and thus ! ; unconfigure-* can be written easily. ; ; Domain and domain-name servers (define configure-dns #f) (define unconfigure-dns #f) ! (let ((configured-domain-name #f) (configured-domain-name-servers #f) *************** *** 74,96 **** (client-configure? client-control 'dhcp-domain-name) (defined? 'dhcp-domain-name-servers) ! (defined? 'dhcp-domain-name)))) ; define this here since we'll be calling it from reconfigure as well. - (real-configure-dns - (lambda() - (let ((resolv-conf-file-port (open "/etc/resolv.conf" O_WRONLY 0644))) - (client-info-message "configuring resolver") - (map-in-order - (lambda (dns-server) - (simple-format resolv-conf-file-port "nameserver ~A\n" dns-server)) dhcp-domain-name-servers) - (simple-format resolv-conf-file-port "search ~A\n" dhcp-domain-name) - (close-port resolv-conf-file-port) - - ; now setup the options so we can use them again. - (set! configured-domain-name dhcp-domain-name) - (set! configured-domain-name-servers dhcp-domain-name-servers))))) - - ; configure dns options (set! configure-dns --- 61,68 ---- (client-configure? client-control 'dhcp-domain-name) (defined? 'dhcp-domain-name-servers) ! (defined? 'dhcp-domain-name))))) ; define this here since we'll be calling it from reconfigure as well. ; configure dns options (set! configure-dns *************** *** 98,104 **** (lambda () (if (do-configure) ! (real-configure-dns)))) ! ; unconfigure dns options (set! unconfigure-dns (lambda() --- 70,86 ---- (lambda () (if (do-configure) ! (let ((resolv-conf-file-port (open "/etc/resolv.conf" O_WRONLY 0644))) ! (client-info-message "configuring resolver") ! (map-in-order ! (lambda (dns-server) ! (simple-format resolv-conf-file-port "nameserver ~A\n" dns-server)) dhcp-domain-name-servers) ! (simple-format resolv-conf-file-port "search ~A\n" dhcp-domain-name) ! (close-port resolv-conf-file-port) ! ; now setup the options so we can use them again in unconfigure. ! (set! configured-domain-name dhcp-domain-name) ! (set! configured-domain-name-servers dhcp-domain-name-servers))))) ! ! ; unconfigure dns options (set! unconfigure-dns (lambda() *************** *** 107,209 **** ; is a good server :-) ! #t)) ! ! (set! reconfigure-dns ! (lambda() ! (if (do-configure) ! (if (and configured-domain-name configured-domain-name-servers) ! (if (not (or (string=? configured-domain-name dhcp-domain-name) ! (string=? configured-domain-name-servers dhcp-domain-name-servers))) ! (begin ! (client-info-message "domain name options have changed. reconfiguring...") ! (real-configure-dns)))) ! ! ; otherwise this is the first time we've received this option ! (real-configure-dns))))) ; Routers. We use client-set-default-route to add the route. - ; (define configure-default-route #f) (define unconfigure-default-route #f) - (define reconfigure-default-route #f) ! (let* ((configured-default-route #f) ; check to see if really need to configure ! (do-configure ! (lambda() ! (and (client-configure? client-control 'dhcp-routers) ! (defined? 'dhcp-routers)))) ! ! (real-configure-default-route ! (lambda() ! ! ; we need to check for latency so we can call client-discovery-icmp-latency ! ; which sends out icmp echo messages and the latency value associated with it ! ; ! ! (let ((routers (sort (client-discover-icmp-latency client-control dhcp-routers) ! (lambda (x y) (< (car x) (car y)))))) ! ! (if (null? routers) ! (begin ! (client-error-message "default routes not responding. defaulting to first one in list") ! (client-set-default-route client-control (car (dhcp-routers))) ! (set! configured-default-route (car dhcp-routers))) ! ! (let ((default-route (car (cdr (car routers))))) ! (display default-route) ! (newline) ! (client-info-message (string-append "adding default route to: " default-route)) ! (client-set-default-route client-control default-route) ! (set! configured-default-route default-route)))))) ! ! (real-unconfigure-default-route ! (lambda() ! (begin ! (client-info-message (string-append "removing default route to: " configured-default-route)) ! (client-remove-default-route client-control configured-default-route))))) (set! configure-default-route (lambda() (if (do-configure) ! (real-configure-default-route)))) ! (set! reconfigure-default-route (lambda() (if (do-configure) (if configured-default-route (begin ! (real-unconfigure-default-route) ! (real-configure-default-route)))))) ! ! (set! unconfigure-default-route ! (lambda() ! (if configured-default-route ! (real-unconfigure-default-route))))) ; After everything is defined set to hooks ; ! ; We have four hooks. dhcp-bound-hook, dhcp-rebind-hook, ! ; dhcp-renew-hook, dhcp-release-hook ! ; ! ! ; setup options on dhcp-bound ! ! (add-hook! dhcp-bound-hook configure-dns) ! (add-hook! dhcp-bound-hook configure-default-route) ! (add-hook! dhcp-bound-hook configure-interface) ! ! ; on rebind and renew call reconfigure to check if ! ; reconfiguration is necessary. ! (add-hook! dhcp-rebind-hook reconfigure-dns) ! (add-hook! dhcp-rebind-hook reconfigure-default-route) ! (add-hook! dhcp-renew-hook reconfigure-dns) ! (add-hook! dhcp-renew-hook reconfigure-default-route) ! (add-hook! dhcp-renew-hook reconfigure-interface) ; unconfigure options on dhcp-release-hook --- 89,143 ---- ; is a good server :-) ! #t))) ; Routers. We use client-set-default-route to add the route. (define configure-default-route #f) (define unconfigure-default-route #f) ! (let ((configured-default-route #f) ; check to see if really need to configure ! (do-configure ! (lambda() ! (and (client-configure? client-control 'dhcp-routers) ! (defined? 'dhcp-routers))))) (set! configure-default-route (lambda() (if (do-configure) ! (let ((routers (sort (client-discover-icmp-latency client-control dhcp-routers) ! (lambda (x y) (< (car x) (car y)))))) + (if (null? routers) + (begin + (client-error-message "default routes not responding. defaulting to first one in list") + (client-set-default-route client-control (car dhcp-routers)) + (set! configured-default-route (car dhcp-routers))) ! (let ((default-route (car (cdr (car routers))))) ! (display default-route) ! (newline) ! (client-info-message (string-append "adding default route to: " default-route)) ! (client-set-default-route client-control default-route) ! (set! configured-default-route default-route))))))) ! ! (set! unconfigure-default-route (lambda() (if (do-configure) (if configured-default-route (begin ! (client-info-message (string-append "removing default route to: " configured-default-route)) ! (client-remove-default-route client-control configured-default-route))))))) ; After everything is defined set to hooks ; ! ; We have two hooks. dhcp-bind-hook, dhcp-release-hook, ! ; setup options on dhcp-bind ! (add-hook! dhcp-bind-hook configure-dns) ! (add-hook! dhcp-bind-hook configure-default-route) ! (add-hook! dhcp-bind-hook configure-interface) ; unconfigure options on dhcp-release-hook *************** *** 211,213 **** (add-hook! dhcp-release-hook unconfigure-dns) (add-hook! dhcp-release-hook unconfigure-default-route) - (add-hook! dhcp-release-hook reconfigure-interface) --- 145,146 ---- |