How to generate DHCP Decline scenario / packets
It looks like it should be possible, but it's going to require a bit of fiddling...
As you suggested in the comments, dhclient doesn't validate DHCP server responses for router addresses so I went to the documents and found out what kind of situation might cause dhclient to send a DHCPDECLINE.
Dhclient docs show that dhclient-script is called when a lease is issued:
...network configuration script invoked by dhclient when it gets a lease. If unspecified, the default CLIENTBINDIR/dhclient-script is used. See dhclient-script(8)for a description of this file.
http://manpages.ubuntu.com/manpages/wily/en/man8/dhclient.8.html
Dhclient-script docs show that before configuring the address offered by the DHCP server, dhclient-script ARPs for it and raises a DHCPDECLINE if the address already exists.
Before actually configuring the address, dhclient-script should somehow ARP for it and exit with a nonzero status if it receives a reply. In this case, the client will send a DHCPDECLINE message to the server and acquire a different address.
http://manpages.ubuntu.com/manpages/wily/en/man8/dhclient-script.8.html
I haven't got a copy of Ubuntu to look at at the mo (check your /etc/dhclient-script), but the source code for the Linux dhclient-script can be found here http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/wily/isc-dhcp/wily/view/head:/client/scripts/linux
I'm thinking (but unfortunately can't test it) that you could backup your existing dhclient-script and edit this section
Must be used on exit. Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
exit_status=$1
if [ -f /etc/dhclient-exit-hooks ]; then
. /etc/dhclient-exit-hooks
fi
# probably should do something with exit status of the local script
exit $exit_status
}
I think changing exit $exit_status
to exit 1
would cause any DHCP lease to be declined...
Give it a try. If it works as I think it should, it will totally break the DHCP client but should generate a DHCPDECLINE each time you run dhclient.