function handleClientInform(dhcpServer $server, dhcpStorage $storage, dhcpPacket $packet, dhcpPacket $response) { $attributes = $storage->getAttributesForClient($packet->getMACAddress()); $response->setData('op', dhcpPacket::int2hex(2)); $response->setData('xid', $packet->getData('xid')); $response->setData('chaddr', $packet->getData('chaddr')); $response->setData('message_type', 'ack'); $response->setData('subnet_mask', $attributes['subnet_mask']); $response->setData('router', $attributes['router']); $response->setData('server_id', array(10, 2, 3, 5)); $response->setData('dns_server', $attributes['dns_server']); return true; }
function handleClientInform(dhcpServer $server, dhcpStorage $storage, dhcpPacket $packet, dhcpPacket $response) { $macAddress = substr($packet->getData('chaddr'), 0, 12); // only look at the first 12 characters for the MAC address $bootServer = $this->datasource->TftpServerFromMacAddress($server, $macAddress); $server->verbosity && (print "Mac Address: {$macAddress}\n"); if ($bootServer) { $attributes = $storage->getAttributesForClient($packet->getMACAddress()); $response->setData('op', dhcpPacket::BOOTREPLY); $response->setData('hops', $packet->getData('hops')); $response->setData('xid', $packet->getData('xid')); $response->setData('htype', $packet->getData('htype')); $response->setData('ciaddr', $packet->getData('ciaddr')); $response->setData('chaddr', $packet->getData('chaddr')); $response->setData('message_type', 'ack'); $response->setData('server_id', $server->getSocketHost()); $response->setData('tftp_server', $bootServer); $server->verbosity && (print "Setting response option 66 to {$bootServer}\n"); $server->verbosity > 1 && print_r($response); } return !$this->dryRun && $bootServer !== NULL; }
function send() { $response = new dhcpPacket(); $response->setData('op', dhcpPacket::int2hex(1)); $response->setData('xid', '12345678'); // $response->setData('chaddr', ); $response->setData('htype', '00'); $response->setData('hlen', '00'); $response->setData('ciaddr', dhcpPacket::ip2hex(array(129, 21, 50, 223))); $response->setData('message_type', 'DHCPLEASEQUERY'); $responseData = $response->build(); $error = socket_sendto($this->socket, $responseData, strlen($responseData), 0, '129.21.49.137', 67); print_r($error); if ($error === FALSE) { print "Send failed for address"; } }