diff --git a/client/dhclient.cat8 b/client/dhclient.cat8
index a9287f08..76f388e9 100644
--- a/client/dhclient.cat8
+++ b/client/dhclient.cat8
@@ -8,7 +8,9 @@ NNAAMMEE
        dhclient - Dynamic Host Configuration Protocol Client
 
 SSYYNNOOPPSSIISS
-       ddhhcclliieenntt [ --pp _p_o_r_t ] [ --dd ] [ _i_f_0 [ _._._._i_f_N ] ]
+       ddhhcclliieenntt  [  --pp  _p_o_r_t  ] [ --dd ] [ --DD ] [ --qq ] [ --cc ] [ --llff
+       _l_e_a_s_e_-_f_i_l_e ] [ --ppff _p_i_d_-_f_i_l_e ] [ --ccff  _c_o_n_f_i_g_-_f_i_l_e  ]  [  --ss
+       server ] [ _i_f_0 [ _._._._i_f_N ] ]
 
 DDEESSCCRRIIPPTTIIOONN
        The  Internet  Software  Consortium DHCP Client, dhclient,
@@ -56,8 +58,6 @@ OOPPEERRAATTIIOONN
        leases from the dhclient.leases file which  have  not  yet
        expired  are  tested,  and  if  they  are determined to be
        valid, they are used until either they expire or the  DHCP
-       server becomes available.
-
 
 
 
@@ -70,6 +70,8 @@ OOPPEERRAATTIIOONN
 dhclient(8)                                           dhclient(8)
 
 
+       server becomes available.
+
        A mobile host which may sometimes need to access a network
        on which no DHCP server exists may  be  preloaded  with  a
        lease  for  a  fixed  address  on that network.   When all
@@ -88,22 +90,75 @@ CCOOMMMMAANNDD LLIINNEE
        The  names  of the network interfaces that dhclient should
        attempt to configure may be specified on the command line.
        If  no  interface  names are specified on the command line
-       dhclient will identify all network interfaces, elimininat­
-       ing  non-broadcast  interfaces if possible, and attempt to
-       configure each interface.
+       dhclient will normally identify  all  network  interfaces,
+       elimininating  non-broadcast  interfaces  if possible, and
+       attempt to configure each interface.
 
-       If dhclient should listen and transmit  on  a  port  other
-       than  the  standard  (port  68), the --pp flag may used.  It
-       should be followed by the udp port  number  that  dhclient
+       It is also possible to specify interfaces by name  in  the
+       ddhhcclliieenntt..ccoonnff((55))  file.    If  interfaces are specified in
+       this way, then the client will only  configure  interfaces
+       that  are either specified in the configuration file or on
+       the command line, and will ignore all other interfaces.
+
+       If the DHCP client should listen and transmit  on  a  port
+       other  than  the standard (port 68), the --pp flag may used.
+       It should be followed by the udp port number that dhclient
        should use.  This is mostly useful for debugging purposes.
+       If a different port is specified for the client to  listen
+       on  and  transmit on, the client will also use a different
+       destination port - one greater than the specified destina­
+       tion port.
 
-       Dhclient will normally run in the foreground until it  has
-       configured  an  interface, and then will revert to running
-       in the background.  To run force dhclient to always run as
-       a  foreground  process,  the  --dd flag should be specified.
-       This is useful when running dhclient under a debugger,  or
-       when running it out of inittab on System V systems.
+       The  DHCP  client normally transmits any protocol messages
+       it   sends   before   acquiring   an   IP   address    to,
+       255.255.255.255,  the  IP limited broadcast address.   For
+       debugging purposes, it may be useful to  have  the  server
+       transmit  these messages to some other address.   This can
+       be specified with the --ss flag, followed by the IP  address
+       or domain name of the destination.
 
+       The  DHCP client will normally run in the foreground until
+       it has configured an interface, and then  will  revert  to
+       running  in  the  background.    To  run force dhclient to
+       always run as a foreground process, the --dd flag should  be
+       specified.  This is useful when running the client under a
+       debugger, or when running it out of inittab  on  System  V
+       systems.
+
+
+
+                                                                2
+
+
+
+
+
+dhclient(8)                                           dhclient(8)
+
+
+       The  client  writes  a  temporary shell script whenever it
+       invokes dhclient-script.   This script is normally deleted
+       after  the  client runs, but it can be helpful when debug­
+       ging the client script to see what the client wrote.   The
+       client  can  be  configured not to delete these scripts by
+       specifying the --DD flag.
+
+       The client normally prints a startup message and  displays
+       the  protocol  sequence  to  the standard error descriptor
+       until it has acquired an address, and then only logs  mes­
+       sages  using  the  ssyysslloogg ((33)) facility.   The --qq flag pre­
+       vents any messages other than errors from being printed to
+       the standard error descriptor.
+
+       The  DHCP  client normally gets its configuration informa­
+       tion from  //eettcc//ddhhcclliieenntt..ccoonnff,,  its  lease  database  from
+       //vvaarr//ddbb//ddhhcclliieenntt..lleeaasseess  and  stores  its  process ID in a
+       file called //vvaarr//rruunn//ddhhcclliieenntt..ppiidd..  To  specify  different
+       names  and/or  locations for these files, use the --ccff,, --llff
+       and --ppff flags, respectively, followed by the name  of  the
+       file.    This  can be particularly useful if, for example,
+       //vvaarr//ddbb or //vvaarr//rruunn has not yet been mounted when the DHCP
+       client is started.
 
 CCOONNFFIIGGUURRAATTIIOONN
        The  syntax  of  the  dhclient.conf(8)  file  is discussed
@@ -124,18 +179,6 @@ AAUUTTHHOORR
        Software Consortium, see hhttttpp::////wwwwww..vviixx..ccoomm//iisscc..  To learn
        more about Vixie Enterprises, see hhttttpp::////wwwwww..vviixx..ccoomm..
 
-
-
-
-                                                                2
-
-
-
-
-
-dhclient(8)                                           dhclient(8)
-
-
        This client was substantially  modified  and  enhanced  by
        Elliot  Poger for use on Linux while he was working on the
        MosquitoNet project at Stanford.
@@ -147,6 +190,18 @@ dhclient(8)                                           dhclient(8)
        server uses.   Much system-specific configuration code was
        moved  into  a  shell  script  so that as support for more
        operating systems is added, it will not  be  necessary  to
+
+
+
+                                                                3
+
+
+
+
+
+dhclient(8)                                           dhclient(8)
+
+
        port  and  maintain  system-specific configuration code to
        these operating systems - instead, the  shell  script  can
        invoke the native tools to accomplish the same purpose.
@@ -193,6 +248,17 @@ dhclient(8)                                           dhclient(8)
 
 
 
-                                                                3
+
+
+
+
+
+
+
+
+
+
+
+                                                                4
 
 
diff --git a/common/dhcp-contrib.cat5 b/common/dhcp-contrib.cat5
new file mode 100644
index 00000000..9b81be98
--- /dev/null
+++ b/common/dhcp-contrib.cat5
@@ -0,0 +1,330 @@
+
+
+
+dhcp-contrib(5)                                   dhcp-contrib(5)
+
+
+NNAAMMEE
+       Contributing to the Internet Software Consortium DHCP Dis­
+       tribution
+
+EEXXHHOORRTTAATTIIOONN
+       The Internet Software  Consortium  DHCP  Distribution  has
+       historically  been  funded through the donation of various
+       charitable and non-charitable organizations, as well as by
+       individual contributions.  To some degree, support for the
+       distribution has been done on a volunteer  basis,  but  by
+       and  large  the  reason that you have this distribution in
+       your hands right now is because people like you have  pro­
+       vided funding for it.
+
+       We would like to encourage you to continue to provide such
+       support, or to begin providing it if you have not  in  the
+       past.    You  are in no way obliged to provide us with any
+       support at all, and this message is not intended to guilt-
+       trip  you  about providing support.   If you choose not to
+       provide support, for whatever reason, you aren't going  to
+       be  treated  differently  on  the  mailing lists, and your
+       requests for features aren't going to be  prioritized  any
+       differently.    If you want to be treated differently, you
+       can buy a formal support contract,  of  course,  but  this
+       document is about contributions, not support contracts.
+
+FFRREEQQUUEENNTTLLYY AASSKKEEDD QQUUEESSTTIIOONNSS
+       Q: So if I won't be treated differently, why contribute?
+
+       A:  The  obvious  answer  is  self-interest.   If you con­
+       tribute, it means that the author will have time  to  work
+       on  stuff that's not of the utmost high priority.   People
+       are constantly asking for things that we would really like
+       to provide, but for which we have no time.   By contribut­
+       ing, you are literally giving us time to do these  things.
+       The  amount  of  time  varies  with  the  contribution, of
+       course, but if everybody contributes a little bit, it  can
+       add up to a lot.
+
+       Q: But everybody isn't required to contribute.   If I con­
+       tribute and nobody else does, doesn't that make me kind of
+       a sucker?
+
+       A:  Obviously, we don't think so, but think about this: if
+       you contribute, then we can point out to others that we've
+       received  contributions,  and  this  will make the idea of
+       contributing seem more legitimate to them, making it  more
+       likely  that  they will contribute.   So your contribution
+       has more value than just the money you provide -  it  also
+       helps us to raise funds from others.
+
+       Q: If I contribute, I want a say in what work gets done.
+
+       A:  We  do  sell  support  contracts,  and we will also do
+
+
+
+                                                                1
+
+
+
+
+
+dhcp-contrib(5)                                   dhcp-contrib(5)
+
+
+       development work on specification if we feel it  is  rele­
+       vant  (although  you  won't  get to own it).   This can be
+       quite expensive, though - much more than even the  maximum
+       we'd  expect  you to donate.   So no, contributing doesn't
+       buy you a say in what work gets done.
+
+       Q: I work for a charity that feeds the homeless.    Should
+       my charity contribute?
+
+       A: Absolutely not!   The idea here is not to take food out
+       of the mouths of poor people.   If donating  to  us  would
+       mean that somebody in need that you could have helped will
+       go without help, keep the money.  It's not worth it to us.
+       This  goes  for  providing shelter, psychiatric aid, legal
+       assistance, and any other similar charity work.
+
+       Q: Cool!   I work for a university, helping  students  who
+       are  in  need of an education, so we shouldn't contribute,
+       right?
+
+       A: No, that's not quite what we mean.  Sure, if  you  work
+       for  an organization that provides free education to needy
+       people, at whatever level, then we'd rather you  did  that
+       than  support us.  But if your university has a big budget
+       for running the computer center, can afford to plant  nice
+       gardens  and  maintain  nice  lawns, and maybe has all its
+       dorms wired for ethernet, then even if you  qualify  as  a
+       nonprofit  under federal law (or the law in your own coun­
+       try) you should still contribute.  DHCP is just as much  a
+       part of your infrastructure as your campus wiring.
+
+       Q:  This  software came on a CD that I bought.   Haven't I
+       already contributed?
+
+       A: If you're seeing this notice,  and  you  didn't  see  a
+       notice  saying  that  the people who sold you your CD con­
+       tributed to us, then no, you haven't already  contributed.
+       In  general,  we encourage people to include this software
+       on their distributions if they feel it  would  be  useful,
+       and  we  do not require them to contribute in exchange for
+       that privilege.
+
+       Q: I've contributed to the development of this software by
+       submitting  bug  reports  and patches.   Why should I also
+       contribute money?
+
+       A: When you contributed these bug reports and patches, was
+       there  zero effort involved on our part in integrating the
+       patches or figuring out what  was  wrong?   Probably  not.
+       Bug  reports and patches can be extremely valuable, and we
+       can't say that in no event do they qualify you to get  out
+       of contributing - after all, we're leaving that up to your
+       judgement anyway, aren't we?  But unless your contribution
+       was  pretty massive, and is actually in this distribution,
+
+
+
+                                                                2
+
+
+
+
+
+dhcp-contrib(5)                                   dhcp-contrib(5)
+
+
+       we aren't likely to agree with you about this.
+
+       Q: Software should be free.   You have no right to ask for
+       money to support this effort.
+
+       A:  You  are  entitled  to  that opinion, but please don't
+       raise it on the mailing list, as it will tend to get  peo­
+       ple  excited.  Please remember that while copying software
+       is generally a very cheap process,  creating  it  is  not.
+       The  amount of work that's gone into this software package
+       is quite significant, and there's plenty more work to  do.
+       If  you  happen  to  be  in  college,  working toward your
+       degree, and have no social life (and yes, I've been  there
+       and done that) then it can seem like there's no additional
+       cost to hacking on software - after all, it's  fun,  isn't
+       it?  While this is true, it is also true that you're a lot
+       better off with this software than  you  would  have  been
+       with the software I wrote in college.  Enough said?
+
+       Q: Can't I contribute work instead of software?
+
+       A:  We'd  like  to  encourage that to some extent, and are
+       indeed trying to bring some developers into the fold,  but
+       you  shouldn't  expect  that  your  willingness to do this
+       translates directly into an opportunity.  For example, you
+       may  want  very  much to work for [insert the name of your
+       favorite commercial Linux vendor  here],  but  unless  you
+       have  the appropriate skills, they like you, they're will­
+       ing to pay what you need, and they have work that's appro­
+       priate  to  your  skills,  you're  not  going to get hired
+       there.
+
+       Q: I don't contribute to the Free  Software  Foundation  -
+       why do you rate?
+
+       A:  You  should contribute to the Free Software Foundation
+       too!
+
+       Q: I don't contribute to [insert name of your  local  food
+       bank here].  Why do you rate?
+
+       A:  If  you  feel  bad about not contributing to the local
+       food bank, this is a very easy problem to  solve,  and  we
+       encourage you to do so.
+
+       Q: Once I've contributed once, am I done?
+
+       A:  We'd  like to encourage you to contribute once a year.
+       If you want, we can send you a reminder notice on the year
+       anniversary  of  your original contribution.  If you don't
+       specifically ask for this, we won't force it on  you.   No
+       salesperson  will  call.   No spam will be sent.  We defi­
+       nitely won't try to convince you that  it's  been  a  year
+       since you last contributed when it hasn't been a year yet.
+
+
+
+                                                                3
+
+
+
+
+
+dhcp-contrib(5)                                   dhcp-contrib(5)
+
+
+       Q: I don't have you in my budget this year.
+
+       A: Fine, put us in your budget for next year!
+
+       Q: It's really hard to do charitable contributions  at  my
+       organization.
+
+       A:  We'd  be  happy to sell you a product instead.  If you
+       choose to go down this route, what  we'l  sell  you  is  a
+       license  for some number of clients and a CD.  Just let us
+       know how many DHCP clients you have,  and  we'll  use  the
+       following  schedule  to figure out how much to invoice you
+       (shipping is included on orders of $100 or more).  Even if
+       you can do charitable contributions, you might want to use
+       this schedule as a guideline for figuring out how much  to
+       donate.   It  is  only  a  guideline,  of  course - if the
+       amounts listed feel like too much or too little to you, do
+       what seems appropriate.
+
+               $10k for businesses supporting >10k nodes
+               $5k for charities supporting >10k nodes
+               $2.5k for businesses supporting >1k nodes
+               $1k for charities supporting >1k nodes
+               $500 for businesses with >500 nodes
+               $250 for charities with >500 nodes
+               $200 for businesses with >150 nodes
+               $100 for charities with >150 nodes
+               $100 for businesses with <150 nodes
+               $50 for charities with <150 nodes
+               $25 for home use, client or server
+               $0.10 to $1 per client for businesses that are reselling the
+                       client, depending on volume.
+
+       Q:  Are  you  nuts?    I live in [insert your country name
+       here] and the typical annual salary for  a  programmer  is
+       less than what you're asking me to contribute!
+
+       A:  We  leave  the  choice of how much to contribute up to
+       you.   Really.  We aren't kidding.
+
+       Q: Can I contribute with my credit card?
+
+       A: Yes.   The details haven't  been  ironed  out  at  this
+       writing,   but   if   you   send  mail  to  dhcp-contribu­
+       tions@isc.org, we'll work it out.   By the time  you  read
+       this,  we may have a web interface set up - if so, it will
+       be linked in at http://www.isc.org/dhcp-contrib.html.
+
+SSEEEE AALLSSOO
+       dhcpd.conf(5),     dhcpd.leases(5),      dhclient.conf(5),
+       dhcpd(8), dhclient(8), RFC2132, RFC2131.
+
+AAUUTTHHOORR
+       The  Internet  Software  Consortium  DHCP Distribution was
+
+
+
+                                                                4
+
+
+
+
+
+dhcp-contrib(5)                                   dhcp-contrib(5)
+
+
+       written by Ted Lemon  <mellon@isc.org>  under  a  contract
+       with  Vixie  Labs.   Funding for this project was provided
+       through the  Internet  Software  Consortium.   Information
+       about  the  Internet  Software  Consortium can be found at
+       hhttttpp::////wwwwww..iisscc..oorrgg//iisscc..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                                                                5
+
+
diff --git a/common/dhcp-eval.cat5 b/common/dhcp-eval.cat5
new file mode 100644
index 00000000..70ea29b4
--- /dev/null
+++ b/common/dhcp-eval.cat5
@@ -0,0 +1,396 @@
+
+
+
+dhcpd-options(5)                                 dhcpd-options(5)
+
+
+NNAAMMEE
+       dhcp-conditionals - ISC DHCP conditional evaluation
+
+DDEESSCCRRIIPPTTIIOONN
+       The  Internet  Software  Consortium DHCP client and server
+       both provide the ability to perform  conditional  behavior
+       depending  on  the contents of packets they receive.   The
+       syntax for specifying this conditional behaviour is  docu­
+       mented here.
+
+RREEFFEERREENNCCEE:: CCOONNDDIITTIIOONNAALL BBEEHHAAVVIIOOUURR
+       Conditional  behaviour is specified using the if statement
+       and the else or elsif statements.   A  conditional  state­
+       ment  can  appear anywhere that a regular statement (e.g.,
+       an option statement) can appear, and can  enclose  one  or
+       more such statements.   A typical conditional statement in
+       a server might be:
+
+       if option dhcp-user-class = "accounting" {
+         max-lease-time 17600;
+         option domain-name "accounting.example.org";
+         option domain-name-servers ns1.accounting.example.org,
+                           ns2.accounting.example.org;
+       } elsif option dhcp-user-class = "sales" {
+         max-lease-time 17600;
+         option domain-name "sales.example.org";
+         option domain-name-servers ns1.sales.example.org,
+                           ns2.sales.example.org;
+       } elsif option dhcp-user-class = "engineering" {
+         max-lease-time 17600;
+         option domain-name "engineering.example.org";
+         option domain-name-servers ns1.engineering.example.org,
+                           ns2.engineering.example.org;
+       } else {
+         max-lease-time 600;
+         option domain-name "misc.example.org";
+         option domain-name-servers ns1.misc.example.org,
+                           ns2.misc.example.org;
+       }
+
+       On the client side, an example of  conditional  evaluation
+       might be:
+
+       # example.org filters DNS at its firewall, so we have to use their DNS
+       # servers when we connect to their network.   If we are not at
+       # example.org, prefer our own DNS server.
+       if not option domain-name = "example.org" {
+         prepend domain-name-servers 127.0.0.1;
+       }
+
+       The iiff statement and the eellssiiff continuation statement both
+       take boolean expressions as their  arguments.    That  is,
+       they  take  expressions  that,  when  evaluated, produce a
+       boolean result.   If the  expression  evaluates  to  true,
+
+
+
+                                                                1
+
+
+
+
+
+dhcpd-options(5)                                 dhcpd-options(5)
+
+
+       then  the  statements  enclosed in braces following the iiff
+       statement are executed, and all subsequent eellssiiff and  eellssee
+       clauses  are  skipped.    Otherwise, each subsequent eellssiiff
+       clause's expression is checked, until an elsif  clause  is
+       encountered  whose  test  evaluates  to  true.   If such a
+       clause is found, the statements in braces following it are
+       executed,  and  then any subsequent eellssiiff and eellssee clauses
+       are skipped.   If all the iiff and eellssiiff clauses are checked
+       but none of their expressions evaluate true, then if there
+       is an eellssee clause, the statements enclosed in braces  fol­
+       lowing  the eellssee are evaluated.   Boolean expressions that
+       evaluate to null are treated as false in conditionals.
+
+BBOOOOLLEEAANN EEXXPPRREESSSSIIOONNSS
+       The following is the current list of  boolean  expressions
+       that are supported by the DHCP distribution.
+
+       cchheecckk _c_l_a_s_s_-_n_a_m_e
+
+          The  check  operator returns a true value if the packet
+          being considered comes from a client  that  falls  into
+          the  specified class.  _C_l_a_s_s_-_n_a_m_e must be a string that
+          corresponds to the name of a  defined  class.   Classes
+          are only supported in the DHCP server.
+
+       _d_a_t_a_-_e_x_p_r_e_s_s_i_o_n_-_1 == _d_a_t_a_-_e_x_p_r_e_s_s_i_o_n_-_2
+
+          The  == operator compares the values of two data expres­
+          sions, returning true if they are the  same,  false  if
+          they  are  not.    If  either the left-hand side or the
+          right-hand side are null, the result is also null.
+
+       _b_o_o_l_e_a_n_-_e_x_p_r_e_s_s_i_o_n_-_1 aanndd _b_o_o_l_e_a_n_-_e_x_p_r_e_s_s_i_o_n_-_2
+
+          The aanndd operator  evaluates  to  true  if  the  boolean
+          expression  on  the  left-hand  side  and  the  boolean
+          expression on the  right-hand  side  both  evaluate  to
+          true.  Otherwise, it evaluates to false.  If either the
+          expression on the left-hand side or the  expression  on
+          the right-hand side are null, the result is null.
+
+       _b_o_o_l_e_a_n_-_e_x_p_r_e_s_s_i_o_n_-_1 oorr _b_o_o_l_e_a_n_-_e_x_p_r_e_s_s_i_o_n_-_2
+
+          The oorr operator evaluates to true if either the boolean
+          expression on the left-hand side or the boolean expres­
+          sion  on  the right-hand side evaluate to true.  Other­
+          wise, it evaluates to false.  If either the  expression
+          on  the  left-hand side or the expression on the right-
+          hand side are null, the result is null.
+
+       nnoott _b_o_o_l_e_a_n_-_e_x_p_r_e_s_s_i_o_n
+
+          The nnoott operator evaluates to true  if  _b_o_o_l_e_a_n_-_e_x_p_r_e_s_­
+          _s_i_o_n  evaluates to false, and returns false if _b_o_o_l_e_a_n_-
+
+
+
+                                                                2
+
+
+
+
+
+dhcpd-options(5)                                 dhcpd-options(5)
+
+
+          _e_x_p_r_e_s_s_i_o_n evaluates to true.    If  _b_o_o_l_e_a_n_-_e_x_p_r_e_s_s_i_o_n
+          evaluates to null, the result is also null.
+
+       eexxiissttss _o_p_t_i_o_n_-_n_a_m_e
+
+          The  eexxiissttss  expression  returns  true if the specified
+          option exists in the incoming DHCP  packet  being  pro­
+          cessed.
+       kknnoowwnn
+
+          The  kknnoowwnn  expression returns true if the client whose
+          request is currently being processed is  known  -  that
+          is, if there's a host declaration for it.
+
+DDAATTAA EEXXPPRREESSSSIIOONNSS
+       Several  of  the  boolean  expressions above depend on the
+       results of evaluating data expressions.   A list of  these
+       expressions is provided here.
+
+       ssuubbssttrriinngg ((_d_a_t_a_-_e_x_p_r,, _o_f_f_s_e_t,, _l_e_n_g_t_h))
+
+          The  ssuubbssttrriinngg  operator  evaluates the data expression
+          and returns the substring of the result of that evalua­
+          tion  that starts _o_f_f_s_e_t bytes from the beginning, con­
+          tinuing for _l_e_n_g_t_h bytes.  _O_f_f_s_e_t and _l_e_n_g_t_h  are  both
+          numeric  expressions.   If  _d_a_t_a_-_e_x_p_r, _o_f_f_s_e_t or _l_e_n_g_t_h
+          evaluate to null, then the result  is  also  null.   If
+          _o_f_f_s_e_t  is  greater  than or equal to the length of the
+          evaluated data,  then  a  zero-length  data  string  is
+          returned.   If  _l_e_n_g_t_h  _i_s  _g_r_e_a_t_e_r  _t_h_e_n _t_h_e _r_e_m_a_i_n_i_n_g
+          _l_e_n_g_t_h _o_f _t_h_e _e_v_a_l_u_a_t_e_d _d_a_t_a _a_f_t_e_r _o_f_f_s_e_t, then a  data
+          string  containing  all  data from _o_f_f_s_e_t to the end of
+          the evaluated data is returned.
+
+       ssuuffffiixx ((_d_a_t_a_-_e_x_p_r,, _l_e_n_g_t_h))
+
+          The ssuuffffiixx operator evaluates _d_a_t_a_-_e_x_p_r and returns the
+          last  _l_e_n_g_t_h  bytes  of  the result of that evaluation.
+          _L_e_n_g_t_h is a numeric expression.  If _d_a_t_a_-_e_x_p_r or _l_e_n_g_t_h
+          evaluate  to  null,  then  the result is also null.  If
+          _s_u_f_f_i_x evaluates to a number greater than the length of
+          the   evaluated   data,  then  the  evaluated  data  is
+          returned.
+
+       ooppttiioonn _o_p_t_i_o_n_-_n_a_m_e
+
+          The ooppttiioonn operator returns the contents of the  speci­
+          fied  option  in  the  packet  to  which  the server is
+          responding.
+
+       hhaarrddwwaarree
+
+          The hhaarrddwwaarree operator returns a data string whose first
+          element   is  the  _h_t_y_p_e  field  of  the  packet  being
+
+
+
+                                                                3
+
+
+
+
+
+dhcpd-options(5)                                 dhcpd-options(5)
+
+
+          considered, and whose  subsequent  elements  are  first
+          _h_l_e_n bytes of the _c_h_a_d_d_r field of the packet, as speci­
+          fied in RRFFCC 22113311 .  If there is no packet,  or  if  the
+          _h_l_e_n field is invalid, then the result is null.
+
+       ppaacckkeett ((_o_f_f_s_e_t,, _l_e_n_g_t_h))
+
+          The  ppaacckkeett  operator  returns the specified portion of
+          the packet being considered, or null in contexts  where
+          no  packet is being considered.   _O_f_f_s_e_t and _l_e_n_g_t_h are
+          applied to the contents  packet  as  in  the  ssuubbssttrriinngg
+          operator.
+
+       _s_t_r_i_n_g
+
+          A  string,  enclosed  in  quotes, may be specified as a
+          data expression,  and  returns  the  text  between  the
+          quotes, encoded in ASCII.
+
+       _c_o_l_o_n_-_s_e_p_e_r_a_t_e_d _h_e_x_a_d_e_c_i_m_a_l _l_i_s_t
+
+          A  list  of  hexadecimal  octet  values,  seperated  by
+          colons, may be specified as a data expression.
+
+       ccoonnccaatt ((_d_a_t_a_-_e_x_p_r_1,, _d_a_t_a_-_e_x_p_r_2))
+          The two expressions are evaluated, and  the  result  of
+          concatenating  the  results  of  the two evaluations is
+          returned.   If either subexpression evaluates to  null,
+          then  the  result is the value of the other expression.
+          If both expressions evaluate to null, then  the  result
+          is null.
+
+
+       rreevveerrssee ((_n_u_m_e_r_i_c_-_e_x_p_r_1,, _d_a_t_a_-_e_x_p_r_2))
+          The  two expressions are evaluated, and then the result
+          of evaluating the data expression is reversed in place,
+          using  hunks  of  the  size  specified  in  the numeric
+          expression.   For example, if  the  numeric  expression
+          evaluates to four, and the data expression evaluates to
+          twelve bytes of data, then the reverse expression  will
+          evaluate  to  twelve  bytes  of data, consisting of the
+          last four bytes of the the input data, followed by  the
+          middle four bytes, followed by the first four bytes.
+
+       lleeaasseedd--aaddddrreessss
+          In  any context where the client whose request is being
+          processed has been assigned an IP  address,  this  data
+          expression returns that IP address.
+
+       bbiinnaarryy--ttoo--aasscciiii ((_n_u_m_e_r_i_c_-_e_x_p_r_1,, _n_u_m_e_r_i_c_-_e_x_p_r_2,, _d_a_t_a_-_e_x_p_r_1,,
+       _d_a_t_a_-_e_x_p_r_2))
+          Converts the result of  evaluating  data-expr2  into  a
+          text  string  containing one number for each element of
+          the result of evaluating data-expr2.   Each  number  is
+
+
+
+                                                                4
+
+
+
+
+
+dhcpd-options(5)                                 dhcpd-options(5)
+
+
+          seperated  from  the  other by the result of evaluating
+          data-expr1.   The result  of  evaluating  numeric-expr1
+          specifies  the  base (2 through 16) into which the num­
+          bers should be converted.   The  result  of  evaluating
+          numeric-expr2  specifies the width in bits of each num­
+          ber, which may be either 8, 16 or 32.
+
+          As an example of the preceding three types  of  expres­
+          sions,  to  produce the name of a PTR record for the IP
+          address being assigned to a client, one could write the
+          following expression:
+
+               concat (binary-to-ascii (10, 8, ".",
+                                        reverse (1, leased-address)),
+                       ".in-addr.arpa.");
+
+
+       eennccooddee--iinntt ((_n_u_m_e_r_i_c_-_e_x_p_r,, _w_i_d_t_h))
+          Numeric-expr  is evaluated and encoded as a data string
+          of the specified width, in  network  byte  order  (most
+          significant  byte  first).   If  the numeric expression
+          evaluates to the null value, the result is also null.
+
+
+NNUUMMEERRIICC EEXXPPRREESSSSIIOONNSS
+       Numeric expressions are expressions that  evaluate  to  an
+       integer.   In general, the maximum size of such an integer
+       should not be assumed to be representable in fewer than 32
+       bits,  but the precision of such integers may be more than
+       32 bits.
+
+       eexxttrraacctt--iinntt ((_d_a_t_a_-_e_x_p_r,, _w_i_d_t_h))
+
+          The eexxttrraacctt--iinntt operator extracts an integer  value  in
+          network  byte  order  from the result of evaluating the
+          specified data expression.   Width is the width in bits
+          of  the  integer  to extract.  Currently, the only sup­
+          ported widths are 8, 16 and 32.   If the evaluation  of
+          the  data expression doesn't provide sufficient bits to
+          extract an integer of  the  specified  size,  the  null
+          value is returned.
+
+       _n_u_m_b_e_r
+
+          Any  number  between zero and the maximum representable
+          size may be specified as a numeric expression.
+
+SSEEEE AALLSSOO
+       dhcpd.conf(5),  dhcpd.leases(5),  dhclient.conf(5),  dhcp-
+       eval(5), dhcpd(8), dhclient(8), RFC2132, RFC2131.
+
+AAUUTTHHOORR
+       The  Internet  Software  Consortium  DHCP Distribution was
+       written by Ted Lemon  <mellon@isc.org>  under  a  contract
+
+
+
+                                                                5
+
+
+
+
+
+dhcpd-options(5)                                 dhcpd-options(5)
+
+
+       with  Vixie  Labs.   Funding for this project was provided
+       through the  Internet  Software  Consortium.   Information
+       about  the  Internet  Software  Consortium can be found at
+       hhttttpp::////wwwwww..iisscc..oorrgg//iisscc..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                                                                6
+
+
diff --git a/server/dhcpd.conf.cat5 b/server/dhcpd.conf.cat5
index a9def254..de1cbe16 100644
--- a/server/dhcpd.conf.cat5
+++ b/server/dhcpd.conf.cat5
@@ -552,7 +552,7 @@ dhcpd.conf(5)                                       dhcpd.conf(5)
        you can write a class declaration as follows:
        class "customer" {
          match if exists agent.circuit-id;
-         spawn with agent.circuit-id;
+         spawn with option agent.circuit-id;
          lease limit 4;
        }
 
@@ -1179,7 +1179,7 @@ dhcpd.conf(5)                                       dhcpd.conf(5)
        set in any scope, and will affect all clients  covered  by
        that scope.
 
-       TThhee _u_s_e_-_l_e_a_s_e_-_a_d_d_r_-_f_o_r_-_d_e_f_a_u_l_t_-_r_o_u_t_e ssttaatteemmeenntt
+       TThhee _a_l_w_a_y_s_-_b_r_o_a_d_c_a_s_t ssttaatteemmeenntt
 
 
 
@@ -1192,6 +1192,38 @@ dhcpd.conf(5)                                       dhcpd.conf(5)
 dhcpd.conf(5)                                       dhcpd.conf(5)
 
 
+        aallwwaayyss--bbrrooaaddccaasstt _f_l_a_g;;
+
+       The  DHCP  and BOOTP protocols both require DHCP and BOOTP
+       clients to set the broadcast bit in the flags field of the
+       BOOTP  message header.  Unfortunately, some DHCP and BOOTP
+       clients do not do this,  and  therefore  may  not  receive
+       responses  from  the DHCP server.   The DHCP server can be
+       made to always broadcast its responses to clients by  set­
+       ting  this flag to 'on' for the relevant scope.   To avoid
+       creating excess broadcast traffic on your network, we rec­
+       ommend  that you restrict the use of this option to as few
+       clients as possible.   For  example,  the  Microsoft  DHCP
+       client is known not to have this problem, as are the Open­
+       Transport and ISC DHCP clients.
+
+       TThhee _o_n_e_-_l_e_a_s_e_-_p_e_r_-_c_l_i_e_n_t ssttaatteemmeenntt
+
+        oonnee--lleeaassee--ppeerr--cclliieenntt _f_l_a_g;;
+
+       If this flag is enabled, whenever a client sends a DHCPRE­
+       QUEST  for  a  particular lease, the server will automati­
+       cally free any other leases the client holds.   This  pre­
+       sumes  that  when  the  client sends a DHCPREQUEST, it has
+       forgotten any lease not mentioned  in  the  DHCPREQUEST  -
+       i.e.,  the  client has only a single network interface _a_n_d
+       it does not remember leases it's holding  on  networks  to
+       which  it  is  not  currently attached.   Neither of these
+       assumptions are guaranteed or provable, so we urge caution
+       in the use of this statement.
+
+       TThhee _u_s_e_-_l_e_a_s_e_-_a_d_d_r_-_f_o_r_-_d_e_f_a_u_l_t_-_r_o_u_t_e ssttaatteemmeenntt
+
         uussee--lleeaassee--aaddddrr--ffoorr--ddeeffaauulltt--rroouuttee _f_l_a_g;;
 
        If  the _u_s_e_-_l_e_a_s_e_-_a_d_d_r_-_f_o_r_-_d_e_f_a_u_l_t_-_r_o_u_t_e parameter is true
@@ -1214,6 +1246,18 @@ dhcpd.conf(5)                                       dhcpd.conf(5)
 
        The  use  of the server-identifier statement is not recom­
        mended - the only reason to use it is  to  force  a  value
+
+
+
+                                                               19
+
+
+
+
+
+dhcpd.conf(5)                                       dhcpd.conf(5)
+
+
        other than the default value to be sent on occasions where
        the default value would be incorrect.   The default  value
        is  the first IP address associated with the physical net­
@@ -1246,18 +1290,6 @@ VVEENNDDOORR EENNCCAAPPSSUULLAATTEEDD OOPPTTIIOONNSS
        You can send this option to clients in one of two  ways  -
        either  define the data directly, using a text string or a
        colon-seperated list of hexadecimal values, or  define  an
-
-
-
-                                                               19
-
-
-
-
-
-dhcpd.conf(5)                                       dhcpd.conf(5)
-
-
        option  space,  define  some options in that option space,
        provide values for them,  and  specify  that  that  option
        space  should be used to generate the vveennddoorr--eennccaappssuullaatteedd--
@@ -1281,6 +1313,17 @@ dhcpd.conf(5)                                       dhcpd.conf(5)
             option SUNW.server-name code 3 = text;
             option SUNW.root-path code 4 = text;
 
+
+
+                                                               20
+
+
+
+
+
+dhcpd.conf(5)                                       dhcpd.conf(5)
+
+
        Once  you  have  defined an option space and some options,
        you can  set  up  scopes  that  define  values  for  those
        options,  and you can say when to use them.   For example,
@@ -1312,18 +1355,6 @@ dhcpd.conf(5)                                       dhcpd.conf(5)
        to  a  particular  class in the local scope.   The vveennddoorr--
        ooppttiioonn--ssppaaccee declaration indicates that in that scope, the
        vveennddoorr--eennccaappssuullaatteedd--ooppttiioonnss  option  should be constructed
-
-
-
-                                                               20
-
-
-
-
-
-dhcpd.conf(5)                                       dhcpd.conf(5)
-
-
        using the values of all the options  in  the  SUNW  option
        space.
 
@@ -1350,37 +1381,6 @@ AAUUTTHHOORR
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
                                                                21
 
 
