Annotation of embedaddon/dhcp/tests/DHCPv6/README, revision 1.1
1.1 ! misho 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>