org.dhcp4java
Class DHCPServlet

java.lang.Object
  extended by org.dhcp4java.DHCPServlet
Direct Known Subclasses:
DHCPSnifferServlet

public class DHCPServlet
extends java.lang.Object

General Interface for a "DHCP Servlet"

Normal use is to override the doXXX() or service() method to provide your own application logic.

For simple servers or test purpose, it as also a good idea to provide a main() method so you can easily launch the server by running the servlet.

Version:
0.99
Author:
Stephan Hadinger

Field Summary
protected  DHCPCoreServer server
          the server instance running this servlet
 
Constructor Summary
DHCPServlet()
           
 
Method Summary
protected  DHCPPacket doDecline(DHCPPacket request)
          Process DECLINE request.
protected  DHCPPacket doDiscover(DHCPPacket request)
          Process DISCOVER request.
protected  DHCPPacket doInform(DHCPPacket request)
          Process INFORM request.
protected  DHCPPacket doRelease(DHCPPacket request)
          Process RELEASE request.
protected  DHCPPacket doRequest(DHCPPacket request)
          Process REQUEST request.
 DHCPCoreServer getServer()
           
 void init(java.util.Properties props)
          Initialize servlet.
protected  void postProcess(java.net.DatagramPacket requestDatagram, java.net.DatagramPacket responseDatagram)
          You have a chance to catch response before it is sent back to client.
protected  DHCPPacket service(DHCPPacket request)
          General method for parsing a DHCP request.
 java.net.DatagramPacket serviceDatagram(java.net.DatagramPacket requestDatagram)
          Low-level method for receiving a UDP Daragram and sending one back.
 void setServer(DHCPCoreServer server)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

server

protected DHCPCoreServer server
the server instance running this servlet

Constructor Detail

DHCPServlet

public DHCPServlet()
Method Detail

init

public void init(java.util.Properties props)
Initialize servlet. Override this method to implement any initialization you may need.

This method is called once at stratup, before any request is passed to the servlet. A properties is passed to the servlet to read whatever parameters it needs.

There is no default behaviour.

Parameters:
props - a Properties containing parameters, as passed to DHCPCoreServer

serviceDatagram

public java.net.DatagramPacket serviceDatagram(java.net.DatagramPacket requestDatagram)
Low-level method for receiving a UDP Daragram and sending one back.

This methode normally does not need to be overriden and passes control to service() for DHCP packets handling. Howerever the service() method is not called if the DHCP request is invalid (i.e. could not be parsed). So overriding this method gives you control on every datagram received, not only valid DHCP packets.

Parameters:
requestDatagram - the datagram received from the client
Returns:
response the datagram to send back, or null if no answer

service

protected DHCPPacket service(DHCPPacket request)
General method for parsing a DHCP request.

Returns the DHCPPacket to send back to the client, or null if we silently ignore the request.

Default behaviour: ignore BOOTP packets, and dispatch to doXXX() methods.

Parameters:
request - DHCP request from the client
Returns:
response DHCP response to send back to client, null if no response

doDiscover

protected DHCPPacket doDiscover(DHCPPacket request)
Process DISCOVER request.

Parameters:
request - DHCP request received from client
Returns:
DHCP response to send back, or null if no response.

doRequest

protected DHCPPacket doRequest(DHCPPacket request)
Process REQUEST request.

Parameters:
request - DHCP request received from client
Returns:
DHCP response to send back, or null if no response.

doInform

protected DHCPPacket doInform(DHCPPacket request)
Process INFORM request.

Parameters:
request - DHCP request received from client
Returns:
DHCP response to send back, or null if no response.

doDecline

protected DHCPPacket doDecline(DHCPPacket request)
Process DECLINE request.

Parameters:
request - DHCP request received from client
Returns:
DHCP response to send back, or null if no response.

doRelease

protected DHCPPacket doRelease(DHCPPacket request)
Process RELEASE request.

Parameters:
request - DHCP request received from client
Returns:
DHCP response to send back, or null if no response.

postProcess

protected void postProcess(java.net.DatagramPacket requestDatagram,
                           java.net.DatagramPacket responseDatagram)
You have a chance to catch response before it is sent back to client.

This allows for example for last minute modification (who knows?) or for specific logging.

Default behaviour is to do nothing.

The only way to block the response from being sent is to raise an exception.

Parameters:
requestDatagram - datagram received from client
responseDatagram - datagram sent back to client

getServer

public DHCPCoreServer getServer()
Returns:
Returns the server.

setServer

public void setServer(DHCPCoreServer server)
Parameters:
server - The server to set.