module Test_dhclient = let conf =" # Sample dhclient.conf # Protocol timing timeout 3; # Expect a fast server retry 10; # Lease requirements and requests request subnet-mask, broadcast-address, ntp-servers; # Dynamic DNS send fqdn.fqdn \"grosse.fugue.com.\"; option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; interface ep0 { script /sbin/dhclient-script; send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; send dhcp-lease-time 3600; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name; media media10baseT/UTP, \"media10base2/BNC\"; } alias { interface \"ep0\"; fixed-address 192.5.5.213; option subnet-mask 255.255.255.255; } lease { interface \"eth0\"; fixed-address 192.33.137.200; medium \"link0 link1\"; vendor option space \"name\"; option host-name \"andare.swiftmedia.com\"; option subnet-mask 255.255.255.0; option broadcast-address 192.33.137.255; option routers 192.33.137.250; option domain-name-servers 127.0.0.1; renew 2 2000/1/12 00:00:01; rebind 2 2000/1/12 00:00:01; expire 2 2000/1/12 00:00:01; } " test Dhclient.lns get conf = { "#comment" = "Sample dhclient.conf" } { "#comment" = "Protocol timing" } { "timeout" = "3" { "#comment" = "Expect a fast server" } } { "retry" = "10" } { "#comment" = "Lease requirements and requests" } { "request" { "1" = "subnet-mask" } { "2" = "broadcast-address" } { "3" = "ntp-servers" } } { "#comment" = "Dynamic DNS" } { "send" { "fqdn.fqdn" = "\"grosse.fugue.com.\"" } } {} { "option" { "rfc3442-classless-static-routes" { "code" = "121" } { "value" = "array of unsigned integer 8" } } } {} { "interface" = "ep0" { "script" = "/sbin/dhclient-script" } { "send" { "dhcp-client-identifier" = "1:0:a0:24:ab:fb:9c" } } { "send" { "dhcp-lease-time" = "3600" } } { "request" { "1" = "subnet-mask" } { "2" = "broadcast-address" } { "3" = "time-offset" } { "4" = "routers" } { "5" = "domain-name" } { "6" = "domain-name-servers" } { "7" = "host-name" } } { "media" { "1" = "media10baseT/UTP" } { "2" = "\"media10base2/BNC\"" } } } {} { "alias" { "interface" = "\"ep0\"" } { "fixed-address" = "192.5.5.213" } { "option" { "subnet-mask" = "255.255.255.255" } } } {} { "lease" { "interface" = "\"eth0\"" } { "fixed-address" = "192.33.137.200" } { "medium" = "\"link0 link1\"" } { "vendor option space" = "\"name\"" } { "option" { "host-name" = "\"andare.swiftmedia.com\"" } } { "option" { "subnet-mask" = "255.255.255.0" } } { "option" { "broadcast-address" = "192.33.137.255" } } { "option" { "routers" = "192.33.137.250" } } { "option" { "domain-name-servers" = "127.0.0.1" } } { "renew" { "weekday" = "2" } { "year" = "2000" } { "month" = "1" } { "day" = "12" } { "hour" = "00" } { "minute" = "00" } { "second" = "01" } } { "rebind" { "weekday" = "2" } { "year" = "2000" } { "month" = "1" } { "day" = "12" } { "hour" = "00" } { "minute" = "00" } { "second" = "01" } } { "expire" { "weekday" = "2" } { "year" = "2000" } { "month" = "1" } { "day" = "12" } { "hour" = "00" } { "minute" = "00" } { "second" = "01" } } } test Dhclient.lns get "append domain-name-servers 127.0.0.1;\n" = { "append" { "domain-name-servers" = "127.0.0.1" } } test Dhclient.lns put "" after set "/prepend/domain-name-servers" "127.0.0.1" = "prepend domain-name-servers 127.0.0.1;\n" (* When = is used before the value, it's an evaluated string, see dhcp-eval *) test Dhclient.lns get "send dhcp-client-identifier = hardware;\n" = { "send" { "dhcp-client-identifier" { "#eval" = "hardware" } } } test Dhclient.lns put "send host-name = gethostname();\n" after set "/send/host-name/#eval" "test" = "send host-name = test;\n"