use IO::Select; use IO::Socket::INET; use Net::DHCP::Constants; use Net::DHCP::Packet; my $socket = IO::Socket::INET->new(Proto => 'udp', Broadcast => 1, PeerPort => '67', LocalPort => '4111', PeerAddr => '255.255.255.255') or die ($@); # create and send DHCP Packet my $disc = Net::DHCP::Packet->new( xid => int(rand(0xFFFFFFFF)), Flags => 0x8000, # ask for broadcast answer DHO_DHCP_MESSAGE_TYPE() => DHCPDISCOVER()) or die "Can't create DHCP discover packet: $!"; $socket->send($disc->serialize()) or die "Can't send DHCP discover packet: $!"; my @ready = IO::Select->new($socket)->can_read(5); if (@ready) { my $newmsg; $socket->recv($newmsg, 1024) or die "Can't recv DHCP discover packet: $!"; my $packet = Net::DHCP::Packet->new($newmsg); # site-local option 252 "auto-proxy-config" my $wpad = $packet->getOptionValue(252);