[Gd-chatter] r11080 - trunk/libraries/network/koala/sources/examples/buddha
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Wed Dec 20 03:33:26 CET 2006
Author: hannes
Date: Wed Dec 20 03:33:22 2006
New Revision: 11080
Modified:
trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan
trunk/libraries/network/koala/sources/examples/buddha/config.dylan
trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan
trunk/libraries/network/koala/sources/examples/buddha/subnet.dylan
trunk/libraries/network/koala/sources/examples/buddha/zone.dylan
Log:
Bug: 7257
*add dhcp? option to add subnet
*print tinydns file more correct (v6-address & NS for reverse SOA)
*generate dhcp-start more safe (doesn't work with /31 and /32...) (/31 is not used, /32 doesn't work on other places with buddha)
Modified: trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/buddha.dylan Wed Dec 20 03:33:22 2006
@@ -322,6 +322,18 @@
do(add-form(real-type,
#f,
parent-object,
+ xml: if (real-type = <subnet>)
+ with-xml()
+ div { text("enable dhcp"),
+ input(type => "checkbox",
+ name => "dhcp?",
+ value => "dhcp?",
+ checked => "checked")
+ }
+ end
+ else
+ #f
+ end,
fill-from-request: errors))
}
end);
Modified: trunk/libraries/network/koala/sources/examples/buddha/config.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/config.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/config.dylan Wed Dec 20 03:33:22 2006
@@ -180,6 +180,7 @@
define method check (subnet :: <ipv4-subnet>, #next next-method, #key test-result = 0)
=> (res :: <boolean>)
next-method();
+ subnet.dhcp? := if (get-query-value("dhcp?")) #t else #f end;
if (subnet.dhcp-start > subnet.dhcp-end)
signal(make(<web-error>,
error: "DHCP start greater than DHCP end"));
Modified: trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/ipv6.dylan Wed Dec 20 03:33:22 2006
@@ -72,9 +72,13 @@
end;
define method as-dns-string (ip :: <ipv6-address>) => (res)
- let res = as(<string>, ip);
- if (res ~= "no v6 address assigned")
- apply(concatenate, split(res, ':'));
+ format-out("ip %=\n", ip.data);
+ if (ip ~= $bottom-v6-address)
+ let strings = make(<list>);
+ for (i from 0 below 16)
+ strings := add!(strings, integer-to-string(ip.data[i], base: 16, size: 2));
+ end;
+ reduce1(concatenate, reverse(strings));
end;
end;
define method as (class == <string>, ip :: <ipv6-address>) => (res :: <string>)
Modified: trunk/libraries/network/koala/sources/examples/buddha/subnet.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/subnet.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/subnet.dylan Wed Dec 20 03:33:22 2006
@@ -45,11 +45,20 @@
end;
define web-class <ipv4-subnet> (<subnet>, <ipv4-network>)
- data dhcp-start :: <ipv4-address>, base-network-address(object.cidr) + 21;
+ data dhcp-start :: <ipv4-address>, get-reasonable-dhcp-start(object);
data dhcp-end :: <ipv4-address>, broadcast-address(object.cidr) - 1;
data dhcp-router :: <ipv4-address>, base-network-address(object.cidr) + 1;
end;
+define function get-reasonable-dhcp-start (object :: <ipv4-subnet>)
+ if (object.cidr.cidr-netmask < 26)
+ base-network-address(object.cidr) + 21;
+ elseif (object.cidr.cidr-netmask < 30)
+ base-network-address(object.cidr) + 3;
+ elseif (object.cidr.cidr-netmask = 30)
+ base-network-address(object.cidr) + 1;
+ end;
+end;
define method storage (class == <ipv4-subnet>) => (res)
choose(rcurry(instance?, <ipv4-subnet>), storage(<subnet>));
end;
Modified: trunk/libraries/network/koala/sources/examples/buddha/zone.dylan
==============================================================================
--- trunk/libraries/network/koala/sources/examples/buddha/zone.dylan (original)
+++ trunk/libraries/network/koala/sources/examples/buddha/zone.dylan Wed Dec 20 03:33:22 2006
@@ -147,6 +147,9 @@
do(method(x)
format(stream, "Z%s:%s.:%s.\n",
x, print-zone.nameservers[0].ns-name, print-zone.hostmaster);
+ do(method(y)
+ format(stream, "&%s::%s.\n", x, y.ns-name)
+ end, print-zone.nameservers);
end, apply(concatenate, map(get-reverse-cidrs, storage(<network>))));
//nameserver
do(method(x)
More information about the chatter
mailing list