Return to README CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / dhcp / tests / DHCPv6 |
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: