Circuit Pusher

Circuit Pusher utilizes floodlight rest APIs to create a bidirectional circuit, i.e., permanent flow entry, on all switches in route between two devices based on IP addresses with specified priority.

Notes:
1. The circuit pusher currently only creates circuit with two IP end points, though it is straightforward to extend it to create circuits based on CIDR style IP prefixes (e.g., 192.168.0.0/16) as it is supported by Static Flow Pusher.
2. Prior to sending restAPI requests to the circuit pusher, the specified end points must already been known to the controller (i.e., already have sent packets on the network, easy way to assure this is to do a ping (to any target) from the two hosts. Only so will the controller know the attachment point of the devices and thereby compute a route for them.
3. The current supported command syntax format is:

a) circuitpusher.py --controller={IP}:{rest port} --type ip --src {IP} --dst {IP} --add --name {circuit-name}

   adds a new circuit between src and dst devices Currently ip circuit is supported. ARP is automatically supported.

   Currently a simple circuit record storage is provided in a text file circuits.json in the working directory.
   The file is not protected and does not clean itself between controller restarts.  The file is needed for correct operation
   and the user should make sure deleting the file when floodlight controller is restarted.

b) circuitpusher.py --controller={IP}:{rest port} --delete --name {circuit-name}

   deletes a created circuit (as recorded in circuits.json) using the previously given name