File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / dhcp / tests / DHCPv6 / README
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Oct 9 09:06:55 2012 UTC (12 years ago) by misho
Branches: dhcp, MAIN
CVS tags: v4_1_R7p0, v4_1_R7, v4_1_R4, HEAD
dhcp 4.1 r7

    1: In order to test the DHCPv6 server, we have a configuration file with
    2: known values, and some Perl scripts designed to send and receive
    3: DHCPv6 packets to check various code paths.
    4: 
    5: It is not complete test converage by any means, but it should be
    6: fairly easy to add additional tests as needed.
    7: 
    8: The scripts themselves are not very well written. There is a lot of
    9: copied code, poor error handling, and so on. These should be rewritten
   10: at some point.
   11: 
   12: To use, the DHCPv6 server must be running in test mode to send back to
   13: the originating port. (The scripts can be changed to bind to the
   14: appropriate client port, but they don't now, and have to run as root
   15: to do this). In server/dhcpv6.c, look for this comment:
   16: 
   17: /* For testing, we reply to the sending port, so we don't need a root */
   18: /* client */
   19: 		to_addr.sin6_port = remote_port;
   20: /*		to_addr.sin6_port = packet->client_port;*/
   21: 
   22: And change the code to use the client_port value.
   23: 
   24: You will need to modify one of the test configuration files to use one 
   25: of the physical subnets that your machine uses, in the subnet6 
   26: statement.
   27: 
   28: Then run the server as root, in debug mode:
   29: 
   30: # touch /tmp/test.leases
   31: # dhcpd -cf test-a.conf -lf /tmp/test.leases -d
   32: 
   33: You can invoke the scripts then:
   34: 
   35: $ perl 000-badmsgtype.pl
   36: 
   37: The expected results vary per script, depending on the behavior that
   38: is being tested.
   39: 
   40: 
   41: Notes about scripts:
   42: 
   43: In order to manipulate IPv6 addresses, we need the Socket6 library,
   44: available from CPAN:
   45: 
   46: http://search.cpan.org/~umemoto/Socket6-0.19/Socket6.pm
   47: 
   48: The Perl that Sun issues for Solaris 10 is compiled with the Sun
   49: compiler. If you have the Sun compiler, then this will work fine.
   50: Otherwise you may need to install Perl from source.
   51: 
   52: We need to get the hardware address in order to build DUID properly.
   53: The IO::Interface module reports hardware address, but not on Solaris
   54: 10 it seems. Rather than do this the "right way", we do it the "Perl
   55: way", and hack it. "ifconfig" does return the Ethernet address, but
   56: only to the root user. However, we can look for files of the name
   57: /etc/hostname.*, get the IP address from "ifconfig", and then check
   58: for those addresses in the ARP table.
   59: 
   60: Client DUID is supposed to be an opaque value to the server, but we go
   61: ahead and make a "real" type 1 or type 3 DUID.
   62: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>