CHANGES
=======

* Unicast reactive L3 flows to the correct tunnel port
* Remove Local flow installation From the L2 Agent to L3 Controller
* Reinstall flows if they are deleted by the l2 agent
* Install ryu by setup_package instead of setup_develop
* Revert set_connection_mode OVS API
* Align with neutron stable/kilo
* Revert "Change fail_mode setting to API Call"
* Revert " Neutron main line compatibility patch for liberty."
* Kilo Branch:: We removed too much in the following patch https://github.com/openstack/dragonflow/commit/3169ff32c7cc8388382e25947d63bfdb2e0006c1 Added self conf attribute
* Align the move from stackforge to openstack
* Update .gitreview file for project rename
* No need to modify/patch the RYU project for the register_cli_opts it was all ready fixed in the RYU project itself
* Add define for the translate table number
* Remove unused fields from OpenFlowController
* Do not remove subnet data on router delete, only remove when there are no ports connected to that l2 subnet. Subnet class is needed even when it is not connected to any router in order to install local subnet L3 traffic offloading to Normal rule
* Connect the delete router event to the SDN controller. Make sure we delete the router instance and remove all its interface ARP responders
* The Tenant subnet dic and the Routes were pointing to the same Subnet Object, that caused problems and sync issues Modify the subnets dic in the router class to be a list of the subnet ids connected to this router. Accessing the object is from the Tenant main subnets dic
* subnets data was added to the port object sent on RPC for add_arp and del_arp BUT were not added to the get_ports_by_subnet. So on startup when we actively requested the port in the l3 controller agent we got the port data but with missing inforamtion. Added the same subnets data to the ports object when get is called
* Remove unused method _iter_entities_by_segmentation_id
* Do not loop on the router class do the loop on the tenant subnet class c for fast access. Separate patch will handle this duplicate data structure, use only net ids in the router object
* Do not raise an exception, Only LOG. This scenario is possible that we will get the port status from the OpenFlow switch before we receive the segmentation_id, when we get the port/router we will update the snat binding will be updated when we get the segmentation info
* Neutron main line compatibility patch for liberty. Neutron introduce a new parameter to the l2 OVS class a dict for bridge classes Add this param to the dragonflow l2 class and created the br_int move object with the additional required methods
* ipv6 compatibility issue, make sure we do not handle in the controller any subnet that is not ipv4, ipv6 is offloaded to the Normal path Add a casting call function for add_flow_normal_local_subnet and add a inner check for ipv4, this was needed because we access the code before calling the inner func
* Exception was raised for ipv6 subnet for not having segmentation id, We currently should not handle IPV6 First check if it is an ipv4 subnet if not do no handle
* Fix readme VLAN bug was fixed remove comment
* Change fail_mode setting to API Call
* Fix README 1) Fix documentation link, move doc title up 2) Added link to the project blueprints
* Supress port sync up exception
* Set int-br fail mode to "standalone"
* VLAN support fix
* Fix unit test test_new_subnet_installed_order_ports_router_dp failure
* Sync ports on L2 Agent startup
* Fixes to README
* Remove local subnet flow when no VMs use it
* Add type information for delete_port()
* Optimized get_tenant_by_id()
* nits
* Spererate add and remove functions
* More fixes for UT
* Fix in unit test
* Add Neutron tox rules
* Use OVS_LIB set_connection_mode method
* Remove set controller RPC message
* Send packet out to the destination port and to destination DP (data path element ) The packt out was sent to the source port and the first packet was always lost Note:: Verified on one machine setup need to verify on multi host
* Fixes to devstack plugin
* Added Documentation section and new links Fix install guide MInor fix for to devstack conf files
* Add normal flow even when no router
* Remove DVR from Dragonflow devstack plugin
* controller_plugin: Always notify about VM ports
* Add unit test for openflow application
* controller_plugin: Simplify port finding
* Simplify condition in ControllerL3ServicePlugin.dvr_vmarp_table_update()
* Misc nits
* openflow_app: Delete E/W flows when removing a router interface
* Objectify CIDR
* Support for working with IPV6 1) Offload the Ipv6 tarffic into the NORMAL path 2) Make sure we do not get exception and we know to handle IPV6 subnets
* Move inter subnet handling to the classifier table
* Remove unused function for the l3 openflow application
* Fix DHCP tag of 4095
* Align Dragonflow L2 Agent with OVS L2 Agent
* Remove the fix for dvr to send router arp data with every port update We are currently based on the legacy L3 so we will get port update for the router port
* README.rst: Small cleanups around readability and spelling
* Neutron initiated port removal
* Port Removal handling
* Put cookie when creating flows
* Create subnet object in sync port
* Rename context so it doesn't override locals
* Fix get_ml2_port_bond_data() return code
* Move incorrect error printing
* Add FIP/SNAT using legacy network controller
* Enable Env for DragonFlow Unit Testing
* Fix ARP responder
* Make the L3 VM to VM flows idle/hard timeout configurable
* Fix L3 flows installation
* The ARP Spoofing prevention is set to true by default by Neutron Change not the raise an exception only disable the feature Set to false and print error message
* Taking in account method change name in neutron:
* It seem that this BUG is related to the change of the router type to DVR in order to support the centralize SNAT We will need to check if this is a bug in neutron or by design but the router port is missing the segmentation id data To overcome this is issue we send additional arp notify for each new port for the router port on the same subnet, this will double the number of arp notify RPC messages to the agent messages but this is the only way to fix it from outside of neutron
* Fix the way we check is_router to include the DVR type
* Add segmentation_id to router port
* DataPort.local_port_number should not fail
* Minor nits
* Simplify install_l3_forwarding_flows() signature
* Wrong check for is router in port data class missing the DVR router used the cost
* Fix in DF L2 Agent
* Add DVR settings for devstack plugin
* Fail L2 agent in case arp spoofing prevention is enabled
* Remove unused functions and var
* Remove SNAT flows
* Change the bootstrap flows pipeline to send multicast and broadcast to the Normal Flow directly from the classify table Chnage the ARP match to have higher priorety so it will be sent to the ARP responder table first and not offload th the NORAML path
* Send between subnets and snat flows only for relevant subnets
* Make sure that we send arp add rpc call on the correct port It always sent the router port instead of the new port
* Configure SNAT and Inner subnet flows
* check if we received the port data to avoid exception and error message on all use cases no dest port , no gateway port and if it is not a router Solving the bug itself will be checked in in a separate patch
* Spit the private function that install the arp responder into two Casting -- install the flow on all the openflow forwarding elements Base - that only installs on a specific one
* Simplify packet handling code
* openflow app: Fix minor issues
* openflow app: Remove unused code and fix spelling errors
* The datapath object was not updated when a switch reconnected to the SDN controller When receiving the switch features always update the data path object
* Connect SNAT updates from L3 Agent to SDN Controller
* Enable SNAT for Dragonflow
* Use RYU with openflow 1.3 in place of l3 plugin call
* Access the new 'subnets' interface property
* Minor nits and cleanups
* openflow app: remove duplicate variable in sync_port
* controller agent: Fake agent_mode to pass candidacy check
* openflow app: Implement router deletion
* openflow app: Add __repr__() to Subnet() class
* openflow app: Cleanup TenantTopology handling
* openflow app: Change comments to docstrings
* openflow app: Remove mistakenly added keys to subnets in sync_port
* Remove interface support
* Refactor openflow app
* Minor fixes to improve README visbility
* Try different syntax for image adding
* l3 controller agent: Simplify interface iteration
* Controller Agent: Split up iteration for actual processing
* Fix README images
* Fix image links in README
* Edit the project README page
* Use standardized group constant instead of listing our own
* Register to schedule notifications
* Get segment ID from correct attribute
* Fix logging format
* Router delete and unused method
* Migrate to oslo_log
* Reuse base class implementation as much as possible
* Fix race condition between port data received from OVS and port_sync
* LOG fixes
* Fix match criteria for deleted flow on ARP responder remove Use metadata and not local VLAN
* Add policy setting for compute node
* Log messages fixes 1) Use the same log call 2) correct formatting 3) Move messages that are debug to debug level and remove unnecessary logs, insert critical error log messages
* 1) When detecting flow sync issue, when a flow is reached to the controller with no metadata start the bootstrap flow installation. 2) Create a bootstrap flow installation method Closes-Bug: #1429600
* Set PYTHONPATH in execution command
* Fix formatting error in OF_packet_in_handler()
* Fixed formatting error in log
* Copyright message Fix
* Installation Documentations
* Clean up the l3 openflow application 1) Remove unused old code 2) Remove unused dependencies of the old implementation using the metadata table 3) remove unnecessary wait for the metadata table
* Add ARP RESPONDER for new router interface
* Changes to devstack plugin: 1) SDN Controller IP is defaulted to the HOST_IP parameter 2) Add validations for OVS version 2.3.1+
* Fixes for devstack external plugin
* Add devstack external plugin files
* Add L2 Agent to Dragonflow
* Fix VM deletion scenario
* Handle case of router with no interfaces
* rename
* add l3_sdn_agent
* Changed the read me instructions
* Set Up the neutron l3 sdn addon using neutron as library L3 service plugin L3 Controller Agent + OpenFlow controller
* Added documentation and install guides for the PoC
* Initial Cookiecutter Commit
* Added .gitreview
