As noted in the comments of SDN_OpenFlow0x04.mli, manipulating VLAN tags requires additional bookkeeping in order to properly implement its push/pop semantics. Extend this bookkeeping to the OpenFlow 1.0 implementation and rework the API to these operations as appropriate.
This may be related to frenetic-lang/frenetic#329 and would perhaps be better implemented at the frenetic layer.