It is encoded in ifupdown.
http://packages.debian.org/stable/ifupdown
Download souce and
make inet.c
Check out the dhcp_up () function:
static int dhcp_up(interface_defn *ifd, execfn *exec) { { if (!execute("[[ifconfig %iface% hw %hwaddress%]]", ifd, exec)) return 0; } if ( execable("/sbin/dhclient3") ) { if (!execute("dhclient3 -pf /var/run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface%", ifd, exec)) return 0; } else if ( execable("/sbin/dhclient") ) { if (!execute("dhclient -v -pf /var/run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface%", ifd, exec)) return 0; } else if ( execable("/sbin/pump") && mylinuxver() >= mylinux(2,1,100) ) { if (!execute("pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]]", ifd, exec)) return 0; } else if ( execable("/sbin/udhcpc") && mylinuxver() >= mylinux(2,2,0) ) { if (!execute("udhcpc -n -p /var/run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] [[-c %client%]]", ifd, exec)) return 0; } else if ( execable("/sbin/dhcpcd") ) { if (!execute("dhcpcd [[-h %hostname%]] [[-i %vendor%]] [[-I %client%]] [[-l %leasetime%]] %iface%", ifd, exec)) return 0; } return 1; }
source share