rpms/dhcpv6/devel dhcpv6-0.10-man.patch, NONE, 1.1 dhcpv6-0.10-relay.patch, NONE, 1.1 dhcpv6-0.10-libdhcp6client.patch, 1.8, 1.9 dhcpv6-0.10-redhat.patch, 1.4, 1.5 dhcpv6.spec, 1.49, 1.50 dhcpv6-0.10-lsb.patch, 1.2, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Fri Feb 9 03:53:57 UTC 2007


Author: dcantrel

Update of /cvs/dist/rpms/dhcpv6/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv24793

Modified Files:
	dhcpv6-0.10-libdhcp6client.patch dhcpv6-0.10-redhat.patch 
	dhcpv6.spec 
Added Files:
	dhcpv6-0.10-man.patch dhcpv6-0.10-relay.patch 
Removed Files:
	dhcpv6-0.10-lsb.patch 
Log Message:
* Thu Feb 08 2007 David Cantrell <dcantrell at redhat.com> - 0.10-38
- Fix up libdhcp6client patch so it doesn't copy the source then patch it
- Revert LOG_INFO changes back to LOG_DEBUG
- Remove the NetBSD strlcat() and strlcpy() calls and use glibc functions
- Move non-libdhcp6client patches to the main bugfix patch
- Remove the extra noise sent to the logging function
- Correct warnings so it compiles with -Werror
- Remove local htonl.h header, just use the /usr/include definitions
- Include <netinet/in.h> and remove inclusion of <linux/ipv6.h> and "htonl.h"
- Move dhcp6r source to its own patch file
- Put man page patches in to a single patch file
- Remove periods from the end of package summary lines (package review)
- Use preferred BuildRoot (package review)
- Only export the symbols we want in libdhcp6client (#216187)
- Keep flex-generated files for the debuginfo package


dhcpv6-0.10-man.patch:
 dhcp6c.conf.5 |  420 +++++++++++++++++++-----------------
 dhcp6s.conf.5 |  660 +++++++++++++++++++++++++++++-----------------------------
 2 files changed, 557 insertions(+), 523 deletions(-)

--- NEW FILE dhcpv6-0.10-man.patch ---
--- dhcp-0.10/dhcp6c.conf.5.man	2003-03-28 15:16:36.000000000 -0500
+++ dhcp-0.10/dhcp6c.conf.5	2007-02-08 15:44:07.000000000 -0500
@@ -1,202 +1,218 @@
-.\" $Id: dhcp6c.conf.5,v 1.2 2003/03/28 20:16:36 shirleyma Exp $
-.\"
-.\" Copyright (C) International Business Machines  Corp., 2003
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the project nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.TH dhcp6c.conf 5 "17 March 2003" "dhcp6c.conf" "Linux System Manager's Manual"
-
-.SH NAME
-dhcp6c.conf \- configuration file of the DHCPv6 client daemon, dhcp6c
-
-.SH DESCRIPTION
-.B dhcp6c.conf
-is a configuration file for dhcp6c (DHCPv6 client).
-
-dhcp6c is configured by the configuration information (such as rapid-commit,
-requesting temp-address, or prefix-delegation) in this file.
 
-dhcp6c.conf is an ASCII text file and lines that start with # are comments.
-
-.PP
-.BI STATEMENTS
-.PP
-.nf
-.B interface\ <interface\ name>
-.B {
-.B \t[declarations]
-.B };
-.fi
-Write configurations for this interface in this statement.
-In [declarations], options can be specified.
-
-.PP
-.BI DECLARATIONS
-.PP
-.nf
-.B send\ [dhcpoptions];
-.fi
-With this declaration, dhcp6c sends specified options.
-Currently rapid\-commit is defined.
-
-.nf
-\fIsend rapid\-commit;\fR
-.fi
-This declaration enables dhcp6c to request the dhcp6s server to perform a
-Rapid Commit.
-
-.nf
-.B request\ [dhcpoptions];
-.fi
-This declaration enables dhcp6c to request specified options.
-Currently temp\-address, domain\-name\-servers, and prefix\-delegation
-are defined.
-
-.nf
-\fIrequest domain\-name\-servers;\fR
-.fi
-The DHCPv6 mechanism provides a way to obtain configuration information
-such as a list of available DNS servers or NTP servers. This declaration
-enables dhcp6c to request a DNS server address from the DHCPv6 server. 
-
-.nf
-\fIrequest prefix\-delegation;\fR
-.fi
-This declaration enables dhcp6c to request a Prefix Delegation to the 
-DHCPv6 server. dhcp6c gets a prefix assignment from the DHCPv6 server.
-
-.nf
-\fIrequest temp\-address;\fR
-.fi
-This declaration enables dhcp6c to request temporary addresses.
-dhcp6c requests Non-temporary Addresses as default. This option makes
-dhcp6c request Temporary Addresses.
-
-.nf
-.B information-only;
-.fi
-This declaration enables dhcp6c to request host configuration information
-from the DHCPv6 server. If dhcp6c doesn't need to be assigned any addresses,
-this option should be specified.
-
-.nf
-.B address\ {
-.B \t[<ipv6\ address>/<prefix\ length>];
-.B \t[prefer-life-time\ <preferred\-lifetime>];
-.B \t[valid-life-time\ <valid\-lifetime>];
-.B };
-.fi
-This declaration defines the dhcp6c client preferred IPv6 address,
-the preferred lifetime of the address, and the valid lifetime for this
-interface.
-
-.nf
-.B prefix\ {
-.B \t[<ipv6\ prefix>/<prefix\ length>];
-.B \t[prefer-life-time\ <preferred\-lifetime>];
-.B \t[valid-life-time\ <valid\-lifetime>];
-.B };
-.fi
-This declaration defines the dhcp6c client acting as a requesting
-router for the preferred prefix, the prefix length, and the prefix's
-preferred lifetime, and valid lifetime for this interface.
-
-.nf
-.B prefer-life-time\ <preferred\-lifetime>;
-.fi
-This declaration sets the preferred lifetime (in seconds) of the address
-or prefix. This declaration is valid only in address or prefix declarations.
-
-.nf
-.B valid-life-time\ <valid\-lifetime>;
-.fi
-This declaration sets the valid lifetime (in seconds) of the address or
-prefix.
-This declaration is valid only in address or prefix declarations.
-
-.nf
-.B renew-time\ <renew-time>;
-.fi
-This declaration specifies the Renew Time (in seconds) for this Identity
-Association (IA). Renew Time is a T1 value in an IA option. dhcp6c sets the
-Renew Time in IA options to the specified value.
-
-.nf
-.B rebind-time\ <rebind-time>;
-.fi
-This declaration specifies the Rebind Time (in seconds) for this IA. Rebind
-Time is T2 value in an IA option. dhcp6c sets the Rebind Time in IA options
-to the specified value.
-
-.PP
-.BI DHCPOPTIONS
-.PP
-.nf
-.B rapid\-commit
-.fi
-If this option is used in a "send [dhcpoptions];" declaration, 
-dhcp6c sends DHCPv6 messages with a Rapid Commit option.
-
-.nf
-.B domain\-name\-servers
-.fi
-If this option is used in a "request [dhcpoptions];" declaration, 
-dhcp6c requests the DNS server address via the DHCPv6 mechanism.
-
-.nf
-.B prefix\-delegation
-.fi
-If this option is used in a "request [dhcpoptions];" declaration, 
-dhcp6c requests a Prefix Delegation to the DHCPv6 servers.
-
-.SH EXAMPLES
-.PP
-This is a sample of the dhcp6c.conf file.
-.nf
-.B interface eth0 {
-.B \tsend rapid-commit;
-.B \trequest prefix-delegation;
-.B \trequest domain-name-servers;
-.B \trequest temp-address;
-.B \tiaid 11111;
-.B \taddress {
-.B \t\t3ffe:10::10/64;
-.B \t\tprefer-life-time 6000;
-.B \t\tvalid-life-time 8000;
-.B \t};
-.B \trenew-time 11000;
-.B \trebind-time 21000;
-.B };
-.fi
-
-.SH SEE ALSO
-Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IPv6 Prefix Options
-for DHCPv6, dhcp6c(5)
-
-.SH AUTHORS
-.LP
-Kazuo Hiekata <hiekata at yamato.ibm.com>
-
-
+.\" $Id: dhcp6c.conf.5,v 1.2 2003/03/28 20:16:36 shirleyma Exp $
+.\"
+.\" Copyright (C) International Business Machines  Corp., 2003
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the project nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.TH dhcp6c.conf 5 "17 March 2003" "dhcp6c.conf" "Linux System Manager's Manual"
+
+.SH NAME
+dhcp6c.conf \- configuration file of the DHCPv6 client daemon, dhcp6c
+
+.SH DESCRIPTION
+.B dhcp6c.conf
+is a configuration file for dhcp6c (DHCPv6 client).
+
+dhcp6c is configured by the configuration information (such as rapid-commit,
+requesting temp-address, or prefix-delegation) in this file. 
+dhcp6c.conf is an ASCII text file and lines that start with # are comments.
+
+.PP
+.BI STATEMENTS
+.PP
+.nf
+.B interface\ <interface\ name>
+.B {
+.B \t[declarations]
+.B };
+.fi
+Write configurations for this interface in this statement.
+In [declarations], options can be specified.
+
+.PP
+.BI DECLARATIONS
+.PP
+.nf
+.B send\ [dhcpoptions];
+.fi
+With this declaration, dhcp6c sends specified options.
+Currently rapid\-commit is defined.
+
+.nf
+\fIsend rapid\-commit;\fR
+.fi
+This declaration enables dhcp6c to request the dhcp6s server to perform a
+Rapid Commit.
+
+.nf
+.B request\ [dhcpoptions];
+.fi
+This declaration enables dhcp6c to request specified options.
+Currently temp\-address, domain\-name\-servers, and prefix\-delegation
+are defined.
+
+.nf
+\fIrequest domain\-name\-servers;\fR
+.fi
+The DHCPv6 mechanism provides a way to obtain configuration information
+such as a list of available DNS servers or NTP servers. This declaration
+enables dhcp6c to request a DNS server address from the DHCPv6 server. 
+
+.nf
+\fIrequest prefix\-delegation;\fR
+.fi
+This declaration enables dhcp6c to request a Prefix Delegation to the 
+DHCPv6 server. dhcp6c gets a prefix assignment from the DHCPv6 server.
+
+.nf
+\fIrequest temp\-address;\fR
+.fi
+This declaration enables dhcp6c to request temporary addresses.
+dhcp6c requests Non-temporary Addresses as default. This option makes
+dhcp6c request Temporary Addresses.
+
+.nf
+.B information-only;
+.fi
+This declaration enables dhcp6c to request host configuration information
+from the DHCPv6 server. If dhcp6c doesn't need to be assigned any addresses,
+this option should be specified.
+
+.nf
+.B address\ {
+.B \t[<ipv6\ address>/<prefix\ length>];
+.B \t[prefer-life-time\ <preferred\-lifetime>];
+.B \t[valid-life-time\ <valid\-lifetime>];
+.B };
+.fi
+This declaration defines the dhcp6c client preferred IPv6 address,
+the preferred lifetime of the address, and the valid lifetime for this
+interface.
+
+.nf
+.B prefix\ {
+.B \t[<ipv6\ prefix>/<prefix\ length>];
+.B \t[prefer-life-time\ <preferred\-lifetime>];
+.B \t[valid-life-time\ <valid\-lifetime>];
+.B };
+.fi
+This declaration defines the dhcp6c client acting as a requesting
+router for the preferred prefix, the prefix length, and the prefix's
+preferred lifetime, and valid lifetime for this interface.
+
+.nf
+.B prefer-life-time\ <preferred\-lifetime>;
+.fi
+This declaration sets the preferred lifetime (in seconds) of the address
+or prefix. This declaration is valid only in address or prefix declarations.
+
+.nf
+.B valid-life-time\ <valid\-lifetime>;
+.fi
+This declaration sets the valid lifetime (in seconds) of the address or
+prefix.
+This declaration is valid only in address or prefix declarations.
+
+.nf
+.B renew-time\ <renew-time>;
+.fi
+This declaration specifies the Renew Time (in seconds) for this Identity
+Association (IA). Renew Time is a T1 value in an IA option. dhcp6c sets the
+Renew Time in IA options to the specified value.
+
+.nf
+.B rebind-time\ <rebind-time>;
+.fi
+This declaration specifies the Rebind Time (in seconds) for this IA. Rebind
+Time is T2 value in an IA option. dhcp6c sets the Rebind Time in IA options
+to the specified value.
+
+.PP
+.BI DHCPOPTIONS
+.PP
+.nf
+.B rapid\-commit
+.fi
+If this option is used in a "send [dhcpoptions];" declaration, 
+dhcp6c sends DHCPv6 messages with a Rapid Commit option.
+
+.nf
+.B domain\-name\-servers
+.fi
+If this option is used in a "request [dhcpoptions];" declaration, 
+dhcp6c requests the DNS server address via the DHCPv6 mechanism.
+
+.nf
+.B prefix\-delegation
+.fi
+If this option is used in a "request [dhcpoptions];" declaration, 
+dhcp6c requests a Prefix Delegation to the DHCPv6 servers.
+
+.nf
+.B prefix\-delegation\-interface <interface name>
+Specifies the name of the interface definition in radvd.conf 
+that dhcp6c will write the 'prefix' declaration for. By default,
+dhcp6c will write a radvd.conf prefix declaration for the interface
+on which it receives the prefix delegation lease.
+
+.nf
+\fIuse-ra-prefix;\fR
+.fi
+This declaration tells the client not to request the address prefix configured
+in the server's address or range statements. With this option, client address
+prefixes can be set only by router advertisements, and the prefix configured in
+server address or range statements will be ignored. This is a Red Hat extension;
+previously, the only way to set client address prefixes was by router advertisement.
+
+.SH EXAMPLES
+.PP
+This is a sample of the dhcp6c.conf file.
+.nf
+.B interface eth0 {
+.B \tsend rapid-commit;
+.B \trequest prefix-delegation;
+.B \trequest domain-name-servers;
+.B \trequest temp-address;
+.B \tiaid 11111;
+.B \taddress {
+.B \t\t3ffe:10::10/64;
+.B \t\tprefer-life-time 6000;
+.B \t\tvalid-life-time 8000;
+.B \t};
+.B \trenew-time 11000;
+.B \trebind-time 21000;
+.B };
+.fi
+
+.SH SEE ALSO
+Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IPv6 Prefix Options
+for DHCPv6, dhcp6c(5)
+
+.SH AUTHORS
+.LP
+Kazuo Hiekata <hiekata at yamato.ibm.com>
+
+
--- dhcp-0.10/dhcp6s.conf.5.man	2003-05-28 18:56:23.000000000 -0400
+++ dhcp-0.10/dhcp6s.conf.5	2007-02-08 15:44:07.000000000 -0500
@@ -1,322 +1,340 @@
-.\" $Id: dhcp6s.conf.5,v 1.3 2003/05/28 22:56:23 shirleyma Exp $
-.\"
-.\" Copyright (C) International Business Machines  Corp., 2003
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the project nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.TH dhcp6s.conf 5 "17 March 2003" "dhcp6s.conf" "Linux System Manager's Manual"
-
-.SH NAME
-dhcp6s.conf \- configuration file of the DHCPv6 server daemon, dhcp6s
-
-.SH DESCRIPTION
+.\" $Id: dhcp6s.conf.5,v 1.3 2003/05/28 22:56:23 shirleyma Exp $
+.\"
+.\" Copyright (C) International Business Machines  Corp., 2003
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the project nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.TH dhcp6s.conf 5 "17 March 2003" "dhcp6s.conf" "Linux System Manager's Manual"
+
+.SH NAME
+dhcp6s.conf \- configuration file of the DHCPv6 server daemon, dhcp6s
+
+.SH DESCRIPTION
 .B dhcp6s.conf
-contains the configuration information of addresses, prefixes, or
-various network configuration parameters for each of the interfaces. 
-The network configuration parameters can be described globally for all of 
-the interfaces. The default address preferred life time is 36000 seconds; 
-the default address valid life time is 72000 seconds if they are not defined
-in any declaration. The specific declaration order is interface, link, host;
-within link the more specific declaration is pool.
-
- The interface definitions are described in the following form:
-.PP
-.nf
-.B \tinterface\ <interface\ name>
-.B \t{
-.B \t\t[declarations];
-.B \t};
-.fi
- where each of the declarations could be of type link, group, or host. 
-Each declaration and the statements within each of these declarations 
-must be terminated by a semicolon. Additional details of the declarations 
-are specified below.
-
-.PP
-.BI DECLARATIONS
-.PP
-.nf
-.B interface\ <interface\ name>
-.B {
-.B \t[declarations];
-.B };
-.fi
-An interface declaration is used to inform the DHCPv6 server that the links and
-hosts declared within it are connected to the same network segment. Common
-network parameters for this network segment can be defined within the interface
-declaration.
-
-.nf
-.B link\ <link\ name>
-.B {
-.B \t[declarations];
-.B };
-.fi
-A link declaration is used to provide the DHCPv6 server  the IPv6 assgined
-address ranges, prefixes, and hosts. Common network parameters for this link 
-can be defined within the link declaration.
-
-.nf
-.B group
-.B {
-.B \t[declarations];
-.B };
-.fi
-A group declaration is used to group a list of declarations together to define
-the common network parameters. These network parameters are valid within this
-declaration only. Declarations can be one of the following types: interface, link,
-pool, or host.
-
-.nf
-.B pool
-.B {
-.B \t[declarations];
-.B };
-.fi
-The pool declaration is used to declare an address pool from which IPv6
-address can be allocated, with its own permit to control client access
-and its own declaration in which you can declare pool-specific network parameters.
-
-.nf
-.B host\ <host\ name>
-.B {
-.B \t[duid\ <DUID\n>];
-.B \t[iaidinfo\ {}];
-.B \t[address\ {}];
-.B \t[prefix\ <prefix>/<prefix\ length>];
-.B \t[declarations];
-.B };
-.fi
-This declaration allows administrators to describe the addresses, prefixes, and
-network configuration parameters for this  host. As for this declaration, the
-DHCP Unique Identifier (DUID), Identity Association Identifier (IAID), and
 
-addresses must be specified. The host declaration is used to do Static
-Address Assginment for a particular DHCPv6 client. 
-
-.nf
-.B address
-.B {
-.B \t[<ipv6 address>/<prefix length>];
-.B \t[prefer-life-time\ <preferred\ lifetime>];
-.B \t[valid-life-time\ <valid\ lifetime>];
-.B };
-.fi
-This statement allows administrators to specify the address for the 
-host. Preferred Lifetime and Valid Lifetime also can be set in this
-statement. This statement is valid only in host {} declarations.
-
-.nf
-.B prefix\ <prefix>/<prefix\ length>;
-.fi
-This statement allows administrators to specify the prefix.
-This parameter is needed when configuring dhcp6s as the Delegation Router for
-the Prefix Delegation. dhcp6s assigns the specified prefixes 
-to the requesting routers.
-
-.nf
-.B iaidinfo
-.B {
-.B \t[iaid\ <IAID\ number>];
-.B \t[renew-time\ <renew\ time>];
-.B \t[rebind-time\ <rebind\ time>];
-.B };
-.fi
-This statement allows administrators to describe the information for 
-this IAID. This statement is only valid in host {} declarations.
-iaid is required; renew-time and rebind time are optional in this statement.
-
-.nf
-.B range\ <ipv6\ address>\ to\ <ipv6\ address>/<prefix\ length>;
-.fi
-This statement allows adminstrators to use "range" and "to" keywords and
-prefix length to specify an address range.
-For each range not more than one of the unassigned addresses will be
-assgined to the requested client.
-
-.nf
-.B duid\ <DUID\>;
-.fi
-DUID is a DHCP Unique Identifier for a DHCP participant. Using this option,
-the administrator can specify the DUID of this DHCPv6 client.
-The duid statement is valid only in host {} declarations.
-
-.nf
-.BI iaid\ <IAID\ number>;
-.fi
-IAID is a Identity Association Identifier. IA is a collection of addresses
-assigned to a client. Using this option, the administrator can specify the IAID
-in iaidinfo for a host declaration.
-
-.nf
-.BI renew-time\ <renew\ time>;
-.fi
-This statement allows administrators to specify the RenewTime (T1).
-The recommended value for RenewTime is .5 times the shortest preferred
-lifetime of the address in the IA, if the value is not defined.
-
-.nf
-.BI rebind-time\ <rebind\ time>;
-.fi
-This statement allows administrators to specify the RebindTime (T2).
-The recommended value for RenewTime is .8 times the shortest preferred 
-lifetime of the address in the IA, if the value is not defined.
-
-.nf
-.BI prefer-life-time\ <preferred\ lifetime>;
-.fi
-This statement allows administrators to specify the Preferred Life Time for 
-each address.
-
-.nf
-.BI valid-life-time\ <valid\ lifetime>;
-.fi
-This statement allows administrators to specify the Valid Life Time for 
-each address.
-
-.nf
-.BI option\ dns_server\ <ipv6\ addresses\ or\ domain\ name\ list>;
-.fi
-This statement allows administrators to specify the DNS servers.
-
-.B send\ <OPTION>;
-.fi
-This declaration enables dhcp6s to include the specified option in sending 
-DHCPv6 messages.
-
-.nf
-\fIsend\ unicast;\fR
-.fi
-This declaration enables dhcp6s to send a Server Unicast option. Usually
-DHCPv6 clients must use multicast addresses to contact the DHCPv6 server and
-agents. This declaration specifies that dhcp6s will accept unicast messages
-from DHCPv6 clients if they include a Server Unicast option.
-
-.nf
-\fIsend\ server-preference\ <server\ preference\ value>;\fR
-.fi
-This declaration enables dhcp6s to include a Preference option for sending
-DHCPv6 messages. DHCPv6 clients will pick up the DHCPv6 server which has
-highest preference value. The highest preference value is 255.
-
-.nf
-\fIsend\ temp-address;\fR
-.fi
-This declaration assigns a temporary address to the requesting client.
-
-.nf
-\fIsend\ information-only;\fR
-.fi
-This option enables dhcp6s to give only configuration information rather than
-assigning client addresses. This could be, for example, DNS server address
-configuration information.
-
-.nf
-.B allow\ <OPTION>;
-.fi
-This declaration allows the DHCPv6 client to specify an option in receiving
-DHCPv6 messages.
-
-.nf
-\fIallow rapid\-commit;\fR
-.fi
-This option enables dhcp6s to allow the Rapid-Commit option from the DHCPv6
-client and the Solicit-Reply message exchanges.
-
-.nf
-\fIallow\ unicast;\fR
-.fi
-This option enables dhcp6s to allow the Server Unicast option for the DHCPv6
-client. Usually DHCPv6 clients must use multicast addresses to contact DHCPv6
-server and agents. With this declaration, dhcp6s accepts unicast 
-messages from DHCPv6 clients if they include a Server Unicast option.
-
-.SH EXAMPLES
-.PP
-This is a sample of the dhcp6s.conf file.
-.nf
-.B option dns\_server 2003::6:1 ibm.com;
-.B prefer\-life\-time 10000;
-.B valid\-life\-time 20000;
-.B renew\-time 5000;
-.B rebind\-time 8000;
-.B interface eth1 {
-.B \tlink AAA {
-.B \t\tallow unicast;
-.B \t\tsend unicast;
-.B \t\tallow rapid-commit;
-.B \t\tsend server-preference 5;
-.B \t\trenew-time 1000;
-.B \t\trebind-time 2400;
-.B \t\tprefer-life-time 2000;
-.B \t\tvalid-life-time 3000;
-.B \t\trange 3ffe:ffff:100::10 to 3ffe:ffff:100::110/64;
-.B \t\tprefix 3ffe:ffef:104::/64;
-.B \t\tpool {
-.B \t\t\tprefer\-life\-time 3600;
-.B \t\t\tvalid\-life\-time 7200;
-.B \t\t\trange fec0:ffff::10 to fec0:ffff::110/64;
-.B \t\t\tprefix fec0:fffe::/48;
-.B \t\t};
-.B \t};
-.B \thost host0 {
-.B \t\tduid 00:00:00:00:a0:a0;
-.B \t\tiaidinfo {
-.B \t\t\tiaid 101010;
-.B \t\t\trenew-time 1000;
-.B \t\t\trebind-time 2000;
-.B \t\t};
-.B \t\taddress {
-.B \t\t\t3ffe:ffff:102::120/64;
-.B \t\t\tprefer-life-time 2000;
-.B \t\t\tvalid-life-time 3000;
-.B \t\t};
-.B \t};
-.B \tgroup {
-.B \t\tprefer\-life\-time 5000;
-.B \t\tvalid\-life\-time 6000;
-.B \t\thost host1 {
-.B \t\t\tduid 00:00:00:00:a1:a1;
-.B \t\t\tiaidinfo {
-.B \t\t\t\tiaid 101011;
-.B \t\t\t\trenew-time 1000;
-.B \t\t\t\trebind-time 2000;
-.B \t\t\t};
-.B \t\t};
-.B \t\thost host2 {
-.B \t\t\tduid 00:00:00:00:a2:a2;
-.B \t\t\tsend information-only;
-.B \t\t};
-.B \t};
-.B };
-.fi
-
-.SH SEE ALSO
-Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IPv6 Prefix Options
-for DHCPv6, dhcp6s(5)
-
-.SH AUTHORS
-.LP
-Kazuo Hiekata <hiekata at yamato.ibm.com>
+contains the configuration information of addresses, prefixes, or
+various network configuration parameters for each of the interfaces. 
+The network configuration parameters can be described globally for all of 
+the interfaces. The default address preferred life time is 36000 seconds; 
+the default address valid life time is 72000 seconds if they are not defined
+in any declaration. The specific declaration order is interface, link, host;
+within link the more specific declaration is pool.
+
+ The interface definitions are described in the following form:
+.PP
+.nf
+.B \tinterface\ <interface\ name>
+.B \t{
+.B \t\t[declarations];
+.B \t};
+.fi
+ where each of the declarations could be of type link, group, or host. 
+Each declaration and the statements within each of these declarations 
+must be terminated by a semicolon. Additional details of the declarations 
+are specified below.
+
+.PP
+.BI DECLARATIONS
+.PP
+.nf
+.B interface\ <interface\ name>
+.B {
+.B \t[declarations];
+.B };
+.fi
+An interface declaration is used to inform the DHCPv6 server that the links and
+hosts declared within it are connected to the same network segment. Common
+network parameters for this network segment can be defined within the interface
+declaration.
+
+.nf
+.B link\ <link\ name>
+.B {
+.B \t[declarations];
+.B };
+.fi
+A link declaration is used to provide the DHCPv6 server  the IPv6 assgined
+address ranges, prefixes, and hosts. Common network parameters for this link 
+can be defined within the link declaration.
+
+.nf
+.B group
+.B {
+.B \t[declarations];
+.B };
+.fi
+A group declaration is used to group a list of declarations together to define
+the common network parameters. These network parameters are valid within this
+declaration only. Declarations can be one of the following types: interface, link,
+pool, or host.
+
+.nf
+.B pool
+.B {
+.B \t[declarations];
+.B };
+.fi
+The pool declaration is used to declare an address pool from which IPv6
+address can be allocated, with its own permit to control client access
+and its own declaration in which you can declare pool-specific network parameters.
+
+.nf
+.B host\ <host\ name>
+.B {
+.B \t[duid\ <DUID\n>];
+.B \t[iaidinfo\ {}];
+.B \t[address\ {}];
+.B \t[prefix\ <prefix>/<prefix\ length>];
+.B \t[declarations];
+.B };
+.fi
+This declaration allows administrators to describe the addresses, prefixes, and
+network configuration parameters for this  host. As for this declaration, the
+DHCP Unique Identifier (DUID), Identity Association Identifier (IAID), and 
+addresses must be specified. The host declaration is used to do Static
+Address Assginment for a particular DHCPv6 client. 
+
+.nf
+.B address
+.B {
+.B \t[<ipv6 address>/<prefix length>];
+.B \t[prefer-life-time\ <preferred\ lifetime>];
+.B \t[valid-life-time\ <valid\ lifetime>];
+.B };
+.fi
+This statement allows administrators to specify the address for the 
+host. Preferred Lifetime and Valid Lifetime also can be set in this
+statement. This statement is valid only in host {} declarations.
+
+.nf
+.B prefix\ <prefix>/<prefix\ length>;
+.fi
+This statement allows administrators to specify the prefix.
+This parameter is needed when configuring dhcp6s as the Delegation Router for
+the Prefix Delegation. dhcp6s assigns the specified prefixes 
+to the requesting routers.
+
+.nf
+.B relay\ <relay>/<prefix\ length>;
+.fi
+This statement specifies the prefix that the relay agent will put in the link
+address field of the RELAY-FORW message to indicate the link the client is
+attached to. If the link-address matches this prefix, this link declaration
+will be used. This statement is only valid in the link declaration.
+
+.nf
+.B iaidinfo
+.B {
+.B \t[iaid\ <IAID\ number>];
+.B \t[renew-time\ <renew\ time>];
+.B \t[rebind-time\ <rebind\ time>];
+.B };
+.fi
+This statement allows administrators to describe the information for 
+this IAID. This statement is only valid in host {} declarations.
+iaid is required; renew-time and rebind time are optional in this statement.
+
+.nf
+.B range\ <ipv6\ address>\ to\ <ipv6\ address>/<prefix\ length>;
+.fi
+This statement allows adminstrators to use "range" and "to" keywords and
+prefix length to specify an address range.
+For each range not more than one of the unassigned addresses will be
+assgined to the requested client.
+
+.nf
+.B duid\ <DUID\>;
+.fi
+DUID is a DHCP Unique Identifier for a DHCP participant. Using this option,
+the administrator can specify the DUID of this DHCPv6 client.
+The duid statement is valid only in host {} declarations.
+
+.nf
+.BI iaid\ <IAID\ number>;
+.fi
+IAID is a Identity Association Identifier. IA is a collection of addresses
+assigned to a client. Using this option, the administrator can specify the IAID
+in iaidinfo for a host declaration.
+
+.nf
+.BI renew-time\ <renew\ time>;
+.fi
+This statement allows administrators to specify the RenewTime (T1).
+The recommended value for RenewTime is .5 times the shortest preferred
+lifetime of the address in the IA, if the value is not defined.
+
+.nf
+.BI rebind-time\ <rebind\ time>;
+.fi
+This statement allows administrators to specify the RebindTime (T2).
+The recommended value for RenewTime is .8 times the shortest preferred 
+lifetime of the address in the IA, if the value is not defined.
+
+.nf
+.BI prefer-life-time\ <preferred\ lifetime>;
+.fi
+This statement allows administrators to specify the Preferred Life Time for 
+each address.
+
+.nf
+.BI valid-life-time\ <valid\ lifetime>;
+.fi
+This statement allows administrators to specify the Valid Life Time for 
+each address.
+
+.nf
+.BI option\ dns_server\ <ipv6\ addresses\ or\ domain\ name\ list>;
+.fi
+This statement allows administrators to specify the DNS servers.
+
+.B send\ <OPTION>;
+.fi
+This declaration enables dhcp6s to include the specified option in sending 
+DHCPv6 messages.
+
+.nf
+\fIsend\ unicast;\fR
+.fi
+This declaration enables dhcp6s to send a Server Unicast option. Usually
+DHCPv6 clients must use multicast addresses to contact the DHCPv6 server and
+agents. This declaration specifies that dhcp6s will accept unicast messages
+from DHCPv6 clients if they include a Server Unicast option.
+
+.nf
+\fIserver-preference\ <server\ preference\ value>;\fR
+.fi
+This declaration enables dhcp6s to include a Preference option for sending
+DHCPv6 messages. DHCPv6 clients will pick up the DHCPv6 server which has
+highest preference value. The highest preference value is 255.
+
+.nf
+\fIsend\ temp-address;\fR
+.fi
+This declaration assigns a temporary address to the requesting client.
+
+.nf
+\fIsend\ information-only;\fR
+.fi
+This option enables dhcp6s to give only configuration information rather than
+assigning client addresses. This could be, for example, DNS server address
+configuration information.
+
+.nf
+.B allow\ <OPTION>;
+.fi
+This declaration allows the DHCPv6 client to specify an option in receiving
+DHCPv6 messages.
+
+.nf
+\fIallow rapid\-commit;\fR
+.fi
+This option enables dhcp6s to allow the Rapid-Commit option from the DHCPv6
+client and the Solicit-Reply message exchanges.
+
+.nf
+\fIallow\ unicast;\fR
+.fi
+This option enables dhcp6s to allow the Server Unicast option for the DHCPv6
+client. Usually DHCPv6 clients must use multicast addresses to contact DHCPv6
+server and agents. With this declaration, dhcp6s accepts unicast 
+messages from DHCPv6 clients if they include a Server Unicast option.
+
+
+.nf
+\fIuse-ra-prefix;\fR
+.fi
+This declaration tells the server not to send clients the address prefix configured
+in address or range statements. With this option, client address prefixes can
+be set only by router advertisements, and the prefix configured in address or
+range statements will be ignored. This is a Red Hat extension; previously, the
+only way to set client address prefixes was by router advertisement.
+
+.SH EXAMPLES
+.PP
+This is a sample of the dhcp6s.conf file.
+.nf
+.B option dns\_server 2003::6:1 ibm.com;
+.B prefer\-life\-time 10000;
+.B valid\-life\-time 20000;
+.B renew\-time 5000;
+.B rebind\-time 8000;
+.B interface eth1 {
+.B \tlink AAA {
+.B \t\tallow unicast;
+.B \t\tsend unicast;
+.B \t\tallow rapid-commit;
+.B \t\tserver-preference 5;
+.B \t\trenew-time 1000;
+.B \t\trebind-time 2400;
+.B \t\tprefer-life-time 2000;
+.B \t\tvalid-life-time 3000;
+.B \t\trange 3ffe:ffff:100::10 to 3ffe:ffff:100::110/64;
+.B \t\tprefix 3ffe:ffef:104::/64;
+.B \t\tpool {
+.B \t\t\tprefer\-life\-time 3600;
+.B \t\t\tvalid\-life\-time 7200;
+.B \t\t\trange fec0:ffff::10 to fec0:ffff::110/64;
+.B \t\t\tprefix fec0:fffe::/48;
+.B \t\t};
+.B \t};
+.B \thost host0 {
+.B \t\tduid 00:00:00:00:a0:a0;
+.B \t\tiaidinfo {
+.B \t\t\tiaid 101010;
+.B \t\t\trenew-time 1000;
+.B \t\t\trebind-time 2000;
+.B \t\t};
+.B \t\taddress {
+.B \t\t\t3ffe:ffff:102::120/64;
+.B \t\t\tprefer-life-time 2000;
+.B \t\t\tvalid-life-time 3000;
+.B \t\t};
+.B \t};
+.B \tgroup {
+.B \t\tprefer\-life\-time 5000;
+.B \t\tvalid\-life\-time 6000;
+.B \t\thost host1 {
+.B \t\t\tduid 00:00:00:00:a1:a1;
+.B \t\t\tiaidinfo {
+.B \t\t\t\tiaid 101011;
+.B \t\t\t\trenew-time 1000;
+.B \t\t\t\trebind-time 2000;
+.B \t\t\t};
+.B \t\t};
+.B \t\thost host2 {
+.B \t\t\tduid 00:00:00:00:a2:a2;
+.B \t\t\tsend information-only;
+.B \t\t};
+.B \t};
+.B };
+.fi
+
+.SH SEE ALSO
+Dynamic Host Configuration Protocol for IPv6 (DHCPv6), IPv6 Prefix Options
+for DHCPv6, dhcp6s(5)
+
+.SH AUTHORS
+.LP
+Kazuo Hiekata <hiekata at yamato.ibm.com>

dhcpv6-0.10-relay.patch:
 dhcp6r.8          |  213 ++++++++++++++
 dhcp6r.c          |  354 +++++++++++++++++++++++
 dhcp6r.h          |   74 ++++
 dhcp6r.sh         |   89 +++++
 dhcp6r.sysconfig  |    3 
 relay6_database.c |  574 ++++++++++++++++++++++++++++++++++++++
 relay6_database.h |   98 ++++++
 relay6_parser.c   |  278 ++++++++++++++++++
 relay6_parser.h   |   62 ++++
 relay6_socket.c   |  802 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 relay6_socket.h   |   74 ++++
 11 files changed, 2621 insertions(+)

--- NEW FILE dhcpv6-0.10-relay.patch ---
--- /dev/null	2007-02-06 10:40:24.955607220 -0500
+++ dhcp-0.10/dhcp6r.8	2007-02-08 15:44:07.000000000 -0500
@@ -0,0 +1,213 @@
+.\"
+.\" Copyright (C) NEC Europe Ltd., 2003
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the project nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.de Id
+.ds Dt \\$4
+..
+.Id $Id: relay-agent.patch,v 1.1 2004/03/18 18:37:07 bbuesker Exp $
+.TH dhcp6r 8 "15 March 2004" "dhcp6r" "Linux System Manager's Manual"
+.SH NAME
+dhcp6r \- DHCPv6 relay agent
+.SH SYNOPSIS
+.B dhcp6r
+[
+.B \-d
+] [
+.I client-options
+] [
+.I server-options
+]
+.SH DESCRIPTION
+.B dhcp6r
+acts as DHCPv6 relay agent forwarding DHCPv6 messages from clients
+to servers and vice versa.  DHCPv6 messages from clients are received
+at UDP port 547, they are forwarded to one or more DHCPv6
+servers by multicast and/or unicast.  DHCPv6 messages from
+servers to clients are also received at UDP port 547 and
+forwarded by unicast only.
+.PP
+DHCPv6 messages received by multicast at a certain IPv6
+interface are never forwarded by multicast to the same
+interface.
+.PP
+If no options are present, the relay agent receives messages
+by unicast and multicast at all IPv6 interfaces, and
+all messages are forwarded to all IPv6 interfaces by
+multicast with the exception mentioned in the previous
+paragraph.
+.PP
+If one or more 
+.I client-options
+are present, then messages are only received as specified by 
+the client options.  If one or more
+.I server-options
+are present, then messages are only forwarded as specified by 
+the server options.
+.SH CLIENT-OPTIONS
+If no
+.I client-options
+are present, the relay receives
+messages by multicast and unicast at all IPv6 interfaces.
+.PP
+If one or more client options are present, then messages
+are only received as specified by the
+.IR client-options .
+.PP
+In any case, the relay receives client messages by
+unicast.
+.TP
+.B \-cu
+This option can be used to configure the client
+such that it receives messages from clients or other
+relay agents by unicast only.
+It does not have any effect if a 
+.B \-cm
+option is present.
+.TP
+.BI "\-cm " INTERFACE
+Accept client messages multicasted at IPv6
+interface
+.IR INTERFACE .
+The others are receiving 
+only unicast messages. For specifying a set of
+interfaces, an instance of this option is
+required for each interface. 
+.SH SERVER-OPTIONS
+If no
+.I server-options
+are present, the relay forwards
+messages received from clients by multicast and unicast 
+to all IPv6 interfaces, except the one, which the packet
+was received on.
+.PP
+If one or more
+.I server-options
+are present, then messages are forwarded as specified by the
+.IR server-options .
+.TP
+.BI "\-sm " INTERFACE
+Forward all received client messages by multicast
+at IPv6 interface
+.IR INTERFACE .
+For specifying a set of interfaces, an instance of this
+option is required for each interface.
+.TP
+.BI "\-su " ADDRESS
+Forward all received client messages by unicast
+to the IPv6 address
+.IR ADDRESS .
+For specifying a set
+of addresses, an instance of this option is
+required for each address.
+.TP
+.BI "\-sf " INTERFACE+ADDRESS
+Forward all received client messages by unicast
+to the IPv6 address
+.I ADDRESS
+through the IPv6 interface
+.IR INTERFACE .
+For specifying a set of combinations of
+interfaces and addresses, an instance of this
+option is required for each combination.
+.PP
+The 
+.BR \-sm ,
+.BR \-su ,
+and 
+.B \-sf 
+options can be combined in arbitrary ways.
+.SH OTHER OPTIONS
+.TP
+.B \-d
+If this option is not present, dhcp6r will dump logging
+information into the file /var/log/dhcp6r.log.  If the 
+option is present, logging information will be sent to stderr
+instead.
+.SH EXAMPLES
+The following examples are shown as given to the shell:
+.TP
+.SH dhcp6r
+Receive messages from clients at all IPv6
+interfaces by multicast and by unicast, and
+forward them to all (other) IPv6 interfaces
+by multicast.
+.TP
+.SH dhcp6r -cu
+Receive messages from clients by unicast only,
+and forward them to all (other) IPv6 interfaces by
+multicast.
+.TP
+.SH dhcp6r -cm eth0 -cm eth2
+Receive messages from clients at interfaces
+eth0 and eth2 by multicast and by unicast, and
+forward them to all IPv6 interfaces by
+multicast (except the one at which the message
+was received by multicast).
+.TP
+.SH dhcp6r -cm eth0 -cm eth2 -sm eth1
+Receive messages from clients at interfaces
+eth0 and eth2 by multicast and by unicast, and
+forward them to interfaces eth1 by multicast.
+.TP
+.nf
+.SH dhcp6r -su fec0::204:ce33:763f:b34 -su fec0::504:ff33:73f:c557
+.fi
+Receive messages from clients at all IPv6
+interfaces by multicast and by unicast, and
+forward a copy of them to each of the specified
+addresses.
+.TP
+.SH dhcp6r -sm eth1 -su fec0::204:ce33:763f:b34
+Receive messages from clients at all IPv6
+interfaces by multicast and by unicast, and
+forward them to interface eth1 by multicast
+and to the specified unicast address.
+.TP            
+.SH dhcp6r -sm eth1 -sf eth0+fec0::504:ff33:73f:c557
+Receive messages from clients at all IPv6
+interfaces by multicast and by unicast, and
+forward them to interface eth1 by multicast 
+and to the specified unicast address.  For the 
+unicast address it is enforced that the message 
[...2255 lines suppressed...]
+				      "inet_pton failed in send_message()\n");
+             	exit(1);
+			}
+			TRACE(dump,"%s - SOURCE ADDRESS: %s\n",dhcp6r_clock(), 
+			      iface->ipv6addr->gaddr);
+     	           
+			sin6.sin6_port = htons(SERVER_PORT);
+    
+			iov[0].iov_base = mesg->buffer;
+			iov[0].iov_len = mesg->datalength;
+			msg.msg_name = (void *) &sin6;
+			msg.msg_namelen = sizeof(sin6);
+			msg.msg_iov = &iov[0];
+			msg.msg_iovlen = 1;
+
+			if ((count = sendmsg(sendsock->send_sock_desc, &msg, 0)) < 0) {
+				perror("sendmsg");	    
+				return 0;
+			}
+
+			if (count > MAX_DHCP_MSG_LENGTH)
+				perror("bytes sendmsg");
+             
+			TRACE(dump, 
+			      "%s - ========> RELAY_FORW, SENT TO: %s SENT_BYTES: %d\n", 
+			     dhcp6r_clock(), dest_addr, count);
+      
+			free(recvp);
+			hit = 1;
+		} /* for */
+   
+		if (hit == 0) {
+			for (iface = interface_list.next;  iface != &interface_list;
+		     	iface = iface->next) {
+				if (mesg->interface_in == iface->devindex)   
+					continue;
+
+				*(mesg->hc_pointer)= MAXHOPCOUNT;
+				bzero((char *)&sin6, sizeof(struct sockaddr_in6));
+				sin6.sin6_family = AF_INET6;
+
+				memset(dest_addr, 0, INET6_ADDRSTRLEN);
+				strcpy(dest_addr, ALL_DHCP_SERVERS);
+
+				/* destination address */
+				if (inet_pton(AF_INET6, dest_addr, &sin6.sin6_addr) <= 0) {  
+					TRACE(dump, "%s - %s", dhcp6r_clock(),
+					      "inet_pton failed in send_message()\n");
+					return 0;
+				}
+
+				recvmsglen = CMSG_SPACE(sizeof(struct in6_pktinfo));
+				recvp = (char *) malloc(recvmsglen*sizeof(char));
+				if (recvp ==NULL) {
+					TRACE(dump, "%s - %s", dhcp6r_clock(),
+					      "ERROR-->recvp NO MORE MEMORY AVAILABLE \n");
+					exit(1);
+				}
+				memset(recvp, 0, recvmsglen);
+
+				cmsgp = (struct cmsghdr *) recvp;
+				cmsgp->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
+				cmsgp->cmsg_level = IPPROTO_IPV6;
+				cmsgp->cmsg_type = IPV6_PKTINFO;
+				in6_pkt = (struct in6_pktinfo *) CMSG_DATA(cmsgp);
+				msg.msg_control = (void *) recvp;
+				msg.msg_controllen = recvmsglen;
+
+		 		/* destination address */	
+				if (inet_pton(AF_INET6, dest_addr, &sin6.sin6_addr) <= 0) { 
+					TRACE(dump, "%s - %s", dhcp6r_clock(),
+					      "inet_pton failed in send_message()\n");
+					return 0;
+				}
+				sin6.sin6_port = htons(SERVER_PORT);
+
+				in6_pkt->ipi6_ifindex = iface->devindex;
+				sin6.sin6_scope_id = in6_pkt->ipi6_ifindex;
+   
+				TRACE(dump, "%s - OUTGOING DEVICE INDEX: %d\n", dhcp6r_clock(), 
+				      in6_pkt->ipi6_ifindex);
+				if (inet_pton(AF_INET6, iface->ipv6addr->gaddr, 
+				              &in6_pkt->ipi6_addr)<=0) {  /* source address */
+					TRACE(dump, "%s - %s", dhcp6r_clock(),
+					      "inet_pton failed in send_message()\n");
+					exit(1);
+				}
+     
+				TRACE(dump, "%s - SOURCE ADDRESS: %s\n", dhcp6r_clock(), 
+				      iface->ipv6addr->gaddr);
+     
+				iov[0].iov_base = mesg->buffer;
+				iov[0].iov_len = mesg->datalength;
+				msg.msg_name = (void *) &sin6;
+				msg.msg_namelen = sizeof(sin6);
+				msg.msg_iov = &iov[0];
+				msg.msg_iovlen = 1;
+
+				if ((count = sendmsg(sendsock->send_sock_desc, &msg, 0))< 0) {
+					perror("sendmsg");            
+					return 0;
+				}
+
+				if (count > MAX_DHCP_MSG_LENGTH)
+					perror("sendmsg");
+
+				TRACE(dump, 
+				      "%s - ========> RELAY_FORW, SENT TO: %s SENT_BYTES: %d\n",
+				      dhcp6r_clock(), dest_addr, count);
+				free(recvp);
+			} /* for */
+		}
+	}
+
+	fflush(dump);
+	mesg->sent = 1;
+	return 1;  
+       
+
+	TRACE(dump, "%s - %s", dhcp6r_clock(), 
+	      "FATAL ERROR--> NO MESSAGE TYPE TO BE SENT!\n");
+	exit(1);
+}
--- /dev/null	2007-02-06 10:40:24.955607220 -0500
+++ dhcp-0.10/relay6_socket.h	2007-02-08 15:44:07.000000000 -0500
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) NEC Europe Ltd., 2003
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef __RELAY6_SOCKET_H_DEFINED
+#define __RELAY6_SOCKET_H_DEFINED
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#include "dhcp6r.h"
+
+fd_set readfd;
+int fdmax;  
+
+struct receive {
+	struct msghdr msg;
+	struct iovec iov[1];
+	struct cmsghdr *cmsgp;
+	struct sockaddr_in6 sin6;    /* my address information */
+	struct sockaddr_in6 from;
+	int recvmsglen;
+	char *recvp;
+	char src_addr[INET6_ADDRSTRLEN];
+	int pkt_interface;
+	int buflength;
+	int dst_addr_type ;
+	char *databuf;
+	int recv_sock_desc;
+};
+
+struct send {
+	int send_sock_desc;
+};
+
+struct send  *sendsock;
+struct receive *recvsock;
+
+int send_message __P((void));
+int fill_addr_struct __P((void));
+int set_sock_opt __P((void));
+int recv_data __P((void));
+int check_select __P((void));
+int get_recv_data __P((void));
+int get_interface_info __P((void));
+void init_socket __P((void));
+
+#endif /* __RELAY6_SOCKET_H_DEFINED */

dhcpv6-0.10-libdhcp6client.patch:
 client6_addr.c                   |   44 ++++--
 common.c                         |   24 +++
 dhcp6.h                          |   17 ++
 dhcp6c.c                         |  284 +++++++++++++++++++++++++++++++--------
 libdhcp6client/Makefile          |   68 +++++++++
 libdhcp6client/dhc6_alloc.c      |   54 +++++++
 libdhcp6client/dhc6_alloc.h      |   16 ++
 libdhcp6client/dhcp6client.h     |   25 +++
 libdhcp6client/libdhcp_control.h |  128 +++++++++++++++++
 9 files changed, 596 insertions(+), 64 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.8 -r 1.9 dhcpv6-0.10-libdhcp6client.patch
Index: dhcpv6-0.10-libdhcp6client.patch
===================================================================
RCS file: /cvs/dist/rpms/dhcpv6/devel/dhcpv6-0.10-libdhcp6client.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- dhcpv6-0.10-libdhcp6client.patch	31 Oct 2006 18:29:55 -0000	1.8
+++ dhcpv6-0.10-libdhcp6client.patch	9 Feb 2007 03:53:55 -0000	1.9
@@ -1,17 +1,5 @@
---- dhcp-0.10/libdhcp6client/lease_token.l.libdhcp6client	2004-02-04 18:29:24.000000000 -0500
-+++ dhcp-0.10/libdhcp6client/lease_token.l	2006-10-31 12:07:24.000000000 -0500
-@@ -241,6 +241,9 @@
- 	
- 	fseek(file, 0, 0);
- 	yyin = file;
-+	yy_init=1;
-+	yy_start=0;
-+	yy_current_buffer=0;
- 	yylex(); 
- 	return;
- }
---- dhcp-0.10/libdhcp6client/client6_addr.c.libdhcp6client	2006-10-31 12:07:19.000000000 -0500
-+++ dhcp-0.10/libdhcp6client/client6_addr.c	2006-10-31 12:07:24.000000000 -0500
+--- dhcp-0.10/client6_addr.c.libdhcp6client	2007-02-08 22:41:35.000000000 -0500
++++ dhcp-0.10/client6_addr.c	2007-02-08 22:41:35.000000000 -0500
 @@ -56,6 +56,10 @@
  #include "timer.h"
  #include "lease.h"
@@ -23,16 +11,7 @@
  static int dhcp6_update_lease __P((struct dhcp6_addr *, struct dhcp6_lease *));
  static int dhcp6_add_lease __P((struct dhcp6_addr *));
  struct dhcp6_lease *dhcp6_find_lease __P((struct dhcp6_iaidaddr *, 
-@@ -220,7 +224,7 @@
- 	sp->iaidaddr = &client6_iaidaddr;
- 	time(&sp->start_date);
- 	sp->state = ACTIVE;
--	if (write_lease(sp, client6_lease_file) != 0) {
-+	if (client6_lease_file && (write_6_lease(sp, client6_lease_file) != 0)) {
- 		dprintf(LOG_ERR, "%s" "failed to write a new lease address %s to lease file", 
- 			FNAME, in6addr2str(&sp->lease_addr.addr, 0));
- 		if (sp->timer)
-@@ -231,14 +235,24 @@
+@@ -231,14 +235,23 @@
  	if (sp->lease_addr.type == IAPD) {
  		dprintf(LOG_INFO, "request prefix is %s/%d", 
  			in6addr2str(&sp->lease_addr.addr, 0), sp->lease_addr.plen);
@@ -40,107 +19,69 @@
 -		dprintf(LOG_ERR, "%s" "adding address failed: %s",
 -		    FNAME, in6addr2str(&addr->addr, 0));
 -		if (sp->timer)
-+	} else 
-+#ifdef LIBDHCP
-+                if (  libdhcp_control
-+                   &&(libdhcp_control->capability & DHCP_CONFIGURE_ADDRESSES)
-+                   )
-+                {
-+#endif
-+	        if (client6_ifaddrconf(IFADDRCONF_ADD, addr) != 0) {
-+		    dprintf(LOG_ERR, "%s" "adding address failed: %s",
-+			    FNAME, in6addr2str(&addr->addr, 0));
-+		    if (sp->timer)
- 			dhcp6_remove_timer(sp->timer);
+-			dhcp6_remove_timer(sp->timer);
 -		free(sp);
 -		return (-1);
--	}
-+		    free(sp);
-+		    return (-1);
-+		}
 +#ifdef LIBDHCP
++	} else if (libdhcp_control && (libdhcp_control->capability & DHCP_CONFIGURE_ADDRESSES)) {
++#else
++	} else
++#endif
++		if (client6_ifaddrconf(IFADDRCONF_ADD, addr) != 0) {
++			dprintf(LOG_ERR, "%s" "adding address failed: %s",
++			        FNAME, in6addr2str(&addr->addr, 0));
++			if (sp->timer)
++				dhcp6_remove_timer(sp->timer);
++			free(sp);
++			return (-1);
 +		}
++#ifdef LIBDHCP
+ 	}
 +#endif
++
  	TAILQ_INSERT_TAIL(&client6_iaidaddr.lease_list, sp, link);
  	/* for infinite lifetime don't do any timer */
  	if (sp->lease_addr.validlifetime == DHCP6_DURATITION_INFINITE || 
-@@ -285,7 +299,12 @@
+@@ -285,6 +298,9 @@
  	dprintf(LOG_DEBUG, "%s" "removing address %s", FNAME,
  		in6addr2str(&sp->lease_addr.addr, 0));
  	sp->state = INVALID;
--	if (write_lease(sp, client6_lease_file) != 0) {
 +#ifdef LIBDHCP
-+	if (  libdhcp_control
-+	    &&(libdhcp_control->capability & DHCP_USE_LEASE_DATABASE)
-+	   )
++	if (libdhcp_control && (libdhcp_control->capability & DHCP_USE_LEASE_DATABASE))
 +#endif
-+	if (write_6_lease(sp, client6_lease_file) != 0) {
+ 	if (write_lease(sp, client6_lease_file) != 0) {
  		dprintf(LOG_INFO, "%s" 
  			"failed to write removed lease address %s to lease file", 
- 			FNAME, in6addr2str(&sp->lease_addr.addr, 0));
-@@ -297,10 +316,17 @@
+@@ -296,10 +312,13 @@
+ 		dprintf(LOG_INFO, "request prefix is %s/%d", 
  			in6addr2str(&sp->lease_addr.addr, 0), sp->lease_addr.plen);
  		/* XXX: remove from the update prefix list */
- 
+-
 -	} else if (client6_ifaddrconf(IFADDRCONF_REMOVE, &sp->lease_addr) != 0) {
+-			dprintf(LOG_INFO, "%s" "removing address %s failed",
+-		    		FNAME, in6addr2str(&sp->lease_addr.addr, 0));
 +	} else
 +#ifdef LIBDHCP
-+	if (  libdhcp_control
-+	    &&(libdhcp_control->capability & DHCP_CONFIGURE_ADDRESSES)
-+	   )
++	if (libdhcp_control && (libdhcp_control->capability & DHCP_CONFIGURE_ADDRESSES))
 +#endif
-+
-+	    if (client6_ifaddrconf(IFADDRCONF_REMOVE, &sp->lease_addr) != 0) {
- 			dprintf(LOG_INFO, "%s" "removing address %s failed",
- 		    		FNAME, in6addr2str(&sp->lease_addr.addr, 0));
--	}
-+	    }
++	if (client6_ifaddrconf(IFADDRCONF_REMOVE, &sp->lease_addr) != 0) {
++		dprintf(LOG_INFO, "%s" "removing address %s failed",
++		        FNAME, in6addr2str(&sp->lease_addr.addr, 0));
+ 	}
  	/* remove expired timer for this lease. */
  	if (sp->timer)
- 		dhcp6_remove_timer(sp->timer);
-@@ -453,7 +479,12 @@
+@@ -453,6 +472,9 @@
  	memcpy(&sp->lease_addr, addr, sizeof(sp->lease_addr));
  	sp->state = ACTIVE;
  	time(&sp->start_date);
--	if (write_lease(sp, client6_lease_file) != 0) {
 +#ifdef LIBDHCP
-+	if (  libdhcp_control
-+	    &&(libdhcp_control->capability & DHCP_USE_LEASE_DATABASE)
-+	   )
++	if (libdhcp_control && (libdhcp_control->capability & DHCP_USE_LEASE_DATABASE))
 +#endif
-+	if (write_6_lease(sp, client6_lease_file) != 0) {
+ 	if (write_lease(sp, client6_lease_file) != 0) {
  		dprintf(LOG_ERR, "%s" 
  			"failed to write an updated lease address %s to lease file", 
- 			FNAME, in6addr2str(&sp->lease_addr.addr, 0));
-@@ -677,7 +708,7 @@
- 		return (-1);
- 	}
- 
--	dprintf(LOG_DEBUG, "%s" "%s an address %s on %s", FNAME, cmdstr,
-+	dprintf(LOG_INFO, "%s" "%s an address %s on %s", FNAME, cmdstr,
- 	    in6addr2str(&ifaddr->addr, 0), ifp->ifname);
- 	close(s); 
- 	return (0);
-@@ -707,7 +738,7 @@
- create_iaid(struct iaid_table *iaidtab, int num_device)
- {
- 	struct iaid_table *temp = iaidtab;
--	struct ifaddrs *ifa=0L, *ifap=0L;
-+	struct ifaddrs *ifap=0L,*ifa=0L;
- 	int i;
- 	
- 	if ( getifaddrs( &ifap ) != 0 )
-@@ -716,7 +747,7 @@
- 		return -1;
- 	}
- 
--	for (i=0, ifa = ifap; 
-+	for (i=0, ifa=ifap; 
- 	     (ifa != 0L) && ( i < MAX_DEVICE );
- 	     i++, ifa = ifa->ifa_next
- 	    )
---- dhcp-0.10/libdhcp6client/dhcp6c.c.libdhcp6client	2006-10-31 12:07:19.000000000 -0500
-+++ dhcp-0.10/libdhcp6client/dhcp6c.c	2006-10-31 12:07:24.000000000 -0500
+--- dhcp-0.10/dhcp6c.c.libdhcp6client	2007-02-08 22:41:35.000000000 -0500
++++ dhcp-0.10/dhcp6c.c	2007-02-08 22:42:05.000000000 -0500
 @@ -73,6 +73,9 @@
  #include "common.h"
  #include "timer.h"
@@ -151,20 +92,17 @@
  
  static int debug = 0;
  static u_long sig_flags = 0;
-@@ -103,9 +106,9 @@
- 
- #define CLIENT6_INFO_REQ	0x10
- 
--int insock;	/* inbound udp port */
--int outsock;	/* outbound udp port */
--int nlsock;	
-+int insock = -1;	/* inbound udp port */
-+int outsock= -1;	/* outbound udp port */
[...1791 lines suppressed...]
- 		dprintf(LOG_NOTICE, "%s" "failed to open DUID file: %s",
- 		    FNAME, idfile);
-@@ -776,6 +787,9 @@
- 	}
- 
- 	/* save the (new) ID to the file for next time */
-+#ifdef LIBDHCP
-+     if ( libdhcp_control && (libdhcp_control->capability & DHCP_USE_LEASE_DATABASE))
-+#endif
- 	if (!fp) {
- 		if ((fp = fopen(idfile, "w+")) == NULL) {
- 			dprintf(LOG_ERR, "%s"
-@@ -823,8 +837,13 @@
- 		return -1;
- 
- 	strcpy(if_hwaddr.ifr_name, ifname);
-+	dprintf(LOG_DEBUG,"gethwid: ioctl SIOCGIFHWADDR");
- 	if (ioctl(skfd, SIOCGIFHWADDR, &if_hwaddr) < 0)
-+	{
-+	    close(skfd);
- 		return -1;
-+	}
-+	close(skfd);
- 	/* only support Ethernet */
- 	switch (if_hwaddr.ifr_hwaddr.sa_family) {
- 	case ARPHRD_ETHER:
-@@ -940,7 +959,7 @@
- 		cp = (char *)(p + 1);
- 		np = (struct dhcp6opt *)(cp + optlen);
- 
--		dprintf(LOG_DEBUG, "%s" "get DHCP option %s, len %d",
-+		dprintf(LOG_INFO, "%s" "get DHCP option %s, len %d",
- 		    FNAME, dhcp6optstr(opt), optlen);
- 
- 		/* option length field overrun */
-@@ -1085,7 +1104,7 @@
- 				ntohl(*(u_int32_t *)(cp + sizeof(u_int32_t)));
- 			optinfo->iaidinfo.rebindtime = 
- 				ntohl(*(u_int32_t *)(cp + 2 * sizeof(u_int32_t)));
--			dprintf(LOG_DEBUG, "get option iaid is %u, renewtime %u, "
-+			dprintf(LOG_INFO, "get option iaid is %u, renewtime %u, "
- 				"rebindtime %u", optinfo->iaidinfo.iaid,
- 				optinfo->iaidinfo.renewtime, optinfo->iaidinfo.rebindtime);
- 			if (get_assigned_ipv6addrs(cp + 3 * sizeof(u_int32_t), 
-@@ -1189,7 +1208,7 @@
- 		opt = ntohs(opth.dh6opt_type);
- 		cp = p + sizeof(opth);
- 		np = cp + optlen;
--		dprintf(LOG_DEBUG, "  IA address option: %s, "
-+		dprintf(LOG_INFO, "  IA address option: %s, "
- 			"len %d", dhcp6optstr(opt), optlen);
- 
- 		if (np > ep) {
-@@ -1219,7 +1238,7 @@
- 			}
- 			break;
- 		case DH6OPT_IADDR:
--			if (optlen < sizeof(ai) - sizeof(u_int32_t))
-+			if (optlen < sizeof(ai)- sizeof(u_int32_t))
- 				goto malformed;
- 			memcpy(&ai, p, sizeof(ai));
- 			/* copy the information into internal format */
-@@ -2028,8 +2047,16 @@
- 	va_list ap;
- 	char logbuf[LINE_MAX];
- 
-+#if LIBDHCP
-+	va_start(ap, fmt);
-+	if ( libdhcp_control && libdhcp_control->eh )
-+	    libdhcp_control->eh(libdhcp_control, level, fmt, ap);
-+	va_end(ap);
-+	return;
-+#endif
- 	va_start(ap, fmt);
- 	vsnprintf(logbuf, sizeof(logbuf), fmt, ap);
-+	va_end(ap);
- 
- 	if (foreground && debug_thresh >= level) {
- 		time_t now;
---- dhcp-0.10/libdhcp6client/dhcp6.h.libdhcp6client	2006-10-31 12:07:19.000000000 -0500
-+++ dhcp-0.10/libdhcp6client/dhcp6.h	2006-10-31 12:07:24.000000000 -0500
-@@ -116,9 +116,24 @@
- 
- typedef enum { IANA, IATA, IAPD} iatype_t;
- 
--typedef enum { ACTIVE, RENEW,
-+#ifdef LIBDHCP
-+typedef enum { DHCP6_ACTIVE=1, DHCP6_RENEW,
-+	       DHCP6_REBIND, DHCP6_EXPIRED,
-+	       DHCP6_INVALID } state_t;
-+
-+#define ACTIVE 	DHCP6_ACTIVE
-+#define RENEW  	DHCP6_RENEW
-+#define REBIND	DHCP6_REBIND
-+#define EXPIRED	DHCP6_EXPIRED
-+#define INVALID DHCP6_INVALID
-+#include <libdhcp_control.h>
-+extern LIBDHCP_Control *libdhcp_control;
-+#include <dhc6_alloc.h>
-+#else
-+typedef enum { ACTIVE=1, RENEW,
- 	       REBIND, EXPIRED,
- 	       INVALID } state_t;
-+#endif
- /* Internal data structure */
- 
- struct duid {
---- /dev/null	2006-10-31 10:23:48.419497130 -0500
-+++ dhcp-0.10/libdhcp6client/dhcp6client.h	2006-10-31 12:07:24.000000000 -0500
-@@ -0,0 +1,22 @@
+--- /dev/null	2007-02-06 10:40:24.955607220 -0500
++++ dhcp-0.10/libdhcp6client/dhcp6client.h	2007-02-08 22:41:35.000000000 -0500
+@@ -0,0 +1,25 @@
 +/* dhcp6client.h
 + *
 + *  Interface to the DHCPv6 client libdhcp6client library.
@@ -1456,7 +1149,81 @@
 + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + *  GNU General Public License for more details.
 + */
-+struct libdhcp_control_s;  /* include libdhcp_control.h or libdhcp.h for this */
 +
-+extern int dhcpv6_client( struct libdhcp_control_s *dhc_ctl, int argc, char **argv, char **envp);
++/* include libdhcp_control.h or libdhcp.h for this */
++struct libdhcp_control_s;
++
 +/* the DHCPv6 client main() function */
++extern int dhcpv6_client(struct libdhcp_control_s *dhc_ctl,
++                         int argc, char **argv, char **envp);
+--- /dev/null	2007-02-06 10:40:24.955607220 -0500
++++ dhcp-0.10/libdhcp6client/Makefile	2007-02-08 22:41:35.000000000 -0500
+@@ -0,0 +1,68 @@
++#
++# Makefile for libdhcp6client
++# dcantrell at redhat.com
++#
++
++include ../Makefile.inc
++
++# Version of dhcpv6
++VER = 0.10
++
++PROGS = libdhcp6client.a libdhcp6client-$(VER).so.0
++
++# Source files
++SRCS = dhcp6c.c common.c config.c timer.c client6_addr.c hash.c \
++       lease.c netlink.c lease_token.c client6_parse.c client6_token.c \
++       dad_token.c ra_token.c resolv_token.c radvd_token.c strlcpy.c \
++       dhc6_alloc.c
++OBJS = $(SRCS:.c=.o)
++
++# Files to link so that debuginfo is generated correctly
++LINKS = client6_parse.y client6_token.l dad_token.l lease_token.l lex.cpyy.c \
++        lex.ifyy.c lex.lyy.c lex.rayy.c lex.rdyy.c lex.rvyy.c ra_token.l \
++        radvd_token.l resolv_token.l y.tab.c y.tab.h
++
++CFLAGS += -I. -I.. -DLIBDHCP
++
++all: links $(PROGS)
++
++links:
++	@for f in $(LINKS) ; do \
++		if [ ! -r $$f ]; then \
++			ln ../$$f $$f ; \
++		fi ; \
++	done
++
++$(SRCS):
++	@if [ ! -r $@ ]; then \
++		if [ -r ../$@ ]; then \
++			ln ../$@ $@ ; \
++		fi ; \
++	fi
++
++%.o: %.c
++	$(CC) $(CFLAGS) -c -o $@ $<
++
++libdhcp6client.a: $(OBJS)
++	$(AR) crus $@ $(OBJS)
++
++libdhcp6client-$(VER).so.0: $(OBJS)
++	$(CC) -shared -o $@ -Wl,-soname,$@ $(OBJS) $(LIBS)
++
++install: $(PROGS)
++	$(INSTALL) -m 0755 -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp6client-$(VER).so.0 $(DESTDIR)$(LIBDIR)/libdhcp6client-$(VER).so.0
++	$(INSTALL) -m 0644 -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp6client.a $(DESTDIR)$(LIBDIR)/libdhcp6client.a
++	mkdir -p $(DESTDIR)$(INCLUDEDIR)/dhcp6client/dhcpv6
++	$(INSTALL) -m 644 -o $(INSTALL_USER) -g $(INSTALL_GROUP) dhcp6client.h $(DESTDIR)$(INCLUDEDIR)/dhcp6client/dhcp6client.h
++	$(INSTALL) -m 644 -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp_control.h $(DESTDIR)$(INCLUDEDIR)/dhcp6client/libdhcp_control.h
++	$(INSTALL) -m 644 -o $(INSTALL_USER) -g $(INSTALL_GROUP) dhc6_alloc.h $(DESTDIR)$(INCLUDEDIR)/dhcp6client/dhcpv6/dhc6_alloc.h
++	for header in common.h config.h cp.tab.h dhcp6.h hash.h lease.h queue.h timer.h ; do \
++		$(INSTALL) -m 644 -o $(INSTALL_USER) -g $(INSTALL_GROUP) ../$$header $(DESTDIR)$(INCLUDEDIR)/dhcp6client/dhcpv6/$$header ; \
++	done
++	$(INSTALL) -m 644 -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) ../libdhcp6client.pc $(DESTDIR)$(PKGCFGDIR)/libdhcp6client.pc
++	( cd $(DESTDIR)$(LIBDIR) ; rm -f libdhcp6client.so )
++	( cd $(DESTDIR)$(LIBDIR) ; ln -sf libdhcp6client-$(VER).so.0 libdhcp6client.so )
++
++clean:
++	-rm -f libdhcp6client.a libdhcp6client-$(VER).so.0
++	-rm -f $(OBJS)

dhcpv6-0.10-redhat.patch:
 Makefile.in      |   85 +++++------
 Makefile.inc.in  |   32 ++++
 ReadMe           |   10 -
 client6_addr.c   |   58 ++++---
 client6_parse.y  |   48 ++++--
 client6_token.l  |    9 +
 common.c         |  128 ++++++++++++----
 common.h         |    3 
 config.c         |   94 +++++++++---
 config.h         |   39 +++--
 configure.in     |    9 -
 dad_token.l      |   12 +
 dhcp6.h          |   35 ++++
 dhcp6c.c         |  132 ++++++++++++-----
 dhcp6relay.c     |    6 
 dhcp6s.c         |  415 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 dhcp6s.sh        |   30 ++-
 dhcp6s.sysconfig |    4 
 ifaddrs.c        |    2 
 lease.c          |    6 
 lease_token.l    |   12 +
 netlink.c        |   27 +--
 ra_token.l       |   11 +
 radvd_token.l    |   32 +++-
 resolv_token.l   |   57 ++++++-
 server6_addr.c   |   23 +--
 server6_conf.c   |    4 
 server6_conf.h   |    1 
 server6_parse.y  |   19 ++
 server6_token.l  |    8 -
 timer.c          |    2 
 31 files changed, 1061 insertions(+), 292 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.4 -r 1.5 dhcpv6-0.10-redhat.patch
Index: dhcpv6-0.10-redhat.patch
===================================================================
RCS file: /cvs/dist/rpms/dhcpv6/devel/dhcpv6-0.10-redhat.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- dhcpv6-0.10-redhat.patch	27 Nov 2006 19:56:59 -0000	1.4
+++ dhcpv6-0.10-redhat.patch	9 Feb 2007 03:53:55 -0000	1.5
@@ -1,36 +1,44 @@
 --- dhcp-0.10/Makefile.in.rh	2004-03-04 18:31:24.000000000 -0500
-+++ dhcp-0.10/Makefile.in	2006-11-27 14:55:32.000000000 -0500
-@@ -10,12 +10,14 @@
- CC=	@CC@
- YACC=	@YACC@
- LEX=	@LEX@
++++ dhcp-0.10/Makefile.in	2007-02-08 22:33:39.000000000 -0500
+@@ -2,34 +2,9 @@
+ # $Id$
+ #
+ 
+-srcdir=	@srcdir@
+-CFLAGS=	@CFLAGS@ @DEFS@
+-LDFLAGS=@LDFLAGS@
+-LIBOBJS=@LIBOBJS@
+-LIBS=	@LIBS@
+-CC=	@CC@
+-YACC=	@YACC@
+-LEX=	@LEX@
 -TARGET=	dhcp6c dhcp6s
 -DESTDIR=
-+TARGET=	dhcp6c dhcp6s dhcp6r libdhcp6client.so.1 libdhcp6client.a
-+DESTDIR ?=
- 
- INSTALL=@INSTALL@
- INSTALL_PROGRAM=@INSTALL_PROGRAM@
- INSTALL_DATA=@INSTALL_DATA@
-+INSTALL_USER ?= root
-+INSTALL_GROUP ?= root
- prefix=	@prefix@
- exec_prefix=	@exec_prefix@
- bindir=	@bindir@
-@@ -25,8 +27,11 @@
- etc=/etc
- sysconfigdir=/etc/sysconfig
- CHKCONFIG=/sbin/chkconfig
-+LIBDIR ?= /usr/lib
-+INCLUDEDIR ?= /usr/include
-+PKGCFGDIR ?= /usr/lib/pkgconfig
- 
+-
+-INSTALL=@INSTALL@
+-INSTALL_PROGRAM=@INSTALL_PROGRAM@
+-INSTALL_DATA=@INSTALL_DATA@
+-prefix=	@prefix@
+-exec_prefix=	@exec_prefix@
+-bindir=	@bindir@
+-sbindir=@sbindir@
+-mandir=	@mandir@
+-initdir=/etc/rc.d/init.d
+-etc=/etc
+-sysconfigdir=/etc/sysconfig
+-CHKCONFIG=/sbin/chkconfig
+-
 -CFLAGS+= -DCONF_DH6OPT_DNS_RESOLVERS=@dhcpopt_dns_resolvers@ \
-+CFLAGS+= -Wall -DCONF_DH6OPT_DNS_RESOLVERS=@dhcpopt_dns_resolvers@ \
- 	-DCONF_DH6OPT_DOMAIN_LIST=@dhcpopt_domain_list@ \
- 	-DCONF_DH6OPT_IA_PD=@dhcpopt_pdel@ \
- 	-DCONF_DH6OPT_IAPREFIX=@dhcpopt_pinfo@ 
-@@ -41,16 +46,24 @@
+-	-DCONF_DH6OPT_DOMAIN_LIST=@dhcpopt_domain_list@ \
+-	-DCONF_DH6OPT_IA_PD=@dhcpopt_pdel@ \
+-	-DCONF_DH6OPT_IAPREFIX=@dhcpopt_pinfo@ 
++include Makefile.inc
++
++TARGET=	dhcp6c dhcp6s dhcp6r
+ 
+ COMMONGENSRCS=lease_token.c
+ CLIENTGENSRCS=client6_parse.c client6_token.c dad_token.c ra_token.c \
+@@ -41,67 +16,85 @@
  SERVOBJS=	dhcp6s.o common.o timer.o hash.o lease.o \
  		server6_conf.o server6_addr.o \
  	$(SERVERGENSRCS:%.c=%.o) $(COMMONGENSRCS:%.c=%.o)
@@ -54,26 +62,53 @@
 +
  dad_token.c: dad_token.l
  	$(LEX) -Pifyy dad_token.l
- 	mv lex.ifyy.c $@
-@@ -89,19 +102,51 @@
+-	mv lex.ifyy.c $@
++	cp lex.ifyy.c $@
+ 
+ ra_token.c: ra_token.l
+ 	$(LEX) -Prayy ra_token.l
+-	mv lex.rayy.c $@
++	cp lex.rayy.c $@
+ 
+ resolv_token.c: resolv_token.l
+ 	$(LEX) -Prvyy resolv_token.l
+-	mv lex.rvyy.c $@
++	cp lex.rvyy.c $@
+ 
+ radvd_token.c: radvd_token.l
+ 	$(LEX) -Prdyy radvd_token.l
+-	mv lex.rdyy.c $@
++	cp lex.rdyy.c $@
+ 
+ client6_parse.c cp.tab.h: client6_parse.y
+ 	$(YACC) -d -p cpyy client6_parse.y
+-	mv y.tab.h cp.tab.h
+-	mv y.tab.c client6_parse.c
++	cp y.tab.h cp.tab.h
++	cp y.tab.c client6_parse.c
+ 
+ client6_token.c: client6_token.l
+ 	$(LEX) -Pcpyy client6_token.l
+-	mv lex.cpyy.c $@	
++	cp lex.cpyy.c $@	
+ 
+ lease_token.c: lease_token.l
+ 	$(LEX) -Plyy lease_token.l
+-	mv lex.lyy.c $@
++	cp lex.lyy.c $@
+ 
+ server6_parse.c sf.tab.h: server6_parse.y
+ 	$(YACC) -d -p sfyy server6_parse.y
+-	mv y.tab.h sf.tab.h
+-	mv y.tab.c server6_parse.c 
++	cp y.tab.h sf.tab.h
++	cp y.tab.c server6_parse.c 
+ 
+ server6_token.c: server6_token.l sf.tab.h
  	$(LEX) -Psfyy server6_token.l
- 	mv lex.sfyy.c $@
+-	mv lex.sfyy.c $@
++	cp lex.sfyy.c $@
  
-+libdhcp6client/.: $(CLIENTOBJS:%.o=%.c)
-+	mkdir -p libdhcp6client/
-+	cp -fa $(CLIENTOBJS:%.o=%.c) $(CLIENTHDRS) $(COMMONGENSRCS:%.c=%.l) $(subst client6_parse.l,client6_parse.y,$(CLIENTGENSRCS:%.c=%.l)) strlcat.c strlcpy.c libdhcp6client/
-+	cp -fa Makefile libdhcp6client/
-+
-+libdhcp6client/%.o: $(@:%.o:%.c) $(patsubst %,libdhcp6client/%,$(CLIENTHDRS))
-+	$(MAKE) -C libdhcp6client $*.o CFLAGS="$(subst -fPIE,-fPIC,$(subst -O2,-Os,$(CFLAGS))) -DLIBDHCP"
-+
-+libdhcp6client.a: libdhcp6client/. $(patsubst %,libdhcp6client/%,$(CLIENTOBJS) strlcpy.o strlcat.o dhc6_alloc.o)
-+	$(AR) cruv $@ $(patsubst %,libdhcp6client/%,$(CLIENTOBJS) strlcpy.o strlcat.o dhc6_alloc.o)
-+
-+libdhcp6client.so.1: libdhcp6client/. $(patsubst %,libdhcp6client/%,$(CLIENTOBJS) strlcpy.o strlcat.o dhc6_alloc.o)
-+	$(CC) -shared -o $@ -Wl,-soname,$@ $(patsubst %,libdhcp6client/%,$(CLIENTOBJS) strlcpy.o strlcat.o dhc6_alloc.o) -lresolv -lcrypto
-+	/bin/ln -sf $@ $(@:%=%.1)
-+
  install::
  	$(INSTALL) -d $(DESTDIR)$(sbindir)
 -	$(INSTALL_PROGRAM) -s -o bin -g bin $(TARGET) $(DESTDIR)$(sbindir)
@@ -97,13 +132,6 @@
 +	$(INSTALL) -d  $(DESTDIR)/etc/sysconfig
 +	$(INSTALL_DATA) -o $(INSTALL_USER) -g $(INSTALL_GROUP) dhcp6s.sysconfig  $(DESTDIR)/etc/sysconfig/dhcp6s
 +	$(INSTALL_DATA) -o $(INSTALL_USER) -g $(INSTALL_GROUP) dhcp6r.sysconfig  $(DESTDIR)/etc/sysconfig/dhcp6r
-+	$(INSTALL) -m 754 -D  -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp6client.so.1 $(DESTDIR)/$(LIBDIR)/libdhcp6client.so.1
-+	/bin/ln -sf libdhcp6client.so.1 $(DESTDIR)/$(LIBDIR)/libdhcp6client.so
-+	$(INSTALL) -m 644 -D  -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp6client.a  $(DESTDIR)/$(LIBDIR)/libdhcp6client.a
-+	mkdir -p $(DESTDIR)/$(INCLUDEDIR)/dhcp6client/dhcpv6
-+	$(INSTALL) -m 644 -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp6client/*.h $(DESTDIR)/$(INCLUDEDIR)/dhcp6client/dhcpv6
-+	mv $(DESTDIR)/$(INCLUDEDIR)/dhcp6client/dhcpv6/{libdhcp_control.h,dhcp6client.h} $(DESTDIR)/$(INCLUDEDIR)/dhcp6client
-+	$(INSTALL) -m 644 -D -o $(INSTALL_USER) -g $(INSTALL_GROUP) libdhcp6client.pc $(DESTDIR)/$(PKGCFGDIR)/libdhcp6client.pc
  
  rh_install:: install
  	$(INSTALL) -d $(initdir)
@@ -115,7 +143,7 @@
  	$(CHKCONFIG) --add dhcp6c
  
 --- dhcp-0.10/ReadMe.rh	2003-05-28 17:18:22.000000000 -0400
-+++ dhcp-0.10/ReadMe	2006-11-27 14:55:32.000000000 -0500
++++ dhcp-0.10/ReadMe	2007-02-08 22:32:42.000000000 -0500
 @@ -18,7 +18,8 @@
  
  	This implementation supports IPv6 address assignment to the clients. 
@@ -153,7 +181,7 @@
  D. INSTALLATTION:
  
 --- dhcp-0.10/client6_addr.c.rh	2003-07-01 22:21:25.000000000 -0400
-+++ dhcp-0.10/client6_addr.c	2006-11-27 14:55:32.000000000 -0500
++++ dhcp-0.10/client6_addr.c	2007-02-08 22:32:42.000000000 -0500
 @@ -47,8 +47,9 @@
  #include <stdlib.h>
  #include <unistd.h>
@@ -165,6 +193,15 @@
  #include "dhcp6.h"
  #include "config.h"
  #include "common.h"
+@@ -70,7 +71,7 @@
+ extern struct dhcp6_timer *client6_timo __P((void *));
+ extern void client6_send __P((struct dhcp6_event *));
+ extern void free_servers __P((struct dhcp6_if *));
+-extern ssize_t gethwid __P((char *, int, const char *, u_int16_t *));
++extern ssize_t gethwid __P((unsigned char *, int, const char *, u_int16_t *));
+ 
+ extern int nlsock;
+ extern FILE *client6_lease_file;
 @@ -109,7 +110,11 @@
[...5016 lines suppressed...]
  	u_int8_t allow_flags;
@@ -5992,8 +2635,8 @@
  
  struct scopelist {
 --- dhcp-0.10/server6_parse.y.rh	2004-02-04 19:10:31.000000000 -0500
-+++ dhcp-0.10/server6_parse.y	2006-11-27 14:55:32.000000000 -0500
-@@ -33,6 +33,7 @@
++++ dhcp-0.10/server6_parse.y	2007-02-08 22:32:42.000000000 -0500
+@@ -33,14 +33,17 @@
  
  %{
  
@@ -6001,10 +2644,11 @@
  #include <stdio.h>
  #include <string.h>
  #include <syslog.h>
-@@ -40,13 +41,16 @@
+ #include <errno.h>
++#include <netinet/in.h>
  #include <sys/socket.h>
  #include <net/if.h>
- #include <linux/ipv6.h>
+-#include <linux/ipv6.h>
 -#include "queue.h"
 +#include <malloc.h>
 +#include <sys/queue.h>
@@ -6012,14 +2656,7 @@
  #include "dhcp6.h"
  #include "config.h"
  #include "common.h"
- #include "server6_conf.h"
- #include "hash.h"
- #include "lease.h"
-+#include "htonl.h"
- 
- extern int num_lines;
- extern char *sfyytext;
-@@ -104,6 +108,7 @@
+@@ -104,6 +107,7 @@
  %token	<str>	IAID IAIDINFO
  %token  <str>	INFO_ONLY
  %token	<str>	TO
@@ -6027,7 +2664,7 @@
  
  %token	<str>	BAD_TOKEN
  %type	<str>	name
-@@ -267,7 +272,6 @@
+@@ -267,7 +271,6 @@
  linkbody	
  	:  
  	| linkbody linkparams
@@ -6035,7 +2672,7 @@
  	;
  
  linkparams	
-@@ -277,6 +281,7 @@
+@@ -277,6 +280,7 @@
  	| hostdef
  	| groupdef
  	| confdecl
@@ -6043,7 +2680,7 @@
  	;
  
  relaylist	
-@@ -900,6 +905,15 @@
+@@ -900,6 +904,15 @@
  			dprintf(LOG_ERR, "%s" "bad server preference number", FNAME);
  		currentscope->scope->server_pref = $2;
  	}
@@ -6060,8 +2697,8 @@
  
  number_or_infinity
 --- dhcp-0.10/server6_token.l.rh	2003-07-16 15:09:53.000000000 -0400
-+++ dhcp-0.10/server6_token.l	2006-11-27 14:55:32.000000000 -0500
-@@ -42,8 +42,8 @@
++++ dhcp-0.10/server6_token.l	2007-02-08 22:32:42.000000000 -0500
+@@ -42,14 +42,19 @@
  #include <sys/socket.h>
  #include <arpa/inet.h>
  #include <net/if.h>
@@ -6071,7 +2708,18 @@
  #include "dhcp6.h"
  #include "config.h"
  #include "common.h"
-@@ -118,6 +118,7 @@
+ #include <server6_conf.h>
+ #include "sf.tab.h"
+ 
++#define YY_NO_UNPUT 1
++#define ECHO if (fwrite(yytext, yyleng, 1, yyout) != 1) { \
++                 YY_FATAL_ERROR("error performing ECHO on yytext"); \
++             }
++
+ int num_lines = 1;
+ int sfyyerrorcount = 0;
+ int sfparse(char *filename);
+@@ -118,6 +123,7 @@
  valid-life-time	 { return VALIDLIFETIME; }
  prefer-life-time { return PREFERLIFETIME; }
  server-preference { return PREFERENCE; }
@@ -6080,7 +2728,7 @@
  to	{ return TO; }
  infinity	{ return INFINITY; }
 --- dhcp-0.10/timer.c.rh	2003-03-11 18:52:23.000000000 -0500
-+++ dhcp-0.10/timer.c	2006-11-27 14:55:32.000000000 -0500
++++ dhcp-0.10/timer.c	2007-02-08 22:32:42.000000000 -0500
 @@ -42,8 +42,8 @@
  #if defined(__NetBSD__) || defined(__OpenBSD__)
  #include <search.h>
@@ -6092,7 +2740,7 @@
  #include "config.h"
  #include "common.h"
 --- dhcp-0.10/lease.c.rh	2004-03-03 15:11:16.000000000 -0500
-+++ dhcp-0.10/lease.c	2006-11-27 14:55:32.000000000 -0500
++++ dhcp-0.10/lease.c	2007-02-08 22:32:42.000000000 -0500
 @@ -47,8 +47,8 @@
  #include <net/if.h>
  #include <linux/sockios.h>
@@ -6103,8 +2751,19 @@
  #include "dhcp6.h"
  #include "hash.h"
  #include "config.h"
+@@ -354,8 +354,8 @@
+ get_linklocal(const char *ifname,
+ 	      struct in6_addr *linklocal)
+ {	
+-	struct ifaddrs *ifa, *ifap;
+-	struct sockaddr *sd;
++	struct ifaddrs *ifa = 0, *ifap = 0;
++	struct sockaddr *sd = 0;
+ 	if (getifaddrs(&ifap) < 0) {
+ 		dprintf(LOG_ERR, "getifaddrs error");
+ 		return -1;
 --- dhcp-0.10/lease_token.l.rh	2004-02-04 18:29:24.000000000 -0500
-+++ dhcp-0.10/lease_token.l	2006-11-27 14:55:32.000000000 -0500
++++ dhcp-0.10/lease_token.l	2007-02-08 22:32:42.000000000 -0500
 @@ -44,10 +44,10 @@
  #include <errno.h>
  #include <sys/socket.h>
@@ -6118,3 +2777,60 @@
  #include "dhcp6.h"
  #include "config.h"
  #include "common.h"
+@@ -74,6 +74,11 @@
+ 	 (a & LEASE_IAID_FLAG) && (a & LEASE_RNTIME_FLAG) &&	\
+ 	 (a & LEASE_RBTIME_FLAG) && (a & LEASE_DUID_FLAG))
+ 
++#define YY_NO_UNPUT 1
++#define ECHO if (fwrite(yytext, yyleng, 1, yyout) != 1) { \
++                 YY_FATAL_ERROR("error performing ECHO on yytext"); \
++             }
++
+ #define YYABORT(msg) dprintf(LOG_ERR, msg " %s lineno %d.", \
+ 		yytext, num_lines)
+ 
+@@ -241,6 +246,9 @@
+ 	
+ 	fseek(file, 0, 0);
+ 	yyin = file;
++	yy_init = 1;
++	yy_start = 0;
++	yy_current_buffer = 0;
+ 	yylex(); 
+ 	return;
+ }
+--- /dev/null	2007-02-06 10:40:24.955607220 -0500
++++ dhcp-0.10/Makefile.inc.in	2007-02-08 22:32:42.000000000 -0500
+@@ -0,0 +1,32 @@
++srcdir=	@srcdir@
++CFLAGS=	-Werror -fno-strict-aliasing -fvisibility=hidden @CFLAGS@ @DEFS@
++LDFLAGS=@LDFLAGS@
++LIBOBJS=@LIBOBJS@
++LIBS=	@LIBS@
++CC=	@CC@
++YACC=	@YACC@
++LEX=	@LEX@
++DESTDIR ?=
++
++INSTALL=@INSTALL@
++INSTALL_PROGRAM=@INSTALL_PROGRAM@
++INSTALL_DATA=@INSTALL_DATA@
++INSTALL_USER ?= root
++INSTALL_GROUP ?= root
++prefix=	@prefix@
++exec_prefix=	@exec_prefix@
++bindir=	@bindir@
++sbindir=@sbindir@
++mandir=	@mandir@
++initdir=/etc/rc.d/init.d
++etc=/etc
++sysconfigdir=/etc/sysconfig
++CHKCONFIG=/sbin/chkconfig
++LIBDIR ?= /usr/lib
++INCLUDEDIR ?= /usr/include
++PKGCFGDIR ?= /usr/lib/pkgconfig
++
++CFLAGS+= -Wall -DCONF_DH6OPT_DNS_RESOLVERS=@dhcpopt_dns_resolvers@ \
++	-DCONF_DH6OPT_DOMAIN_LIST=@dhcpopt_domain_list@ \
++	-DCONF_DH6OPT_IA_PD=@dhcpopt_pdel@ \
++	-DCONF_DH6OPT_IAPREFIX=@dhcpopt_pinfo@ 


Index: dhcpv6.spec
===================================================================
RCS file: /cvs/dist/rpms/dhcpv6/devel/dhcpv6.spec,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- dhcpv6.spec	6 Feb 2007 20:14:25 -0000	1.49
+++ dhcpv6.spec	9 Feb 2007 03:53:55 -0000	1.50
@@ -1,7 +1,7 @@
 Summary: DHCPv6 - DHCP server and client for IPv6
 Name:    dhcpv6
 Version: 0.10
-Release: 37%{?dist}
+Release: 38%{?dist}
 License: GPL 
 Group:   System Environment/Daemons
 URL:     http://dhcpv6.sourceforge.net/
@@ -10,11 +10,13 @@
 Source2: rfc3315.txt
 
 Patch0:  dhcpv6-0.10-redhat.patch
-Patch1:  dhcpv6-0.10-lsb.patch
+Patch1:  dhcpv6-0.10-relay.patch
+Patch2:  dhcpv6-0.10-man.patch
+
 Patch99: dhcpv6-0.10-libdhcp6client.patch
 
 Prereq: /sbin/chkconfig, /sbin/service
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: flex, bison, openssl-devel, autoconf, automake, libtool
 
 %description
@@ -49,7 +51,7 @@
 library for invocation by other programs.
 
 %package -n libdhcp6client-devel
-Summary: Header files for development with the DHCPv6 client library.
+Summary: Header files for development with the DHCPv6 client library
 Group:   Development/Libraries
 
 %description -n libdhcp6client-devel
@@ -58,31 +60,34 @@
 %prep
 %setup -q -n dhcp-%{version}
 %patch0 -p1 -b .rh
-%patch1 -p1 -b .lsb
+%patch1 -p1 -b .relay
+%patch2 -p1 -b .man
+
+%patch99 -p1 -b .libdhcp6client
+
+cp -fp %{SOURCE2} docs
 
 # more modern headers are available in /usr/include
 rm -f ifaddrs.h queue.h
-
 autoconf
 
-# configure here because we need to patch libdhcp6client subdir
-export LDFLAGS='-pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack'
-export CFLAGS="$RPM_OPT_FLAGS -fPIE -g -Wall"
-%configure --prefix=/ --mandir=%{_mandir}
-make libdhcp6client/.
-%patch99 -p1 -b .libdhcp6client
-
 %build
-make
-cp -fp %{SOURCE2} docs
+%configure --prefix=/ --mandir=%{_mandir}
+%{__make} %{?_smp_mflags}
+%{__make} -C libdhcp6client %{?_smp_mflags}
 
 %install
 rm -rf $RPM_BUILD_ROOT
 sed 's/@DHCPV6_VERSION@/'%{version}'/' < %{SOURCE1} > libdhcp6client.pc
-make install DESTDIR=$RPM_BUILD_ROOT \
-             LIBDIR=%{_libdir} \
-             PKGCFGDIR=%{_libdir}/pkgconfig \
-             INSTALL_USER=`id -nu` INSTALL_GROUP=`id -gn`
+%{__make} install DESTDIR=$RPM_BUILD_ROOT \
+                  LIBDIR=%{_libdir} \
+                  PKGCFGDIR=%{_libdir}/pkgconfig \
+                  INSTALL_USER=`id -nu` INSTALL_GROUP=`id -gn`
+%{__make} -C libdhcp6client install DESTDIR=$RPM_BUILD_ROOT \
+                                    LIBDIR=%{_libdir} \
+                                    PKGCFGDIR=%{_libdir}/pkgconfig \
+                                    INSTALL_USER=`id -nu` INSTALL_GROUP=`id -gn`
+
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/dhcpv6
 
 %post
@@ -132,7 +137,7 @@
 
 %files -n libdhcp6client
 %defattr(0755,root,root,0755)
-%{_libdir}/libdhcp6client.so.*
+%{_libdir}/libdhcp6client-%{version}.so.*
 
 %files -n libdhcp6client-devel
 %defattr(0644,root,root,0755)
@@ -143,6 +148,22 @@
 %{_libdir}/libdhcp6client.a
 
 %changelog
+* Thu Feb 08 2007 David Cantrell <dcantrell at redhat.com> - 0.10-38
+- Fix up libdhcp6client patch so it doesn't copy the source then patch it
+- Revert LOG_INFO changes back to LOG_DEBUG
+- Remove the NetBSD strlcat() and strlcpy() calls and use glibc functions
+- Move non-libdhcp6client patches to the main bugfix patch
+- Remove the extra noise sent to the logging function
+- Correct warnings so it compiles with -Werror
+- Remove local htonl.h header, just use the /usr/include definitions
+- Include <netinet/in.h> and remove inclusion of <linux/ipv6.h> and "htonl.h"
+- Move dhcp6r source to its own patch file
+- Put man page patches in to a single patch file
+- Remove periods from the end of package summary lines (package review)
+- Use preferred BuildRoot (package review)
+- Only export the symbols we want in libdhcp6client (#216187)
+- Keep flex-generated files for the debuginfo package
+
 * Tue Feb 06 2007 David Cantrell <dcantrell at redhat.com> - 0.10-37
 - Add missing ';;' on line 72 of dhcp6r init script
 


--- dhcpv6-0.10-lsb.patch DELETED ---




More information about the fedora-cvs-commits mailing list