26 |
26 |
27 do_update $out \ |
27 do_update $out \ |
28 cat $ROOT/$src |
28 cat $ROOT/$src |
29 else |
29 else |
30 log_skip "Copying $out <- $src: not changed" |
30 log_skip "Copying $out <- $src: not changed" |
|
31 fi |
|
32 } |
|
33 |
|
34 ## Run check-command on given file, outputting results: |
|
35 # |
|
36 # check_generic $src $cmd $args... |
|
37 # |
|
38 function check_generic { |
|
39 local src=$1; shift |
|
40 local cmd=$1; shift |
|
41 |
|
42 if cmd_test $cmd -q "$@"; then |
|
43 log_skip "Check $src: OK" |
|
44 |
|
45 else |
|
46 log_error " Check $src: Failed" |
|
47 |
|
48 indent " " $cmd "$@" |
|
49 |
|
50 exit 1 |
31 fi |
51 fi |
32 } |
52 } |
33 |
53 |
34 ## Hosts |
54 ## Hosts |
35 ## Update hosts from verbatim from input zone data: |
55 ## Update hosts from verbatim from input zone data: |
272 # Defaults to the global $DHCPD_CONF. |
292 # Defaults to the global $DHCPD_CONF. |
273 # Fails if the check fails. |
293 # Fails if the check fails. |
274 function check_dhcp { |
294 function check_dhcp { |
275 local conf=${1:-$DHCPD_CONF} |
295 local conf=${1:-$DHCPD_CONF} |
276 |
296 |
277 local cmd=($DHCPD -cf $conf -t) |
297 check_generic $conf \ |
278 |
298 $DHCPD -cf $conf -t |
279 if "${cmd[@]}" -q; then |
|
280 log_skip "Check $conf: OK" |
|
281 |
|
282 else |
|
283 log_error " Check $conf: Failed" |
|
284 |
|
285 indent " " "${cmd[@]}" |
|
286 |
|
287 exit 1 |
|
288 fi |
|
289 } |
299 } |
290 |
300 |
291 ## Test DHCP configuration of given settings/dhcp using check_dhcp $DHCP_DATA/$host.conf: |
301 ## Test DHCP configuration of given settings/dhcp using check_dhcp $DHCP_DATA/$host.conf: |
292 # |
302 # |
293 # check_dhcp_conf $conf |
303 # check_dhcp_conf $conf |
294 # |
304 # |
295 function check_dhcp_conf { |
305 function check_dhcp_conf { |
296 local conf=$1 |
306 local conf=$1; |
297 |
307 |
298 check_dhcp $DHCP_DATA/$conf.conf |
308 check_dhcp $DHCP_DATA/$conf.conf |
299 } |
309 } |
300 |
310 |
|
311 ## Test DHCP hosts source configuration for invalid fixed-address stanzas: |
|
312 # |
|
313 # check_dhcp_hosts $hosts_conf |
|
314 # |
|
315 function check_dhcp_hosts { |
|
316 local hosts=$1 |
|
317 |
|
318 # XXX: still too unclear |
|
319 local src=$hosts #$DHCP_DATA/$hosts.conf |
|
320 |
|
321 # set in do_reload_zones below |
|
322 if [ $RELOAD_ZONES ]; then |
|
323 check_generic $src \ |
|
324 $BIN/check-dhcp-hosts $DHCP_FILE_ARGS $ROOT/$src |
|
325 else |
|
326 log_noop "Check $src: skipped; did not reload DNS zones" |
|
327 fi |
|
328 } |
|
329 |
301 # Run rndc reload |
330 # Run rndc reload |
302 function do_reload { |
331 function do_reload_zones { |
303 # run |
332 # run |
304 indent " rndc: " \ |
333 indent " rndc: " \ |
305 $RNDC reload |
334 $RNDC reload |
|
335 |
|
336 # set flag |
|
337 RELOAD_ZONES=y |
306 } |
338 } |
307 |
339 |
308 ## Load update zonefiles into bind: |
340 ## Load update zonefiles into bind: |
309 # |
341 # |
310 # reload_zones |
342 # reload_zones |
328 |
360 |
329 else |
361 else |
330 log_update "$msg..." |
362 log_update "$msg..." |
331 |
363 |
332 # run |
364 # run |
333 do_reload |
365 do_reload_zones |
|
366 fi |
|
367 } |
|
368 |
|
369 ## Reload DHCP by restarting it, if running: |
|
370 # |
|
371 # do_reload_dhcp |
|
372 # |
|
373 # Does NOT restart dhcp if it is not running (status). |
|
374 function do_reload_dhcp { |
|
375 if cmd_test $DHCPD_INIT status >/dev/null; then |
|
376 cmd $DHCPD_INIT restart |
|
377 else |
|
378 log_warn "dhcpd not running; did not restart" |
|
379 fi |
|
380 } |
|
381 |
|
382 ## Reload dhcp hosts |
|
383 # |
|
384 # reload_dhcp |
|
385 # |
|
386 # noop's if we haven't reloaded zones |
|
387 function reload_dhcp { |
|
388 local msg="Reload DHCP hosts" |
|
389 |
|
390 if [ $RELOAD_FORCE ]; then |
|
391 log_force "$msg..." |
|
392 |
|
393 do_reload_dhcp |
|
394 |
|
395 elif [ $RELOAD_NOOP ]; then |
|
396 log_noop "$msg: skipped" |
|
397 |
|
398 else |
|
399 log_update "$msg..." |
|
400 |
|
401 # run |
|
402 do_reload_dhcp |
334 fi |
403 fi |
335 } |
404 } |
336 |
405 |
337 ## Perform `hg commit` for $DATA |
406 ## Perform `hg commit` for $DATA |
338 function do_commit { |
407 function do_commit { |