function processPacket($packetData) { $packet = new dhcpPacket(); $packet->parse($packetData); $processor = new dhcpRequestProcessor($this, $this->packetProcessor, $this->storage, $packet); if ($responsePacket = $processor->getResponse()) { $responseData = $responsePacket->build(); $this->verbosity && (print "Sending response" . "\n"); $ciaddr = $packet->getClientAddress(); if ($ciaddr == '0.0.0.0') { $this->verbosity && (print "Switching to broadcast address...\n"); $ciaddr = '255.255.255.255'; } $this->verbosity && (print "Attempting to send response packet to " . $ciaddr . "\n"); $numBytesSent = socket_sendto($this->socket, $responseData, strlen($responseData), 0, $ciaddr, 68); if ($numBytesSent === FALSE) { $this->verbosity && (print "send failed for specific address, broadcast.\n"); $numBytesSent = socket_sendto($this->socket, $responseData, strlen($responseData), 0, "255.255.255.255", 68); $numBytesSent === FALSE && $this->verbosity && printf('socket send error: %s\\n', socket_strerror(socket_last_error($this->socket))); } $numBytesSent && $this->verbosity && (print "Response packet sent.\n"); } else { $this->verbosity && (print "Packet ignored\n"); } }
function processPacket($packetData) { $packet = new dhcpPacket(); $packet->parse($packetData); print_r($packet); // $processor = new dhcpRequestProcessor($this->storage, $packet); // // $responsePacket = $processor->getResponse(); // $responseData = $responsePacket->build(); // print("sending response" . "\n"); // $ciaddr = $packet->getClientAddress(); // if ($ciaddr == '0.0.0.0') { // print("Switching to broadcast address...\n"); // $ciaddr = '255.255.255.255'; // } // print("attempting to send packet to " . $ciaddr . "\n"); // $error = socket_sendto($this->socket, $responseData, strlen($responseData), 0, $ciaddr, 68); // if ($error === FALSE) { // print("send failed for specific address, broadcast.\n"); // $error = socket_sendto($this->socket, $responseData, strlen($responseData), 0, "255.255.255.255", 68); // } // print('socket send error: ' . $error . "\n"); }