summaryrefslogtreecommitdiff
path: root/module/dhcp.m
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
commit46439007cf417cbd9ac8049bb4122c890097a0fa (patch)
tree6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /module/dhcp.m
parent37da2899f40661e3e9631e497da8dc59b971cbd0 (diff)
20060303-partial
Diffstat (limited to 'module/dhcp.m')
-rw-r--r--module/dhcp.m84
1 files changed, 84 insertions, 0 deletions
diff --git a/module/dhcp.m b/module/dhcp.m
new file mode 100644
index 00000000..a0c52c7f
--- /dev/null
+++ b/module/dhcp.m
@@ -0,0 +1,84 @@
+Dhcpclient: module
+{
+ PATH: con "/dis/lib/dhcpclient.dis";
+
+ Bootconf: adt {
+ ip: string;
+ ipgw: string;
+ ipmask: string;
+ bootf: string;
+ bootip: string;
+ dhcpip: string;
+ siaddr: string;
+ serverid: string;
+ sys: string;
+ dom: string;
+ lease: int;
+ options: array of array of byte;
+ vendor: array of array of byte;
+
+ new: fn(): ref Bootconf;
+ get: fn(c: self ref Bootconf, n: int): array of byte;
+ getint: fn(c: self ref Bootconf, n: int): int;
+ getip: fn(c: self ref Bootconf, n: int): string;
+ getips: fn(c: self ref Bootconf, n: int): list of string;
+ gets: fn(c: self ref Bootconf, n: int): string;
+ put: fn(c: self ref Bootconf, n: int, a: array of byte);
+ putint: fn(c: self ref Bootconf, n: int, v: int);
+ putips: fn(c: self ref Bootconf, n: int, ips: list of string);
+ puts: fn(c: self ref Bootconf, n: int, s: string);
+ };
+
+ Lease: adt {
+ pid: int;
+ configs: chan of (ref Bootconf, string);
+
+ release: fn(l: self ref Lease);
+ };
+
+ init: fn();
+ tracing: fn(debug: int);
+ bootp: fn(net: string, ctlifc: ref Sys->FD, device: string, init: ref Bootconf): (ref Bootconf, string);
+ dhcp: fn(net: string, ctlifc: ref Sys->FD, device: string, init: ref Bootconf, options: array of int): (ref Bootconf, ref Lease, string);
+
+ applycfg: fn(net: string, ctlifc: ref Sys->FD, conf: ref Bootconf): string;
+ removecfg: fn(net: string, ctlifc: ref Sys->FD, conf: ref Bootconf): string;
+
+ # bootp options used here
+ Opad: con 0;
+ Oend: con 255;
+ Omask: con 1;
+ Orouter: con 3;
+ Odnsserver: con 6;
+ Ocookieserver: con 8;
+ Ohostname: con 12;
+ Odomainname: con 15;
+ Ontpserver: con 42;
+ Ovendorinfo: con 43;
+ Onetbiosns: con 44;
+ Osmtpserver: con 69;
+ Opop3server: con 70;
+ Owwwserver: con 72;
+
+ # dhcp options
+ Oipaddr: con 50;
+ Olease: con 51;
+ Ooverload: con 52;
+ Otype: con 53;
+ Oserverid: con 54;
+ Oparams: con 55;
+ Omessage: con 56;
+ Omaxmsg: con 57;
+ Orenewaltime: con 58;
+ Orebindingtime: con 59;
+ Ovendorclass: con 60;
+ Oclientid: con 61;
+ Otftpserver: con 66;
+ Obootfile: con 67;
+
+ Ovendor: con (1<<8);
+ OP9fs: con Ovendor|128; # plan 9 file server
+ OP9auth: con Ovendor|129; # plan 9 auth server
+
+ Infinite: con ~0; # lease
+};