-
Notifications
You must be signed in to change notification settings - Fork 77
OpenFlow Java library API Cookbook
Dmitry-Orekhov edited this page Aug 26, 2013
·
23 revisions
(work in progress)
The controller infrastructure is started the next way:
import org.flowforwarding.of.controller.Controller;
/*................*/
Controller.launch (SessionHandler.class); // This launches a controller listening tcp port 6633
Controller.launch (SessionHandler.class, configuration); // This launches a controller listening given tcp port It's a POJO containing some configuration information as tcp port number etc.
import org.flowforwarding.of.controller.Configuration
/*................*/
Configuration config1 = new Configuration(); // tcp port 6633 by default
Configuration config2 = new Configuration(6633);During the Controller-Sessions some events are generated. An application handles it via OF Events handler.
You have to implement your session handler to interact with Controller. You may manage of incoming messages handling or send messages you want. Session handlers extend the class OFSessionHandler:
import org.flowforwarding.of.controller.SwitchState.SwitchRef;
import org.flowforwarding.of.controller.session.OFSessionHandler;
public class SimpleHandler extends OFSessionHandler {
/*
* User-defined Switch event handlers
*/
@Override
protected void handshaked(SwitchRef swRef) {
super.handshaked(swRef);
/*You have to implement your own logic here*/
}
/*.................................................*/
@Override
protected void connected(SwitchRef swRef) {
super.connected(swRef);
/*You have to implement your own logic here*/
}
/*.................................................*/
@Override
protected void packetIn(SwitchRef swRef) {
super.connected(swRef);
/*You have to implement your own logic here*/
}
}The SwitchRef class refers to a Switch connected to the Controller. It's unique, you have to use it to communicate with a Switch, send commands or get a Switch state:
SwitchRef swRef = SwitchRef.create();
Long SwitchRef.getDpid();
void SwitchRef.setDpid(Long dpid);Some code examples:
import org.flowforwarding.of.ofswitch.SwitchState.SwitchRef;
/*.................................................*/
public class SimpleHandler extends OFSessionHandler {
@Override
protected void handshaked(SwitchRef swRef) {
super.handshaked(swRef);
Long dpid = swRef.getDpid();
/*.........................................*/
}
/*.........................................*/
}