frenetic-lang / frenetic

The Frenetic Programming Language and Runtime System
http://www.frenetic-lang.org/
Other
223 stars 51 forks source link

Issue 463 field dependencies #478

Closed craig-riecke closed 8 years ago

craig-riecke commented 8 years ago

Some fields in OpenFlow are dependent on others being present in the match. For example, EthType must be 0x800 (IP) or 0x806 (ARP) when matching the IPv4 source address. NetKAT compilation currently either throws out all rules where dependencies are not satisfied (adherance=Strict) or leaves them in, only to be installed as Drop All rules by the switch (adherance=Sloppy, the default).

This commit removes the adharance flag altogether and simply fills in any dependencies that are missing. Sometime this means there is more than one Openflow table rule output per FDD node. Examples are provided in examples/issue_463{a,b,c}.kat.

craig-riecke commented 8 years ago

I don't think the code in this patch is very pretty, so any comments are welcome.

Also, I'm cool with putting the adherance flag back in if anyone sees a need for it.

craig-riecke commented 8 years ago

Jane Street has yet again released changes (this time to fieldslib and other syntax extensions) that break the build. Fixes are outlined in https://github.com/ocaml/opam-repository/blob/master/CHANGES.md. I'm applying them to this pull request.

craig-riecke commented 8 years ago

Pinning core to 112.35 doesn't seem to work. Other library dependencies override it.

Putting this on hold until Issue #479 is resolved.