Refactor Into Plugin Architecture#512
Conversation
It compiles!
Conflicts: async/Frenetic_NetKAT_Controller.ml async/Frenetic_OpenFlow0x01_Controller.mli lib/Frenetic_NetKAT.ml lib/Frenetic_NetKAT.mli lib/Frenetic_NetKAT_Json.ml lib/Frenetic_NetKAT_Json.mli lib/Frenetic_NetKAT_SDN_Json.ml lib/Frenetic_NetKAT_SDN_Json.mli lib/Frenetic_OpenFlow.ml lib/Frenetic_OpenFlow.mli lib/frenetic.mldylib lib/frenetic.mllib lib/frenetic.odocl setup.ml
|
The failing checks are caused by a breaking change in OcamlGraph that was released 13 days ago on OPAM. I'm tempted to pin the version back because the breakage is in Frenetic_Network, which is not used by Frenetic proper. |
|
@craig-riecke: See #513 |
|
I would rather not wait for all the above questions to be answered before merging, since I'm going to be gone in 4 days and I don't want Issue #507 or Pull Request #517 to be held up. I added Compiler Option setting to plugin signatures, since this is required for the Gates SDN app (http://github.com/coscin/gates) to work. The others are not critical, as far as I know. |
Huh? This is the whole point. There are now no references to OpenFlow0x01 in Frenetic_NetKAT_Controller. |
|
I was looking at the master branch instead of the plugin branch. On Wed, Jul 20, 2016 at 10:35 PM, Nate Foster notifications@github.com
Shrutarshi Basu |
|
Is there a straightforward way to extend this upwards? For an interesting P4 backend you would want to have custom actions (eg., |
In the current version of Frenetic, there's too much coupling between the internals and OpenFlow 1.0. Introduce a plugin module type into
Frenetic_NetKAT_Controller, and make theFrenetic_OpenFlow0x01_Controllerfit the new plugin architecture. This paves the way for an easier transition to OpenFlow 1.3, P4, etc. by making the main internals protocol-independent.All of the code in the Frenetic Programmers Manual has been tested against the refactoring, and works as advertised.
The following are changes in behavior or functionality, which may or may not be solved in this release:
/query/namewherenamewas not specified in the latest installed NetKAT policy used to generate an error. Now Frenetic simply sends back 0's.