diff options
Diffstat (limited to 'module/dhcp.m')
| -rw-r--r-- | module/dhcp.m | 84 |
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 +}; |
